Signature de fichiers Java .jar à l’aide de la commande CLI (Command Line Interface) Jarsigner
Ces instructions concernent la signature de fichiers Java .jar à l’aide d’un certificat de signature de code ou de signature de code EV installé sur un jeton matériel.
Lorsque vous utilisez votre certificat pour signer du code, une signature numérique est appliquée à votre code. Cette signature numérique renforce la confiance des clients dans le code qu’ils sont sur le point de télécharger et contribue à améliorer l’adoption de vos applications Java. De nombreux utilisateurs finaux annulent les téléchargements ou les installations lorsqu’ils reçoivent un avertissement indiquant que le code a été signé par un éditeur inconnu.
| name=eToken library=c:\WINDOWS\system32\eTPKCS11.dll |

| Keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg enter keystore password: [enter password] |
|---|
| Keystore type: PKCS11 Keystore provider: SunPKCS11-eToken Your keystore contains 1 entry 7800FA4C81523ACA, PrivateKeyEntry, Certificate fingerprint (SHA2): XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX |
Remarque: avec les versions plus récentes du pilote SafeNet Authentication Client (SAC), la “Certificate Alias Value” correspondra au nom de l’organisation.
Voici un exemple de sortie d’un jeton de signature de code utilisant les nouveaux pilotes SAC (capture d’écran 1):

Solution:
La “Certificate Alias Value” peut ne pas être une chaîne aléatoire de caractères alphanumériques. Il peut s’agir du nom de l’organisation indiqué dans la sortie de la commande Keytool. Il s’agit de la chaîne située avant la virgule de “PrivateKeyEntry”. Dans notre cas, il s’agit de “Win the Customer, LLC” au lieu d’une valeur aléatoire.
SOLUTIONS ALTERNATIVES:
Il est tout à fait possible qu’aucune valeur ne soit associée à l’alias du certificat: ni nom d’organisation ni autre valeur. Dans ce cas, le client doit essayer d’exécuter la commande Keytool sur un autre réseau/ordinateur, car des paramètres de stratégie de groupe ou d’autres éléments peuvent empêcher Keytool de communiquer avec le jeton et d’accéder à la valeur nécessaire à la signature.
Si un alias de certificat incorrect est spécifié, le message d’erreur suivant s’affiche: java.security.KeyStoreException: PKCS11 not found.
Pour corriger l’erreur ci-dessus, vous devez ajouter slot=0. Pour identifier le slot correct utilisé par le jeton, définissez le numéro de slot sur zéro dans votre fichier eToken.cfg (slot=0).
Essayez d’exécuter à nouveau la commande list, en augmentant le numéro de slot de 1 à chaque nouvelle occurrence de l’erreur.
Vous devriez finalement recevoir l’invite Enter KeyStore Password, qui acceptera votre phrase secrète SafeNet Token.
etoken.cfg:
”name=eToken
library=c:\WINDOWS\system32\eTPKCS11.dll
slot=0”

5. Pour utiliser le certificat de signature de code présent sur le jeton afin de signer file.jar, exécutez la commande suivante depuis l’invite de commandes:
| jarsigner -tsa http://timestamp.digicert.com -verbose -keystore NONE - storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 - providerArg ./eToken.cfg "C:\path\to\file.jar" "7800FA4C81523ACA" |
6. Si la commande s’exécute correctement, une sortie semblable à l’exemple suivant doit s’afficher:
Enter Passphrase for keystore: adding: META-INF/7800FA4C.SF requesting a signature timestamp TSA location: http://timestamp.digicert.com adding: META-INF/7800FA4C.RSA signing: DigiCertTest.class jar signed. |