TomcatサーバーにSSLをインストールし、発行者からのこれらの指示に従います https://knowledge.rapidssl.com/support/ssl-certificate-support/index?page=content&actp=CROSSLINK&id=SO16181 そしてそれは述べています:
Verify the following information:
The SSL certificate is imported into the alias with the "Entry Type" of
PrivateKeyEntry or KeyEntry. If not, please import the certificate into
the Private Key alias.
証明書(Tomcat)をインポートするとき、次を使用しています。
keytool -import -trustcacerts -alias your_alias_name -keystore your_keystore_filename
-file your_certificate_filename
しかし、そうすると、trustCertEntryとしてインポートされます
Keystore type: JKS
Keystore provider: Sun
Your keystore contains 3 entries
primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
Tomcat, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
エイリアスTomcatをPrivateKeyEntryとしてインポートするにはどうすればよいですか?
-trustcacerts
オプションを取り除きます。 CA証明書ではありません。 your証明書です。そして、秘密鍵がすでに持っていたのと同じエイリアスを使用します。
これらのCAガイドラインは少し誤解を招く恐れがあります。 @EJPは、証明書に-trustcacerts
を使用すべきではないと正しく述べています。
さらに、このCAドキュメントでは、プライマリCA証明書と中間CA証明書を別々の操作でインポートすることを提案しています。これにより、次のような結果が得られます。
primaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
secondaryca, Jul 26, 2014, trustedCertEntry,
Certificate fingerprint (SHA1): <snip>
Tomcat, Jul 26, 2014, PrivateKeyEntry,
Certificate fingerprint (SHA1): <snip>
残念ながら、このようにkeystoreにCA証明書をインポートしても意味がありません。 (これは truststore で役立ちますが、使用しているCAはおそらくデフォルトのトラストストアにすでに存在します。)
keystoreに証明書のCA証明書があると、中間証明書が必要なときに完全な証明書チェーンを提示するのに役立ちます。ただし、キーマネージャー(カスタム実装でない場合)は、エンドエンティティ証明書(PrivateKeyEntry内)の隣に適切なCA証明書を見つけたとしても、チェーンを構築しません。
これらの証明書togetherを、秘密鍵があるエントリに対してチェーンとしてインポートする必要があります。これを行うには、証明書をテキストファイル(PEMエンコード)で連結します。最初にサーバー証明書を発行し、次に発行に使用した証明書などを連結します。次に、その秘密鍵エイリアスを使用して、そのファイルをキーストアにインポートします。 (これは this question とまったく同じ問題ですが、サーバー証明書があります。)
(CAが証明書ファイルをチェーンとして既に提供しているかどうかはわかりませんが、一般的に、少なくとも1つのファイルでのみ証明書を取得し、別のファイルで中間CA証明書を取得します。 --BEGIN/END CERT--
の間の複数のブロックについては言及しませんが、そのスクリーンショットの例では、その単一のエイリアスに対して証明書の長さが4になっています。
@jwwが質問のコメントで指摘したように、クライアントがすでに信頼している、または理由がないため、このチェーンに「ルート」CA証明書(自己署名証明書)は必要ありません。送信時に信頼してください。チェーンに含めることは間違っていませんが、無意味であり、ネットワークのオーバーヘッドが少し増える可能性があります。
証明書を追加しようとし、それが秘密鍵になることを期待します-2つの異なるものの間の混乱。
一般に、キーストア(.jks)を作成すると、内部に秘密キーが含まれます。空の場合(削除された場合)、キーと証明書からバンドル(.p12ファイル)を生成する必要があります。
新しい無料のキーと証明書を作成するには、このopenSSl https://zerossl.com の実装を使用できます。
次に、それらから生成する(.p12)バンドルファイルのキーと証明書を取得しました:(Linuxマシン上)
openssl pkcs12 -export -in [filename-certificate] -inkey [filename-key] -name [Host] -out [filename-new-PKCS-12.p12]
次のコマンドを実行して、バンドルファイル(.p12ファイル)をキーストア(.jks)に追加します。
keytool -importkeystore -deststorepass [password] -destkeystore [filename-new-keystore.jks] -srckeystore [filename-new-PKCS-12.p12] -srcstoretype PKCS12