SSL.com

Microsoft Authenticode Code Signing i Linux med Jsign

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

Denne delen gjelder bare for individuell validering (IV) og organisasjonsvalidering (OV) kodesigneringssertifikater som ble bestilt før 1. juni 2023. Fra 1. juni 2023, SSL.coms IV- og OV-kodesigneringssertifikater har begynt å bli utstedt enten på Federal Information Processing Standard 140-2 (FIPS 140-2) USB-tokens eller gjennom vår eSigner skykodesigneringstjeneste. 

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.

  1. 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
  2. Sjekk utdataene fra din keytool kommando for en linje som begynner med Alias 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 is 1.

  3. 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
  4. Hvis kommandoen din er vellykket, bør du se utdata slik:
    Legger til Authenticode-signatur til eksempel.exe
OBS: Som standard støtter SSL.com tidsstempler fra ECDSA-nøkler.

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.

  1. 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
  2. Deretter oppretter du en konfigurasjonsfil. Navnet på filen er vilkårlig, men for eksempelkommandoene nedenfor bruker vi eToken.cfg. Merk at stien til opensc-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
  3. 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
  4. Sjekk utdataene fra din keytool kommando for en linje som begynner med Alias 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
  5. 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
  6. Hvis kommandoen din er vellykket, bør du se utdata slik:
    Legger til Authenticode-signatur til eksempel.exe
OBS: Som standard støtter SSL.com tidsstempler fra ECDSA-nøkler.

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

  1. Du kan bekrefte at den digitale signaturen din er gyldig ved å se signaturdetaljene i Windows.
    Digital signatur er ok
  2. 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
Gå ut av mobilversjonen