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 o 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
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.
- Innanzitutto, usa il file
keytool
comando per ottenere ilalias
valore da utilizzare durante la firma:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- Controlla l'output del tuo file
keytool
comando per una riga che inizia conAlias 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
is1
. - 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
- Se il tuo comando ha successo, dovresti vedere un output come il seguente:
Aggiunta della firma Authenticode a example.exe
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.
- 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
- 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 peropensc-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
- Usa il
keytool
comando per ottenere ilalias
valore da utilizzare durante la firma:keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Controlla l'output del tuo file
keytool
comando per una riga che inizia conAlias 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 diCertificate 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
- 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
- Se il tuo comando ha successo, dovresti vedere un output come il seguente:
Aggiunta della firma Authenticode a example.exe
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
- Puoi verificare che la tua firma digitale sia valida visualizzando i dettagli della firma in Windows.
- È 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