Jsign er et open-source, platformuafhængigt Java-værktøj til Microsoft Authenticode-kodesignering. Jsign er let at integrere med build-systemer som Maven, Gradle og Ant eller kan bruges direkte fra kommandolinjen.
I denne vejledning dækker vi brug af Jsign fra Linux-kommandolinjen til OV / IV-kodesignering og EV-kodesignering. Da Jsign er Java-baseret, kan du også bruge det på Windows- og MacOS-systemer.
Installer Jsign
Først skal du downloade og installere Jsign. Det Jsign-websted inkluderer links til Debian- og RPM-pakker til nem installation på de mest populære Linux-systemer samt a .jar
fil.
OV / IV-kodesignering
Til OV/IV-kodesignering kan du bruge et certifikat, der er gemt i et Java-nøglelager eller PKCS#12 (PFX)-fil. I alle kodeeksempler nedenfor skal du erstatte værdierne vist i ALL-CAPS med dine faktiske værdier.
- Brug først
keytool
kommando for at fåalias
værdi, der skal bruges ved signering:keytool -list -v -keystore PKCS12-FIL.p12 -storetype PKCS12 -storepass PKCS12-PASSWORD
- Kontroller output af din
keytool
kommando for en linje, der begynder medAlias name:
.Keystore-type: PKCS12 Keystore-udbyder: SUN Din keystore indeholder 1 post Aliasnavn: 1 Oprettelsesdato: 18. januar 2021 Posteringstype: PrivateKeyEntry Certifikatkædelængde: 4 ...
I ovenstående eksempel
Alias name
is1
. - Brug en kommando som følgende til at underskrive og tidsstemple en fil:
jsign
kommando installeret 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
fil: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 din kommando er vellykket, skal du se output som følger:
Tilføjelse af Authenticode-signatur til eksempel.exe
Hvis du støder på denne fejl:
The timestamp certificate does not meet a minimum public key length requirement
, bør du kontakte din softwareleverandør for at tillade tidsstempler fra ECDSA-nøgler.Hvis der ikke er nogen måde for din softwareleverandør at tillade det normale slutpunkt at blive brugt, kan du bruge dette ældre slutpunkt
http://ts.ssl.com/legacy
for at få et tidsstempel fra en RSA Timestamping Unit.EV-kode underskrift
Du kan også bruge Jsign med et EV-kodesigneringscertifikat. Eksemplet her bruger en SSL.com EV-kode underskrivelsesattest installeret på en FIPS 140-2 valideret sikkerhedsnøgle USB-token.
- Sørg først for, at OpenSC er installeret på dit system, så det kan kommunikere med dit token via PKCS # 11 API. På Debian-baserede distroer som Ubuntu kan du installere OpenSC med
apt
:sudo apt installerer opensc
- Opret derefter en konfigurationsfil. Navnet på filen er vilkårlig, men til eksemplet nedenfor bruger vi kommandoer
eToken.cfg
. Bemærk, at stien tilopensc-pkcs11.so
kan variere i din OpenSC-installation, så tjek inden du opretter konfigurationsfilen.navn = OpenSC-PKCS11 beskrivelse = SunPKCS11 via OpenSC-bibliotek = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Brug
keytool
kommando for at fåalias
værdi, der skal bruges ved signering:keytool -list -v -keystore INGEN -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Kontroller output af din
keytool
kommando for en linje, der begynder medAlias name:
. Hvis dit token indeholder flere certifikater, skal du kontrollere gyldighedsdatoer og udsteder i output mod dit certifikat. Bemærk, at EV-kodesigneringscertifikater udstedt på YubiKey fra SSL.com skal have et aliasnavn påCertificate for PIV Authentication
.Aliasnavn: Certifikat til PIV-godkendelse Indtastningstype: PrivateKeyEntry Certifikatkædelængde: 1 Certifikat [1]: Ejer: 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 = US Udsteder: CN = SSL.com EV Kodesignering Mellemliggende CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Serienummer: 93f57a3bac6570c781580f63172e17 Gyldig fra: Fre Apr 12 46:04:2020 EDT 17 indtil: Sat Apr 12 46:04:2021 EDT XNUMX
- Brug en kommando som følgende til at underskrive og tidsstemple en fil:
jsign
kommando installeret hele systemet:jsign --keystore eToken.cfg - alias "Certifikat til PIV-godkendelse" - stil type PKCS11 - lagerpass 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 FILE -TIL AT UNDERSKRIVE
- Hvis din kommando er vellykket, skal du se output som følger:
Tilføjelse af Authenticode-signatur til eksempel.exe
Hvis du støder på denne fejl:
The timestamp certificate does not meet a minimum public key length requirement
, bør du kontakte din softwareleverandør for at tillade tidsstempler fra ECDSA-nøgler.Hvis der ikke er nogen måde for din softwareleverandør at tillade det normale slutpunkt at blive brugt, kan du bruge dette ældre slutpunkt
http://ts.ssl.com/legacy
for at få et tidsstempel fra en RSA Timestamping Unit.Bekræft digital signatur
- Du kan kontrollere, at din digitale signatur er gyldig ved at se signaturoplysningerne i Windows.
- Du kan også bruge SignTool i Windows for at kontrollere den digitale signatur.
signtool.exe verificerer / pa 'C: \ Brugere \ Aaron Russell \ Desktop \ eksempel.exe' Fil: C: \ Brugere \ Aaron Russell \ Desktop \ eksempel.exe Indeks Algoritme Tidsstempel ============ ============================== 0 sha256 RFC3161 Vellykket verificeret: C: \ Brugere \ Aaron Russell \ Desktop \ eksempel.exe