JsignName est un outil Java open source indépendant de la plate-forme pour la signature de code Microsoft Authenticode. Jsign est facile à intégrer avec des systèmes de construction comme Maven, Gradle et Ant, ou peut être utilisé directement à partir de la ligne de commande.
Dans ce tutoriel, nous couvrirons l'utilisation JsignName à partir de la ligne de commande Linux pour Signature de code OV / IV et votre Signature de code EV. Étant donné que Jsign est basé sur Java, vous pouvez également l'utiliser sur les systèmes Windows et MacOS.
Installez Jsign
Tout d'abord, vous devrez télécharger et installer Jsign. le Site Web de Jsign inclut des liens vers les packages Debian et RPM pour une installation facile sur les systèmes Linux les plus courants, ainsi qu'un .jar
fichier.
Signature de code OV / IV
Pour la signature du code OV/IV, vous pouvez utiliser un certificat stocké dans un magasin de clés Java ou un fichier PKCS#12 (PFX). Dans tous les exemples de code ci-dessous, remplacez les valeurs affichées en TOUT-CAPS par vos valeurs réelles.
- Tout d'abord, utilisez le
keytool
commande pour obtenir lealias
valeur à utiliser lors de la signature:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- Vérifiez la sortie de votre
keytool
commande pour une ligne commençant parAlias name:
.Type de fichier de clés: PKCS12 Fournisseur de fichier de clés: SUN Votre fichier de clés contient 1 entrée Nom d'alias: 1 Date de création: 18 janvier 2021 Type d'entrée: PrivateKeyEntry Longueur de la chaîne de certificat: 4 ...
Dans l'exemple ci-dessus,
Alias name
is1
. - Utilisez une commande comme celle-ci pour signer et horodater un fichier:
jsign
commande installée à l'échelle du système:jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
- Avec Jsigner
.jar
fichier:java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- SIGNE
- Si votre commande réussit, vous devriez voir une sortie comme celle-ci:
Ajout de la signature Authenticode à example.exe
Si vous rencontrez cette erreur :
The timestamp certificate does not meet a minimum public key length requirement
, vous devez contacter votre fournisseur de logiciels pour autoriser les horodatages des clés ECDSA.Si votre fournisseur de logiciels n'a aucun moyen d'autoriser l'utilisation du point de terminaison normal, vous pouvez utiliser ce point de terminaison hérité
http://ts.ssl.com/legacy
pour obtenir un horodatage d'une unité d'horodatage RSA.Signature du code EV
Vous pouvez également utiliser Jsign avec un certificat de signature de code EV. L'exemple ici utilise un SSL.com Certificat de signature de code EV installé sur un Clé de sécurité validée FIPS 140-2 Jeton USB.
- Tout d'abord, assurez-vous que OpenSC est installé sur votre système afin qu'il puisse communiquer avec votre token via l'API PKCS # 11. Sur les distributions basées sur Debian comme Ubuntu, vous pouvez installer OpenSC avec
apt
:sudo apt installer opensc
- Ensuite, créez un fichier de configuration. Le nom du fichier est arbitraire, mais pour les exemples de commandes ci-dessous, nous utiliserons
eToken.cfg
. Notez que le chemin versopensc-pkcs11.so
peut varier dans votre installation OpenSC, donc vérifiez avant de créer le fichier de configuration.name = OpenSC-PKCS11 description = SunPKCS11 via la bibliothèque OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Utilisez l'option
keytool
commande pour obtenir lealias
valeur à utiliser lors de la signature:keytool -list -v -keystore AUCUN -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Vérifiez la sortie de votre
keytool
commande pour une ligne commençant parAlias name:
. Si votre jeton contient plusieurs certificats, vérifiez les dates de validité et l'émetteur dans la sortie par rapport à votre certificat. Notez que les certificats de signature de code EV émis sur YubiKey à partir de SSL.com doivent avoir un nom d'alias deCertificate for PIV Authentication
.Nom d'alias: Certificat pour l'authentification PIV Type d'entrée: PrivateKeyEntry Longueur de chaîne de certificat: 1 Certificat [1]: Propriétaire: OID.1.3.6.1.4.1.311.60.2.1.3 = US, OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 = Nevada, OID.20081614243 = Organisation privée, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Issuer: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Numéro de série: 93f57a3bac6570c781580f63172e17 Valable du: ven 12 avril 46:04:2020 HAE 17 jusqu'au: sam 12 avril 46:04:2021 HAE XNUMX
- Utilisez une commande comme celle-ci pour signer et horodater un fichier:
jsign
commande installée à l'échelle du système:jsign --keystore eToken.cfg --alias «Certificat d'authentification PIV» --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
- Avec Jsigner
.jar
fichier:java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certificat pour l'authentification PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE -SIGNER
- Si votre commande réussit, vous devriez voir une sortie comme celle-ci:
Ajout de la signature Authenticode à example.exe
Si vous rencontrez cette erreur :
The timestamp certificate does not meet a minimum public key length requirement
, vous devez contacter votre fournisseur de logiciels pour autoriser les horodatages des clés ECDSA.Si votre fournisseur de logiciels n'a aucun moyen d'autoriser l'utilisation du point de terminaison normal, vous pouvez utiliser ce point de terminaison hérité
http://ts.ssl.com/legacy
pour obtenir un horodatage d'une unité d'horodatage RSA.Vérifier la signature numérique
- Vous pouvez vérifier que votre signature numérique est valide en affichant les détails de la signature dans Windows.
- Vous pouvez également utiliser Outil de signature dans Windows pour vérifier la signature numérique.
signtool.exe verify / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Fichier: C: \ Users \ Aaron Russell \ Desktop \ example.exe Horodatage de l'algorithme d'indexation =========== ============================= 0 sha256 RFC3161 Vérification réussie: C: \ Users \ Aaron Russell \ Desktop \ example.exe