Jsign er et åpen kildekode, plattformuavhengig Java-verktøy for Microsoft Authenticode-kodesignering. Jsign er enkelt å integrere med byggesystemer som Maven, Gradle og Ant, eller kan brukes direkte fra kommandolinjen.
I denne veiledningen vil vi dekke bruk Jsign fra Linux-kommandolinjen for OV / IV-kodesignering og EV-kode signering. Fordi Jsign er Java-basert, kan du også bruke det på Windows- og MacOS-systemer.
Installer Jsign
Først må du laste ned og installere Jsign. De Jsign nettsted inneholder lenker til Debian- og RPM-pakker for enkel installasjon på de mest populære Linux-systemene, samt en .jar
filen.
OV / IV kodesignering
For OV/IV-kodesignering kan du bruke et sertifikat som er lagret i et Java-nøkkellager eller PKCS#12 (PFX)-fil. I alle kodeeksemplene nedenfor, bytt ut verdiene vist i ALL-CAPS med dine faktiske verdier.
- Bruk først
keytool
kommando for å fåalias
verdi å bruke når du signerer:nøkkelverktøy -liste -v -keystore PKCS12-FIL.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- Sjekk utdataene fra din
keytool
kommando for en linje som begynner medAlias name:
.Keystore-type: PKCS12 Keystore-leverandør: SUN Keystore inneholder 1 oppføring Aliasnavn: 1 Opprettelsesdato: 18. jan 2021 Oppføringstype: PrivateKeyEntry Sertifikatkjedelengde: 4 ...
I eksemplet ovenfor,
Alias name
is1
. - Bruk en kommando som følgende for å signere og stemple en fil:
jsign
kommando installert hele systemet:jsign --keystore KEYSTORE.p12-alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FIL-TIL-SKILT
- Med 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- SKILT
- Hvis kommandoen din er vellykket, bør du se utdata slik:
Legger til Authenticode-signatur til eksempel.exe
Hvis du støter på denne feilen:
The timestamp certificate does not meet a minimum public key length requirement
, bør du kontakte programvareleverandøren for å tillate tidsstempler fra ECDSA-nøkler.Hvis det ikke er noen måte for programvareleverandøren din å tillate at det vanlige endepunktet brukes, kan du bruke dette eldre endepunktet
http://ts.ssl.com/legacy
for å få et tidsstempel fra en RSA Timestamping Unit.EV-kode signering
Du kan også bruke Jsign med et EV-kodesigneringssertifikat. Eksemplet her bruker en SSL.com EV-kode signeringssertifikat installert på en FIPS 140-2 validert sikkerhetsnøkkel USB-token.
- Først må du sørge for at OpenSC er installert på systemet ditt slik at det kan kommunisere med tokenet ditt via PKCS # 11 API. På Debian-baserte distroer som Ubuntu kan du installere OpenSC med
apt
:sudo apt installerer opensc
- Deretter oppretter du en konfigurasjonsfil. Navnet på filen er vilkårlig, men for eksempelkommandoene nedenfor bruker vi
eToken.cfg
. Merk at stien tilopensc-pkcs11.so
kan variere i OpenSC-installasjonen, så sjekk før du oppretter konfigurasjonsfilen.navn = OpenSC-PKCS11 beskrivelse = SunPKCS11 via OpenSC-bibliotek = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Bruke
keytool
kommando for å fåalias
verdi å bruke når du signerer:keytool -list -v -keystore INGEN -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Sjekk utdataene fra din
keytool
kommando for en linje som begynner medAlias name:
. Hvis tokenet ditt inneholder flere sertifikater, sjekk gyldighetsdatoene og utstederen i utdataene mot sertifikatet ditt. Merk at EV-kodesigneringssertifikater utstedt på YubiKey fra SSL.com skal ha et aliasnavn påCertificate for PIV Authentication
.Aliasnavn: Sertifikat for PIV-autentisering Oppføringstype: PrivateKeyEntry Sertifikatkjedelengde: 1 Sertifikat [1]: Eier: 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 = Privat organisasjon, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Utsteder: CN = SSL.com EV Kodesignering Mellomliggende CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Serienummer: 93f57a3bac6570c781580f63172e17 Gyldig fra: Fre apr 12 46:04:2020 EDT 17 til: Lør 12. april 46:04:2021 EDT XNUMX
- Bruk en kommando som følgende for å signere og stemple en fil:
jsign
kommando installert hele systemet:jsign --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
- Med 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 -Å SIGNERE
- Hvis kommandoen din er vellykket, bør du se utdata slik:
Legger til Authenticode-signatur til eksempel.exe
Hvis du støter på denne feilen:
The timestamp certificate does not meet a minimum public key length requirement
, bør du kontakte programvareleverandøren for å tillate tidsstempler fra ECDSA-nøkler.Hvis det ikke er noen måte for programvareleverandøren din å tillate at det vanlige endepunktet brukes, kan du bruke dette eldre endepunktet
http://ts.ssl.com/legacy
for å få et tidsstempel fra en RSA Timestamping Unit.Bekreft digital signatur
- Du kan bekrefte at den digitale signaturen din er gyldig ved å se signaturdetaljene i Windows.
- Du kan også bruke SignTool i Windows for å bekrefte den digitale signaturen.
signtool.exe verifisere / pa 'C: \ Brukere \ Aaron Russell \ Desktop \ eksempel.exe' Fil: C: \ Brukere \ Aaron Russell \ Desktop \ eksempel.exe Indeks Algoritme Tidsstempel ============ ============================== 0 sha256 RFC3161 Vellykket bekreftet: C: \ Brukere \ Aaron Russell \ Desktop \ eksempel.exe