Jsign är ett öppen källkod, plattformsoberoende Java-verktyg för Microsoft Authenticode-kodsignering. Jsign är lätt att integrera med byggsystem som Maven, Gradle och Ant eller kan användas direkt från kommandoraden.
I den här instruktionen täcker vi användning Jsign från Linux-kommandoraden för OV / IV-kodsignering och EV-kodsignering. Eftersom Jsign är Java-baserat kan du också använda det på Windows- och MacOS-system.
Installera Jsign
Först måste du ladda ner och installera Jsign. De Jsign webbplats innehåller länkar till Debian- och RPM-paket för enkel installation på de flesta populära Linux-systemen, samt en .jar
fil.
OV / IV-kodsignering
För OV/IV-kodsignering kan du använda ett certifikat lagrat i ett Java-nyckellager eller PKCS#12 (PFX)-fil. I alla kodexempel nedan, ersätt värdena som visas i ALL-CAPS med dina faktiska värden.
- Använd först
keytool
kommando för att fåalias
värde att använda vid signering:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-LÖSENORD
- Kontrollera utdata från din
keytool
kommando för en rad som börjar medAlias name:
.Keystore-typ: PKCS12 Keystore-leverantör: SUN Din keystore innehåller 1 post Aliasnamn: 1 Skapningsdatum: 18 jan 2021 Posttyp: PrivateKeyEntry Certifikatkedjelängd: 4 ...
I exemplet ovan,
Alias name
is1
. - Använd ett kommando som följande för att signera och tidsstämpla en fil:
jsign
kommando installerat hela systemet:jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-LÖSENORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FIL-TILL-SIGN
- Med Jsigner
.jar
fil:java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-LÖSENORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- TECKEN
- Om ditt kommando lyckas bör du se utdata på följande sätt:
Lägger till Authenticode-signatur till exempel.exe
Om du stöter på det här felet:
The timestamp certificate does not meet a minimum public key length requirement
, bör du kontakta din programvaruleverantör för att tillåta tidsstämplar från ECDSA-nycklar.Om det inte finns något sätt för din programvaruleverantör att tillåta att den normala slutpunkten används, kan du använda denna äldre slutpunkt
http://ts.ssl.com/legacy
för att få en tidsstämpel från en RSA Timestamping Unit.EV-kodsignering
Du kan också använda Jsign med ett EV-kodsigneringscertifikat. Exemplet här använder en SSL.com EV-kodsigneringscertifikat installerad på en FIPS 140-2 validerad säkerhetsnyckel USB-token.
- Kontrollera först det OpenSC är installerat på ditt system så att det kan kommunicera med din token via PKCS # 11 API. På Debian-baserade distributioner som Ubuntu kan du installera OpenSC med
apt
:sudo apt installerar opensc
- Skapa sedan en konfigurationsfil. Filens namn är godtyckligt, men för exemplet nedan använder vi kommandona
eToken.cfg
. Observera att vägen tillopensc-pkcs11.so
kan variera i din OpenSC-installation, så kontrollera innan du skapar konfigurationsfilen.namn = OpenSC-PKCS11 beskrivning = SunPKCS11 via OpenSC-bibliotek = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Använd
keytool
kommando för att fåalias
värde att använda vid signering:nyckelverktyg -list -v -nyckelbutik INGEN -stortyp PKCS11 -lagringspass TOKEN -PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Kontrollera utdata från din
keytool
kommando för en rad som börjar medAlias name:
. Om din token innehåller flera certifikat, kontrollera giltighetsdatum och utfärdare i utdata mot ditt certifikat. Observera att EV-kodsigneringscertifikat utfärdat på YubiKey från SSL.com bör ha ett aliasnamnCertificate for PIV Authentication
.Aliasnamn: Certifikat för PIV-autentisering Inmatningstyp: PrivateKeyEntry Certifikatkedjelängd: 1 Certifikat [1]: Ägare: 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 organisation, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = USA Utgivare: CN = SSL.com EV Kodsignering Mellanliggande CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = USA Serienummer: 93f57a3bac6570c781580f63172e17 Gäller från: Fre Apr 12 46:04:2020 EDT 17 till: Lör 12 Apr 46:04:2021 EDT XNUMX
- Använd ett kommando som följande för att signera och tidsstämpla en fil:
jsign
kommando installerat hela 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
fil: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 FIL -ATT SKRIVA UNDER
- Om ditt kommando lyckas bör du se utdata på följande sätt:
Lägger till Authenticode-signatur till exempel.exe
Om du stöter på det här felet:
The timestamp certificate does not meet a minimum public key length requirement
, bör du kontakta din programvaruleverantör för att tillåta tidsstämplar från ECDSA-nycklar.Om det inte finns något sätt för din programvaruleverantör att tillåta att den normala slutpunkten används, kan du använda denna äldre slutpunkt
http://ts.ssl.com/legacy
för att få en tidsstämpel från en RSA Timestamping Unit.Verifiera digital signatur
- Du kan verifiera att din digitala signatur är giltig genom att visa signaturinformation i Windows.
- Du kan också använda Signtool i Windows för att verifiera den digitala signaturen.
signtool.exe verifierar / pa 'C: \ Användare \ Aaron Russell \ Desktop \ exempel.exe' Fil: C: \ Användare \ Aaron Russell \ Desktop \ exempel.exe Index Algoritm Tidsstämpel ============ ============================== 0 sha256 RFC3161 Verifierad: C: \ Användare \ Aaron Russell \ Desktop \ exempel.exe