Jsign je open-source, nezávislý na platformě Java nástroj pro podepisování kódu Microsoft Authenticode. Jsign lze snadno integrovat do sestavovacích systémů jako Maven, Gradle a Ant, nebo jej lze použít přímo z příkazového řádku.
V tomto návodu pokryjeme použití Jsign z příkazového řádku Linuxu pro Podepisování kódu OV / IV a Podepisování kódu EV. Protože Jsign je založen na prostředí Java, můžete jej použít také v systémech Windows a MacOS.
Nainstalujte Jsign
Nejprve si budete muset stáhnout a nainstalovat Jsign. The Web společnosti Jsign obsahuje odkazy na balíčky Debian a RPM pro snadnou instalaci na nejpopulárnější systémy Linux, stejně jako a .jar
soubor.
Podepisování kódu OV / IV
Pro podepisování kódu OV/IV můžete použít certifikát uložený v úložišti klíčů Java nebo v souboru PKCS#12 (PFX). Ve všech níže uvedených příkladech kódu nahraďte hodnoty zobrazené VELKÝMI PÍSMENY svými skutečnými hodnotami.
- Nejprve použijte
keytool
příkaz získatalias
hodnota, která se má použít při podepisování:keytool -list -v -keystore PKCS12-FILE.p12 -storetype PKCS12 -storepass PKCS12-HESLO
- Zkontrolujte výstup vašeho
keytool
příkaz pro řádek začínající naAlias name:
.Typ úložiště klíčů: PKCS12 Poskytovatel úložiště klíčů: SUN Vaše úložiště klíčů obsahuje 1 záznam Alias název: 1 Datum vytvoření: 18. ledna 2021 Typ záznamu: Délka řetězce certifikátu PrivateKeyEntry: 4 ...
Ve výše uvedeném příkladu
Alias name
is1
. - K podepsání a časovému razítku souboru použijte následující příkaz:
jsign
příkaz nainstalovaný v celém systému:jsign --keystore KEYSTORE.p12 - alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 SOUBOR K PODPISU
- S Jsignerem
.jar
Soubor:java -jar jsign-3.1.jar --keystore KEYSTORE.p12 - alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 SOUBOR DO PODEPSAT
- Pokud je váš příkaz úspěšný, měli byste vidět výstup, jako je následující:
Přidání podpisu Authenticode do souboru example.exe
Pokud narazíte na tuto chybu:
The timestamp certificate does not meet a minimum public key length requirement
, měli byste kontaktovat svého dodavatele softwaru, aby povolil časové značky z klíčů ECDSA.Pokud váš dodavatel softwaru nemůže žádným způsobem umožnit použití normálního koncového bodu, můžete použít tento starší koncový bod
http://ts.ssl.com/legacy
získat časové razítko z jednotky RSA Timestamping Unit.Podepisování kódu EV
Můžete také použít Jsign s certifikátem pro podepisování kódu EV. Příklad zde používá SSL.com Certifikát podpisu EV kódu nainstalován na a USB token bezpečnostního klíče s validací FIPS 140-2.
- Nejprve se ujistěte, že OpenSC je nainstalován ve vašem systému, aby mohl komunikovat s vaším tokenem prostřednictvím rozhraní PKCS # 11 API. Na distribucích založených na Debianu, jako je Ubuntu, můžete nainstalovat OpenSC
apt
:sudo apt install opensc
- Dále vytvořte konfigurační soubor. Název souboru je libovolný, ale pro níže uvedené příklady příkazů použijeme
eToken.cfg
. Všimněte si, že cesta kopensc-pkcs11.so
se může lišit ve vaší instalaci OpenSC, proto před vytvořením konfiguračního souboru zkontrolujte.name = OpenSC-PKCS11 description = SunPKCS11 via OpenSC library = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Použití
keytool
příkaz získatalias
hodnota, která se má použít při podepisování:keytool -list -v -keystore NONE -storetype PKCS11 -storepass TOKEN -PIN -poskytClass sun.security.pkcs11.SunPKCS11 -poskytovatelArg eToken.cfg
- Zkontrolujte výstup vašeho
keytool
příkaz pro řádek začínající naAlias name:
. Pokud váš token obsahuje více certifikátů, zkontrolujte data platnosti a vydavatele ve výstupu oproti vašemu certifikátu. Všimněte si, že certifikáty pro podepisování EV kódů vydané na YubiKey z SSL.com by měly mít aliasCertificate for PIV Authentication
.Alias name: Certificate for PIV Authentication Typ položky: PrivateKeyEntry Délka řetězce certifikátu: 1 Certifikát [1]: Vlastník: OID.1.3.6.1.4.1.311.60.2.1.3 = USA, OID.1.3.6.1.4.1.311.60.2.1.2 .2.5.4.15 = Nevada, OID.20081614243 = Soukromá organizace, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = USA Vydavatel: CN = SSL.com Podepisování EV kódu CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = USA Sériové číslo: 93f57a3bac6570c781580f63172e17 Platné od: Pá 12. dubna 46:04:2020 EDT 17 do: So 12. dubna 46:04:2021 EDT XNUMX
- K podepsání a časovému razítku souboru použijte následující příkaz:
jsign
příkaz nainstalovaný v celém systému:jsign --keystore eToken.cfg - alias "Certifikát pro ověření PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 SOUBOR NA PODPIS
- S Jsignerem
.jar
Soubor:java -jar jsign-3.1.jar --keystore eToken.cfg - alias "Certifikát pro ověření PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 SOUBOR -K PODPISU
- Pokud je váš příkaz úspěšný, měli byste vidět výstup, jako je následující:
Přidání podpisu Authenticode do souboru example.exe
Pokud narazíte na tuto chybu:
The timestamp certificate does not meet a minimum public key length requirement
, měli byste kontaktovat svého dodavatele softwaru, aby povolil časové značky z klíčů ECDSA.Pokud váš dodavatel softwaru nemůže žádným způsobem umožnit použití normálního koncového bodu, můžete použít tento starší koncový bod
http://ts.ssl.com/legacy
získat časové razítko z jednotky RSA Timestamping Unit.Ověřte digitální podpis
- Platnost digitálního podpisu můžete ověřit zobrazením podrobností podpisu ve Windows.
- Můžete také použít SignTool ve Windows k ověření digitálního podpisu.
signtool.exe ověřit / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Soubor: C: \ Users \ Aaron Russell \ Desktop \ example.exe Indexový algoritmus Timestamp ============ ============================= 0 sha256 RFC3161 Úspěšně ověřeno: C: \ Users \ Aaron Russell \ Desktop \ example.exe