Jarsigner-Befehle
Wenn Sie die Jarsigner-Befehle in diesem Thema verwenden, stellen Sie sicher, dass Sie die unter Voraussetzungen für Keytool und Jarsigner beschriebenen Befehls-Flags verwenden.
JAR-Dateien mit einem Schlüssel signieren
Dieser Vorgang signiert eine JAR-Datei mit einem Schlüssel. Der Befehl wird mit jarsigner und JCE ausgeführt.
Syntax:
jarsigner \
-J-cp -J<dedicated_kms_jce_jar_path> \
-J-Djava.security.properties=<java_security_override_file>
-keystore <local-keystore-name>.dkms -storepass <example-password> -storetype DKKS -keypass <example-password> \
-signedjar <signed-jar-name> \
-digestalg <digest-algorithm> -sigalg <signature-algorithm> -certs <jar-to-be-signed>
<hsm-key-alias>
Wenn eine Warnmeldung mit "The signer's certificate chain is invalid. Reason: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targeThe signer's certificate chain is invalid" angezeigt wird, fehlt dem lokalen Keystore ein signiertes Zertifikat.
Sie können einen Zertifikatskettenfehler mit den folgenden Vorgängen beheben:
-
Verwenden Sie das Keytool-Programm, um einen CSR zu generieren, der dem Schlüssel auf dem HSM entspricht.
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -certreq \ -alias <example-alias> \ -file <CSR-stored-file>.csr \ -keyalg <key-algorithm> -keysize <key-size> -sigalg <signature-algorithm> \ -dname <example-distinguished-name> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \Hinweis:
-
-certreqwird zur Generierung eines CSR verwendet. -
-aliasgibt den Alias für den angegebenen Schlüssel an. Wenn dieser Alias angegeben wird und der Schlüssel nicht im Keystore vorhanden ist, sucht der DKKS-Keystore im HSM nach einem Label, das diesem Alias entspricht. -
-keyalg rsa -keysize 4096gibt den Algorithmus und die Schlüsselgröße für das Schlüsselpaar an. -
-sigalg sha512withrsa -dnamestellt die Details für den CSR bereit
-
-
Verwenden Sie openssl, um ein neues selbstsigniertes lokales ca. X.509-Zertifikat (.crt-Datei) und einen privaten RSA-Schlüssel (.pem-Datei) zu erstellen.
openssl req -x509 -newkey rsa:4096 -sha512 -nodes \ -out <local-ca-crt>.crt \ -outform pem -keyout <local-ca-pem>.pem \ -subj /C=US/ST=CA/L=SanJose/O=ExampleCA/OU=Signing/CN=exampleca.com -
Fügen Sie das Zertifikat des CA-Eigentümers in den Keystore ein.
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -importcert -noprompt \ -alias <local-ca-cert-alias> \ -file <local-ca-crt>.crt \ -keypass <example-password> -keystore <keystore-name>.dkms -storepass <example-password> -storetype DKKS \Beachten Sie Folgendes
-
-importcertwird zum Importieren eines Zertifikats verwendet -
-nopromptweist das Programm an, keine Prompts zu verwenden -
-aliasgibt den Alias an, dem das CA-Zertifikat zugewiesen wird -
-fileist die Datei für das Zertifikat -
-keypasslegt ein Kennwort für den Schlüssel fest
-
-
Listen Sie das Zertifikat auf, um sicherzustellen, dass sich das lokale ca-Zertifikat im Keystore befindet:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -list \ -alias <local-ca-cert-alias> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \Der Befehl gibt eine Ausgabe ähnlich der Folgenden zurück:
Your keystore contains 1 entry -
Erstellen Sie mit openssl ein X.509-Zertifikat mit der generierten CSR und lokalen ca Crt. Legen Sie dann die Seriennummer für das neue Zertifikat fest:
openssl x509 -req -days 365 \ -in <CSR-stored-file>.csr \ -CA <local-ca-crt>.crt \ -CAkey <local-ca-pem>.pem \ -set_serial <example-serial-number> \ -out <output-crt>.crt -
Importieren Sie mit keytool die Datei <output-crt>.crt in den Keystore:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -importcert -noprompt \ -alias <output-crt-alias> \ -file <output-crt>.crt \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \ -
Bestätigen Sie, dass das Zertifikat erfolgreich importiert wurde:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -list \ -alias <output-crt-alias> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \Das Programm gibt eine Ausgabe ähnlich der folgenden zurück:
Your keystore contains 1 entry
Wenn Sie eine JAR-Datei mit einem neuen Schlüssel signieren, wird sichergestellt, dass der Signaturvorgang keinen Zertifikatskettenfehler verursacht, da das Zertifikat des neuen Schlüssels beim Erstellen zum lokalen Keystore hinzugefügt wird. Verwenden Sie die Anweisungen unter Schlüsselpaar generieren, um einen neuen Schlüssel mit Keytool zu erstellen.
Signaturdetails der JAR-Datei prüfen
Verwenden Sie das Flag -verify, um die Signaturdetails einer signierten JAR-Datei zu prüfen, einschließlich des Schlüssels, mit dem die Datei signiert wurde. Der Befehl wird mit jarsigner und JCE ausgeführt.
Syntax:
jarsigner \
-J-cp -J<dedicated_kms_jce_jar_path> \
-verify \
-keystore <local_keystore><local-keystore-name>.dkms -storepass <example-password> -storetype DKKS -keypass <example-password> \
-certs <signed-jar-name>
<example-key-alias>