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
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.
- Gebruik eerst de
keytool
commando om hetalias
waarde om te gebruiken bij het ondertekenen:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-WACHTWOORD
- Controleer de output van je
keytool
commando voor een regel die begint metAlias 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
is1
. - 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
- Als uw opdracht succesvol is, zou u de volgende uitvoer moeten zien:
Authenticode-handtekening toevoegen aan example.exe
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.
- 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
- 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 naaropensc-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
- Gebruik de
keytool
commando om hetalias
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
- Controleer de output van je
keytool
commando voor een regel die begint metAlias 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 vanCertificate 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
- 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
- Als uw opdracht succesvol is, zou u de volgende uitvoer moeten zien:
Authenticode-handtekening toevoegen aan example.exe
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
- U kunt controleren of uw digitale handtekening geldig is door de handtekeningdetails in Windows te bekijken.
- 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