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

Abonner på SSL.coms nyhetsbrev

Ikke gå glipp av nye artikler og oppdateringer fra SSL.com

Hold deg informert og sikker

SSL.com er en global leder innen cybersikkerhet, PKI og digitale sertifikater. Registrer deg for å motta de siste bransjenyhetene, tipsene og produktkunngjøringene fra SSL.com.

Vi vil gjerne ha tilbakemeldinger

Ta vår spørreundersøkelse og fortell oss dine tanker om ditt nylige kjøp.