Signature de code Microsoft Authenticode sous Linux avec Jsign

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 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

Cette section s'applique uniquement aux certificats de signature de code de validation individuelle (IV) et de validation d'organisation (OV) qui ont été commandés avant le 1er juin 2023. À partir du 1 juin 2023, les certificats de signature de code IV et OV de SSL.com ont commencé à être délivrés soit sur des jetons USB Federal Information Processing Standard 140-2 (FIPS 140-2), soit via notre service de signature de code cloud eSigner. 

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.

  1. Tout d'abord, utilisez le keytool commande pour obtenir le alias valeur à utiliser lors de la signature:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
  2. Vérifiez la sortie de votre keytool commande pour une ligne commençant par Alias 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 is 1.

  3. 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
  4. Si votre commande réussit, vous devriez voir une sortie comme celle-ci:
    Ajout de la signature Authenticode à example.exe
Remarque: Par défaut, SSL.com prend en charge les horodatages des clés ECDSA.

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.

  1. 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
  2. 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 vers opensc-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
  3. Utilisez l'option keytool commande pour obtenir le alias valeur à utiliser lors de la signature:
    keytool -list -v -keystore AUCUN -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Vérifiez la sortie de votre keytool commande pour une ligne commençant par Alias 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 de Certificate 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
  5. 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
  6. Si votre commande réussit, vous devriez voir une sortie comme celle-ci:
    Ajout de la signature Authenticode à example.exe
Remarque: Par défaut, SSL.com prend en charge les horodatages des clés ECDSA.

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

  1. Vous pouvez vérifier que votre signature numérique est valide en affichant les détails de la signature dans Windows.
    La signature numérique est correcte
  2. 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

Abonnez-vous à la newsletter de SSL.com

Ne manquez pas les nouveaux articles et mises à jour de SSL.com

Restez informé et en sécurité

SSL.com est un leader mondial de la cybersécurité, PKI et les certificats numériques. Inscrivez-vous pour recevoir les dernières nouvelles de l'industrie, des conseils et des annonces de produits de SSL.com.

Nous aimerions recevoir vos commentaires

Répondez à notre enquête et faites-nous part de votre avis sur votre récent achat.