Jarsignerコマンド
このトピックのJarsignerコマンドを使用する場合は、「KeytoolおよびJarsignerの前提条件」で説明されているコマンド・フラグを使用してください。
キーを使用したJarファイルの署名
この操作は、キーを使用してJARファイルに署名します。このコマンドは、jarsignerとJCEを使用して実行します。
コマンド構文:
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>
「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
」という警告メッセージを受け取った場合、ローカルキーストアには署名付き証明書がありません。
証明書チェーン・エラーは、次の操作で解決できます。
-
keytoolプログラムを使用して、HSMのキーに対応するCSRを生成します。
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 \
次に注意してください:
- CSRを生成するには、
-certreq
を使用します。 -alias
は、指定されたキーの別名を示します。この別名を指定することで、キーがキーストアに存在しない場合、DKKSキーストアはHSMでこの別名に一致するラベルを検索します。-keyalg rsa -keysize 4096
は、キー・ペアのアルゴリズムおよびキー・サイズを指定します-sigalg sha512withrsa -dname
は、CSRの詳細を示します。
- CSRを生成するには、
-
opensslを使用して、新しい自己署名ローカル・カテゴリX.509証明書(.crtファイル)およびRSA秘密キー(.pemファイル)を作成します。
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
-
CA所有者証明書をキーストアに挿入します。
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 \
次に注意してください
-importcert
は、証明書のインポートに使用されます。-noprompt
は、プロンプトを使用しないようにプログラムに指示します。-alias
は、CA証明書が割り当てられる別名を指定します-file
は証明書のファイルです-keypass
は、キーのパスワードを設定します。
-
証明書を一覧表示して、ローカルCA証明書がキーストア内にあることを確認します。
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 \
このコマンドでは次のような出力を返します。
Your keystore contains 1 entry
-
opensslを使用して、生成されたCSRおよびローカル・カテゴリCrtを使用してX.509証明書を作成します。次に、新しい証明書のシリアル番号を設定します。
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
-
keytoolを使用して、<output-crt>.crtファイルをキーストアにインポートします。
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 \
-
証明書が正常にインポートされたことを確認します。
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 \
プログラムは、次のような出力を返します。
Your keystore contains 1 entry
jarファイルに新しいキーで署名すると、作成時に新しいキーの証明書がローカル・キーストアに追加されるため、署名操作によって証明書チェーン・エラーが生成されないことが保証されます。keytoolを使用して新しいキーを作成するには、「キー・ペアの生成」の手順を使用します。
JARファイル署名の詳細の確認
-verify
フラグを使用して、署名付きJARファイルの署名詳細(ファイルの署名に使用されたキーを含む)を確認します。このコマンドは、jarsignerとJCEを使用して実行します。
コマンド構文:
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>