CAからの公開証明書を持っています。 Javaこの証明書を使用してSSL接続を作成します。参照しました 特定の接続で異なる証明書を使用するにはどうすればよいですか? および 自己とのJava SSL接続-完全なキーストアをクライアントにコピーせずに署名された証明書 。これから、証明書をキーストアにインポートする必要があることを理解しています。しかし、CAからキーストアを受け取っていません。キーストアを作成し、パブリックをインポートしようとしましたそれに証明書。しかし、私は次のエラーを受け取ります:
keytoolエラー:Java.lang.Exception:応答の公開鍵とキーストアが一致しません
CAからのキーストアが必要ですか、それとも何か問題がありますか?
キーストアの作成に使用されるコマンド:
keytool -genkey -alias Tomcat -keyalg RSA -keystore keystore.jks
証明書をインポートするために使用されるコマンド:
keytool -import -v -alias Tomcat -file signed-cert.pem -keystore keystore.jks
証明書のサインインプロセスを適切に実行していないと思います。このディスカッションをチェックしてください https://forums.Oracle.com/thread/153394 以下の手順に従って適切に実装してください:
キーストアを作成するkeytool -genkey -keyalg RSA -keystore test.keystore -validity 360
(これにより、「mykey」のエイリアスを持つキーストアとキー(DC)が生成されます)
証明書署名要求(CSR)を作成します。 keytool -certreq -keyalg RSA -file test.csr -keystore test.keystore
(テキストCSRファイルを生成します)
署名された証明書が生成されました: http://www.instantssl.com/ssl-certificate-support/csr_generation/ssl-certificate-index.html
インポートされた署名済み証明書(ステップ3で署名済み証明書を貼り付ける場合はCRLFに注意してください)keytool -import -alias newkey -file <signed cert file> -keystore test.keystore
(?これは、ステップ1とは異なるエイリアスを持っていることが重要です(デフォルトでは "mykey"です)?
クライアント用に公開鍵をエクスポートkeytool -export -alias mykey -file test.publickey -keystore test.keystore
サーバーシステム上
トラストストアを作成するkeytool -genkey -keyalg RSA -keystore test.truststore -validity 360
(これにより、「mykey」のエイリアスを持つキーストアとキー(DC)が生成されます)
公開鍵のインポート-SSLのテスト用SOAPクライアント経由のサービスkeytool -import -file test.publickey -keystore test.truststore
問題は、ステップ1と6のエイリアスをデフォルトで「mykey」にすることでした。手順6を次のように変更した場合:keytool -genkey -alias testAlias -keyalg RSA -keystore test.truststore -validity 360
上記のステップ7を使用してインポートできます(ただし、「-alias apublickey
"手順7)でこれはうまくいきました。
keyStore Explorer guiツールを使用して、キーストア/証明書を生成し、証明書をキーストアにインポート/エクスポートできます。
キーストアにSSL証明書をインポートするときに、同じ問題に直面しました。私の場合、ルートCAの証明書がチェーンにありませんでした。ルート証明書をファイルにエクスポートし、手動でキーストアにインポートしました。
Keystore -genkeyに同じエイリアスを使用しているため、エイリアスをTomcatから他のエイリアスに変更してください