Microsoft Authenticode Code Signing in Linux met Jsign

Jteken is een open-source, platformonafhankelijke Java-tool voor het ondertekenen van Microsoft Authenticode-code. Jsign is eenvoudig te integreren met build-systemen zoals Maven, Gradle en Ant, of kan rechtstreeks vanaf de opdrachtregel worden gebruikt.

In deze how-to behandelen we het gebruik van Jteken vanaf de Linux-opdrachtregel voor OV / IV-code ondertekenen en EV-code ondertekenen. Omdat Jsign op Java is gebaseerd, kunt u het ook gebruiken op Windows- en MacOS-systemen.

Installeer Jsign

Eerst moet u Jsign downloaden en installeren. De Jsign-website bevat koppelingen naar Debian- en RPM-pakketten voor eenvoudige installatie op de meeste populaire Linux-systemen, evenals een .jar bestand.

OV / IV Code Signing

Dit gedeelte is alleen van toepassing op certificaten voor individuele validatie (IV) en organisatievalidatie (OV) die vóór 1 juni 2023 zijn besteld. Vanaf 1 juni 2023, SSL.com's IV- en OV-codeondertekeningscertificaten zijn uitgegeven ofwel op Federal Information Processing Standard 140-2 (FIPS 140-2) USB-tokens of via onze eSigner-cloudcodeondertekeningsservice. 

Voor het ondertekenen van OV/IV-code kunt u een certificaat gebruiken dat is opgeslagen in een Java-sleutelopslag of PKCS#12 (PFX)-bestand. Vervang in alle onderstaande codevoorbeelden de waarden die in HOOFDLETTERS worden weergegeven door uw werkelijke waarden.

  1. Gebruik eerst de keytool commando om het alias waarde om te gebruiken bij het ondertekenen:
    keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-WACHTWOORD
  2. Controleer de output van je keytool commando voor een regel die begint met Alias name:.
    Keystore-type: PKCS12 Keystore-provider: SUN Uw keystore bevat 1 entry Aliasnaam: 1 Aanmaakdatum: 18 jan 2021 Type entry: PrivateKeyEntry Lengte certificaatketen: 4 ...

    In het bovenstaande voorbeeld, Alias name is 1.

  3. Gebruik een commando zoals het volgende om een ​​bestand te ondertekenen en van een tijdstempel te voorzien:
    • jsign commando geïnstalleerd systeembreed:
      jsign --keystore KEYSTORE.p12 --alias ALIAS-NAAM --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Met Jsigner .jar file:
      java -jar jsign-3.1.jar --keystore KEYSTORE.p12 --alias ALIAS-NAAM --storetype PKCS12 --storepass PKCS12-WACHTWOORD --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO- TEKEN
  4. Als uw opdracht succesvol is, zou u de volgende uitvoer moeten zien:
    Authenticode-handtekening toevoegen aan example.exe
Opmerking: Standaard ondersteunt SSL.com tijdstempels van ECDSA-sleutels.

Als u deze fout tegenkomt: The timestamp certificate does not meet a minimum public key length requirement, dient u contact op te nemen met uw softwareleverancier om tijdstempels van ECDSA-sleutels toe te staan.

Als uw softwareleverancier het gebruik van het normale eindpunt niet toestaat, kunt u dit verouderde eindpunt gebruiken http://ts.ssl.com/legacy om een ​​tijdstempel te krijgen van een RSA-tijdstempeleenheid.

EV Code-ondertekening

U kunt Jsign ook gebruiken met een EV-codeondertekeningscertificaat. Het voorbeeld hier gebruikt een SSL.com Certificaat voor ondertekenen van EV-code geïnstalleerd op een FIPS 140-2 gevalideerde beveiligingssleutel USB-token.

  1. Zorg er eerst voor dat opensc is op uw systeem geïnstalleerd zodat het kan communiceren met uw token via de PKCS # 11 API. Op Debian-gebaseerde distributies zoals Ubuntu kun je OpenSC installeren met apt:
    sudo apt installeer opensc
  2. Maak vervolgens een configuratiebestand. De naam van het bestand is willekeurig, maar voor de onderstaande voorbeeldopdrachten gebruiken we eToken.cfg. Merk op dat het pad naar opensc-pkcs11.so kan variëren in uw OpenSC-installatie, dus controleer voordat u het configuratiebestand maakt.
    name = OpenSC-PKCS11 beschrijving = SunPKCS11 via OpenSC bibliotheek = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
  3. Gebruik de keytool commando om het alias waarde om te gebruiken bij het ondertekenen:
    keytool -list -v -keystore GEEN -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
  4. Controleer de output van je keytool commando voor een regel die begint met Alias name:. Als uw token meerdere certificaten bevat, controleert u de geldigheidsdatums en uitgever in de uitvoer met uw certificaat. Merk op dat EV code-ondertekeningscertificaten die zijn uitgegeven op YubiKey vanaf SSL.com een ​​aliasnaam moeten hebben van Certificate for PIV Authentication.
    Aliasnaam: Certificaat voor PIV-verificatie Invoertype: PrivateKeyEntry Lengte certificaatketen: 1 Certificaat [1]: Eigenaar: 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 = Private Organization, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Issuer: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Serienummer: 93f57a3bac6570c781580f63172e17 Geldig vanaf: vr 12 apr 46:04:2020 EDT 17 tot: za 12 apr 46:04:2021 EDT XNUMX
  5. Gebruik een commando zoals het volgende om een ​​bestand te ondertekenen en van een tijdstempel te voorzien:
    • jsign commando geïnstalleerd systeembreed:
      jsign --keystore eToken.cfg --alias "Certificate for PIV Authentication" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 FILE-TO-SIGN
    • Met 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 -ONDERTEKENEN
  6. Als uw opdracht succesvol is, zou u de volgende uitvoer moeten zien:
    Authenticode-handtekening toevoegen aan example.exe
Opmerking: Standaard ondersteunt SSL.com tijdstempels van ECDSA-sleutels.

Als u deze fout tegenkomt: The timestamp certificate does not meet a minimum public key length requirement, dient u contact op te nemen met uw softwareleverancier om tijdstempels van ECDSA-sleutels toe te staan.

Als uw softwareleverancier het gebruik van het normale eindpunt niet toestaat, kunt u dit verouderde eindpunt gebruiken http://ts.ssl.com/legacy om een ​​tijdstempel te krijgen van een RSA-tijdstempeleenheid.

Controleer de digitale handtekening

  1. U kunt controleren of uw digitale handtekening geldig is door de handtekeningdetails in Windows te bekijken.
    Digitale handtekening is ok
  2. U kunt ook gebruik maken van TekenTool in Windows om de digitale handtekening te verifiëren.
    signtool.exe verifieer / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Bestand: C: \ Users \ Aaron Russell \ Desktop \ example.exe Index algoritme Tijdstempel =========== ============================= 0 sha256 RFC3161 Succesvol geverifieerd: C: \ Users \ Aaron Russell \ Desktop \ example.exe

Abonneer u op de nieuwsbrief van SSL.com

Mis geen nieuwe artikelen en updates van SSL.com

Blijf geïnformeerd en veilig

SSL.com is een wereldleider op het gebied van cyberbeveiliging, PKI en digitale certificaten. Meld u aan om het laatste branchenieuws, tips en productaankondigingen te ontvangen van SSL.com.

We willen graag uw feedback

Vul onze enquête in en laat ons uw mening over uw recente aankoop weten.