Microsoft Authenticode Code Signing i Linux med Jsign

Sådan bruges Jsign til Windows Authenticode-kodesignering på Linux-systemer, inklusive både standard OV / IV og tokenbaserede EV-certifikater.

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

Dette afsnit gælder kun for individuel validering (IV) og Organisation Validation (OV) kodesigneringscertifikater, der blev bestilt før 1. juni 2023. Fra 1. juni 2023, SSL.com's IV- og OV-kodesigneringscertifikater er begyndt at blive udstedt enten på Federal Information Processing Standard 140-2 (FIPS 140-2) USB-tokens eller gennem vores eSigner cloud-kodesigneringstjeneste. 

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.

  1. 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
  2. Kontroller output af din keytool kommando for en linje, der begynder med Alias 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 is 1.

  3. 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
  4. Hvis din kommando er vellykket, skal du se output som følger:
    Tilføjelse af Authenticode-signatur til eksempel.exe
Bemærk: Som standard understøtter SSL.com tidsstempler fra ECDSA-nøgler.

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.

  1. 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
  2. Opret derefter en konfigurationsfil. Navnet på filen er vilkårlig, men til eksemplet nedenfor bruger vi kommandoer eToken.cfg. Bemærk, at stien til opensc-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
  3. 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
  4. Kontroller output af din keytool kommando for en linje, der begynder med Alias 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
  5. 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
  6. Hvis din kommando er vellykket, skal du se output som følger:
    Tilføjelse af Authenticode-signatur til eksempel.exe
Bemærk: Som standard understøtter SSL.com tidsstempler fra ECDSA-nøgler.

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

  1. Du kan kontrollere, at din digitale signatur er gyldig ved at se signaturoplysningerne i Windows.
    Digital signatur er ok
  2. 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

Hold dig informeret og sikker

SSL.com er en global leder inden for cybersikkerhed, PKI og digitale certifikater. Tilmeld dig for at modtage de seneste industrinyheder, tips og produktmeddelelser fra SSL.com.

Vi vil meget gerne have din feedback

Tag vores undersøgelse og fortæl os dine tanker om dit seneste køb.