Firma del codice Microsoft Authenticode in Linux con Jsign

Jsegno è uno strumento Java open source e indipendente dalla piattaforma per la firma del codice Microsoft Authenticode. Jsign è facile da integrare con sistemi di compilazione come Maven, Gradle e Ant, oppure può essere utilizzato direttamente dalla riga di comando.

In questa guida illustreremo l'utilizzo di Jsegno dalla riga di comando di Linux per Firma del codice OV / IV ed Firma del codice EV. Poiché Jsign è basato su Java, puoi utilizzarlo anche su sistemi Windows e MacOS.

Installa Jsign

Per prima cosa, dovrai scaricare e installare Jsign. Il Sito Web di Jsign include collegamenti a pacchetti Debian e RPM per una facile installazione sui sistemi Linux più diffusi, nonché un file .jar file.

Firma del codice OV / IV

Questa sezione si applica solo ai certificati di firma del codice Individual Validation (IV) e Organization Validation (OV) ordinati prima del 1° giugno 2023. Dal 1 giugno 2023, i certificati di firma del codice IV e OV di SSL.com hanno iniziato a essere emessi su token USB Federal Information Processing Standard 140-2 (FIPS 140-2) o tramite il nostro servizio di firma del codice cloud eSigner. 

Per la firma del codice OV/IV è possibile utilizzare un certificato archiviato in un archivio chiavi Java o in un file PKCS#12 (PFX). In tutti gli esempi di codice seguenti, sostituisci i valori mostrati in TUTTO MAIUSCOLO con i tuoi valori effettivi.

  1. Innanzitutto, usa il file keytool comando per ottenere il alias valore da utilizzare durante la firma:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
  2. Controlla l'output del tuo file keytool comando per una riga che inizia con Alias name:.
    Tipo di archivio chiavi: PKCS12 Fornitore dell'archivio chiavi: SUN Il tuo archivio chiavi contiene 1 voce Nome alias: 1 Data di creazione: 18 gennaio 2021 Tipo di voce: PrivateKeyEntry Lunghezza catena certificato: 4 ...

    Nell'esempio sopra, Alias name is 1.

  3. Utilizzare un comando come il seguente per firmare e contrassegnare un file con data e ora:
    • jsign comando installato a livello di sistema:
      jsign --keystore KEYSTORE.p12 --alias NOME-ALIAS --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Con Jsigner .jar file:
      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- CARTELLO
  4. Se il tuo comando ha successo, dovresti vedere un output come il seguente:
    Aggiunta della firma Authenticode a example.exe
Nota: Per impostazione predefinita, SSL.com supporta i timestamp delle chiavi ECDSA.

Se riscontri questo errore: The timestamp certificate does not meet a minimum public key length requirement, è necessario contattare il fornitore del software per consentire i timestamp dalle chiavi ECDSA.

Se non è possibile per il tuo fornitore di software consentire l'utilizzo dell'endpoint normale, puoi utilizzare questo endpoint legacy http://ts.ssl.com/legacy per ottenere un timestamp da un'unità di timestamp RSA.

Firma del codice EV

Puoi anche utilizzare Jsign con un certificato di firma del codice EV. L'esempio qui utilizza un SSL.com Certificato di firma codice EV installato su un Token USB della chiave di sicurezza convalidato FIPS 140-2.

  1. Innanzitutto, assicurati che OpenSC è installato sul tuo sistema in modo che possa comunicare con il tuo token tramite l'API PKCS # 11. Su distribuzioni basate su Debian come Ubuntu puoi installare OpenSC con apt:
    sudo apt install opensc
  2. Successivamente, crea un file di configurazione. Il nome del file è arbitrario, ma per i comandi di esempio che seguono useremo eToken.cfg. Nota che il percorso per opensc-pkcs11.so può variare nell'installazione di OpenSC, quindi controlla prima di creare il file di configurazione.
    nome = OpenSC-PKCS11 descrizione = SunPKCS11 tramite libreria OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Usa il keytool comando per ottenere il alias valore da utilizzare durante la firma:
    keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Controlla l'output del tuo file keytool comando per una riga che inizia con Alias name:. Se il tuo token contiene più certificati, controlla le date di validità e l'emittente nell'output rispetto al tuo certificato. Tieni presente che i certificati di firma del codice EV emessi su YubiKey da SSL.com dovrebbero avere un nome alias di Certificate for PIV Authentication.
    Nome alias: Certificato per autenticazione PIV Tipo di voce: PrivateKeyEntry Lunghezza catena certificato: 1 Certificato [1]: Proprietario: 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 = Organizzazione privata, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Emittente: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Numero di serie: 93f57a3bac6570c781580f63172e17 Valido da: ven 12 aprile 46:04:2020 EDT 17 fino a: sab 12 aprile 46:04:2021 EDT XNUMX
  5. Utilizzare un comando come il seguente per firmare e contrassegnare un file con data e ora:
    • jsign comando installato a livello di sistema:
      jsign --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Con Jsigner .jar file:
      java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE -FIRMARE
  6. Se il tuo comando ha successo, dovresti vedere un output come il seguente:
    Aggiunta della firma Authenticode a example.exe
Nota: Per impostazione predefinita, SSL.com supporta i timestamp delle chiavi ECDSA.

Se riscontri questo errore: The timestamp certificate does not meet a minimum public key length requirement, è necessario contattare il fornitore del software per consentire i timestamp dalle chiavi ECDSA.

Se non è possibile per il tuo fornitore di software consentire l'utilizzo dell'endpoint normale, puoi utilizzare questo endpoint legacy http://ts.ssl.com/legacy per ottenere un timestamp da un'unità di timestamp RSA.

Verifica firma digitale

  1. Puoi verificare che la tua firma digitale sia valida visualizzando i dettagli della firma in Windows.
    La firma digitale va bene
  2. È inoltre possibile utilizzare SignTool in Windows per verificare la firma digitale.
    signtool.exe verifica / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' File: C: \ Users \ Aaron Russell \ Desktop \ example.exe Index Algorithm Timestamp =========== ============================= 0 sha256 RFC3161 Verificato con successo: C: \ Users \ Aaron Russell \ Desktop \ example.exe

Iscriviti alla newsletter di SSL.com

Non perdere nuovi articoli e aggiornamenti da SSL.com

Rimani informato e sicuro

SSL.com è un leader globale nella sicurezza informatica, PKI e certificati digitali. Iscriviti per ricevere le ultime notizie del settore, suggerimenti e annunci di prodotti da SSL.com.

Ci piacerebbe il tuo feedback

Partecipa al nostro sondaggio e facci sapere cosa ne pensi del tuo recente acquisto.