URL: https://linuxfr.org/users/coren/journaux/la-signature-de-code-en-java Title: La signature de code en Java Authors: Coren Date: 2014年01月19日T21:04:47+01:00 License: CC By-SA Tags: java, signature, x509 et applet Score: 30 Cher Journal, Depuis quelques jours, Oracle a décidé d'interdire l'exécution des applets ne précisant pas leur nom d'application (Application-Name) dans le fichier de description MANIFEST.MF. Bien entendu, un des sites qui est sous ta charge utilise des applets, l'éditeur de celle-ci a mis la clé sous la porte mais ça ne devrait pas t'arrêter: normalement, il suffit juste d'ajouter quelques lignes dans ~~un fichier zip~~ une archive jar. Bien sûr, si tu pensais juste pouvoir modifier le fichier MANIFEST et que ça allait marcher, tu pouvais te mettre l'octet dans l'archive. Ton applet est **signé**. Toute modification que tu souhaites y apporter nécessite de pouvoir la re-signer. Passons à la signature. Il va te falloir un certificat valide, et attention, pas n'importe quel certificat, un certificat pour signer du code (Java). Une fois muni de la clé privée et publique de ton certificat, il te faudra aussi récupérer les certificats intermédiaire, root, etc, sinon ce serait trop simple. Voici les étapes pour parvenir à re-publier cet applet avec de nouveaux paramètres 1. Fabrication de la chaine de certification (nécessaire pour l'étape 3, qui n'accepte qu'un seul fichier) `cat codesigning.cer intermediate1.cer gscodesigng2.crt Root-R1.crt> cert-chain.txt` 2. Vérification de la chaine `openssl verify -CAfile cert-chain.txt codesigning.cer` 3. Export au format pkcs12, utilisable par les outils Java (NB: Il est OBLIGATOIRE de mettre un mdp et un alias) `openssl pkcs12 -export -inkey codesigning.key -in cert-chain.txt -out cert-chain.pkcs12 -name tomcat` 4. Transformation du PKCS12 en KeyStore Java `keytool -importkeystore -srckeystore cert-chain.pkcs12 -srcstoretype PKCS12 --destkeystore codesigning.jks -srcalias tomcat` 5. Vérification du keystore `keytool -list -v -keystore codesigning.jks` 6. Création du fichier d'ajout au Manifest de l'applet des paramètres en question: `cat addToManifest.txt`> Permissions: all-permissions Codebase: * Application-Name: Hello World 7. Amélioration du Manifest, qu'il faut faire sur l'ensemble des archives de code `for i in `ls /path/to/*.jar`; do jar ufm "$i" addToManifest.txt; done` 8. Remplacement de la signature existante par la nouvelle `for i in `ls /path/to/*.jar`; do jarsigner -keystore /path/to/codesigning.jks "$i" tomcat; done` NB: Le paramètre Permissions n'a que 2 valeur possibles: aucun droit (sandbox) ou tous les droits (all-permissions)

AltStyle によって変換されたページ (->オリジナル) /