znak J to otwarte, niezależne od platformy narzędzie Java do podpisywania kodu Microsoft Authenticode. Jsign można łatwo zintegrować z systemami kompilacji, takimi jak Maven, Gradle i Ant, lub można go używać bezpośrednio z wiersza poleceń.
W tym poradniku omówimy używanie znak J z wiersza poleceń systemu Linux dla Podpisywanie kodu OV / IV i Podpisywanie kodu EV. Ponieważ Jsign jest oparty na Javie, można go również używać w systemach Windows i MacOS.
Zainstaluj Jsign
Najpierw musisz pobrać i zainstalować Jsign. Plik Witryna Jsign zawiera łącza do pakietów Debiana i RPM ułatwiających instalację w większości popularnych systemów Linux, a także plik .jar
plik.
Podpisywanie kodu OV / IV
Do podpisywania kodu OV/IV można użyć certyfikatu przechowywanego w magazynie kluczy Java lub pliku PKCS#12 (PFX). We wszystkich poniższych przykładach kodu zamień wartości wyświetlane wielkimi literami na rzeczywiste wartości.
- Najpierw użyj
keytool
polecenie, aby pobrać plikalias
wartość do użycia podczas podpisywania:keytool -list -v -keystore PKCS12-PLIK.p12 -typ sklepu PKCS12 -storepass PKCS12-HASŁO
- Sprawdź wyjście swojego
keytool
polecenie dla wiersza zaczynającego się odAlias name:
.Typ magazynu kluczy: PKCS12 Dostawca magazynu kluczy: SUN Twój magazyn kluczy zawiera 1 wpis Nazwa aliasu: 1 Data utworzenia: 18 stycznia 2021 r. Typ wpisu: PrivateKeyEntry Długość łańcucha certyfikatów: 4 ...
W powyższym przykładzie
Alias name
is1
. - Użyj polecenia podobnego do poniższego, aby podpisać plik i oznaczyć go datą:
jsign
polecenie zainstalowane w całym systemie:jsign --keystore KEYSTORE.p12 --alias ALIAS-NAME --storetype PKCS12 --storepass PKCS12-PASSWORD --tsaurl http://ts.ssl.com --tsmode RFC3161 PLIK DO PODPISU
- Dzięki Jsigner
.jar
file: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- ZNAK
- Jeśli polecenie się powiedzie, powinieneś zobaczyć następujące dane wyjściowe:
Dodanie podpisu Authenticode do example.exe
Jeśli napotkasz ten błąd:
The timestamp certificate does not meet a minimum public key length requirement
, należy skontaktować się z dostawcą oprogramowania, aby zezwolił na sygnatury czasowe z kluczy ECDSA.Jeśli nie ma możliwości, aby dostawca oprogramowania zezwolił na użycie normalnego punktu końcowego, możesz użyć tego starszego punktu końcowego
http://ts.ssl.com/legacy
aby uzyskać znacznik czasu z jednostki znacznika czasu RSA.Podpisywanie kodu EV
Możesz również użyć Jsign z certyfikatem do podpisywania kodu EV. W tym przykładzie użyto SSL.com Certyfikat podpisywania kodu EV zainstalowany na Klucz bezpieczeństwa z certyfikatem FIPS 140-2 Token USB.
- Po pierwsze, upewnij się, że OpenSC jest zainstalowany w Twoim systemie, aby mógł komunikować się z Twoim tokenem za pośrednictwem interfejsu API PKCS # 11. W dystrybucjach opartych na Debianie, takich jak Ubuntu, możesz zainstalować OpenSC z
apt
:sudo apt zainstaluj opensc
- Następnie utwórz plik konfiguracyjny. Nazwa pliku jest dowolna, ale w przykładowych poleceniach poniżej użyjemy
eToken.cfg
. Zwróć uwagę, że ścieżka doopensc-pkcs11.so
może się różnić w Twojej instalacji OpenSC, więc sprawdź przed utworzeniem pliku konfiguracyjnego.name = OpenSC-PKCS11 description = SunPKCS11 przez bibliotekę OpenSC = /usr/lib/x86_64-linux-gnu/opensc-pkcs11.so slotListIndex = 0
- Użyj
keytool
polecenie, aby pobrać plikalias
wartość do użycia podczas podpisywania:keytool -list -v -keystore BRAK -storetype PKCS11 -storepass TOKEN-PIN -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
- Sprawdź wyjście swojego
keytool
polecenie dla wiersza zaczynającego się odAlias name:
. Jeśli Twój token zawiera wiele certyfikatów, sprawdź daty ważności i wystawcę w danych wyjściowych z certyfikatem. Zwróć uwagę, że certyfikaty do podpisywania kodu EV wydane na YubiKey z SSL.com powinny mieć aliasCertificate for PIV Authentication
.Nazwa aliasu: Certyfikat dla uwierzytelniania PIV Typ wpisu: PrivateKeyEntry Długość łańcucha certyfikatu: 1 Certyfikat [1]: Właściciel: 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 = Organizacja prywatna, CN = SSL Corp, SERIALNUMBER = NV2, O = SSL Corp, L = Houston, ST = TX, C = US Wystawca: CN = SSL.com EV Code Signing Intermediate CA RSA R7299, O = SSL Corp, L = Houston, ST = Texas, C = US Numer seryjny: 93f57a3bac6570c781580f63172e17 Ważne od: piątek 12 kwietnia 46:04:2020 EDT 17 do: sob. 12 kwietnia 46:04:2021 EDT XNUMX
- Użyj polecenia podobnego do poniższego, aby podpisać plik i oznaczyć go datą:
jsign
polecenie zainstalowane w całym systemie:jsign --keystore eToken.cfg --alias "Certyfikat uwierzytelniania PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 PLIK DO PODPISU
- Dzięki Jsigner
.jar
file:java -jar jsign-3.1.jar --keystore eToken.cfg --alias "Certyfikat uwierzytelniania PIV" --storetype PKCS11 --storepass TOKEN-PIN --tsaurl http://ts.ssl.com --tsmode RFC3161 PLIK -PODPISAĆ
- Jeśli polecenie się powiedzie, powinieneś zobaczyć następujące dane wyjściowe:
Dodanie podpisu Authenticode do example.exe
Jeśli napotkasz ten błąd:
The timestamp certificate does not meet a minimum public key length requirement
, należy skontaktować się z dostawcą oprogramowania, aby zezwolił na sygnatury czasowe z kluczy ECDSA.Jeśli nie ma możliwości, aby dostawca oprogramowania zezwolił na użycie normalnego punktu końcowego, możesz użyć tego starszego punktu końcowego
http://ts.ssl.com/legacy
aby uzyskać znacznik czasu z jednostki znacznika czasu RSA.Zweryfikuj podpis cyfrowy
- Możesz sprawdzić, czy Twój podpis cyfrowy jest ważny, przeglądając szczegóły podpisu w systemie Windows.
- Można również użyć ZnakNarzędzie w systemie Windows, aby zweryfikować podpis cyfrowy.
signtool.exe weryfikacja / pa 'C: \ Users \ Aaron Russell \ Desktop \ example.exe' Plik: C: \ Users \ Aaron Russell \ Desktop \ example.exe Indeks algorytmu Sygnatura czasowa =========== ============================= 0 sha256 RFC3161 Pomyślnie zweryfikowano: C: \ Users \ Aaron Russell \ Desktop \ example.exe