Microsoft Authenticode Code Signing i Linux med Jsign

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

Detta avsnitt gäller endast för kodsigneringscertifikat för individuell validering (IV) och organisationsvalidering (OV) som beställdes före 1 juni 2023. Från och med 1 juni 2023, SSL.coms IV- och OV-kodsigneringscertifikat har börjat utfärdas antingen på Federal Information Processing Standard 140-2 (FIPS 140-2) USB-tokens eller genom vår eSigner molnkodsigneringstjänst. 

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.

  1. 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
  2. Kontrollera utdata från din keytool kommando för en rad som börjar med Alias 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 is 1.

  3. 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
  4. Om ditt kommando lyckas bör du se utdata på följande sätt:
    Lägger till Authenticode-signatur till exempel.exe
Notera: Som standard stöder SSL.com tidsstämplar från ECDSA-nycklar.

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.

  1. 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
  2. Skapa sedan en konfigurationsfil. Filens namn är godtyckligt, men för exemplet nedan använder vi kommandona eToken.cfg. Observera att vägen till opensc-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
  3. 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
  4. Kontrollera utdata från din keytool kommando för en rad som börjar med Alias 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 aliasnamn Certificate 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
  5. 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
  6. Om ditt kommando lyckas bör du se utdata på följande sätt:
    Lägger till Authenticode-signatur till exempel.exe
Notera: Som standard stöder SSL.com tidsstämplar från ECDSA-nycklar.

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

  1. Du kan verifiera att din digitala signatur är giltig genom att visa signaturinformation i Windows.
    Digital signatur är ok
  2. 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

Prenumerera på SSL.coms nyhetsbrev

Missa inte nya artiklar och uppdateringar från SSL.com

Håll dig informerad och säker

SSL.com är en global ledare inom cybersäkerhet, PKI och digitala certifikat. Registrera dig för att få de senaste branschnyheterna, tipsen och produktmeddelanden från SSL.com.

Vi vill gärna ha din feedback

Följ vår undersökning och låt oss veta vad du tycker om ditt senaste köp.