[解決済み] [Solved] java.lang.Exception: replyとkeystoreの公開鍵が一致しない
質問
私はポート443でホストされているWebサービスにアクセスする必要があります。サービスプロバイダは、私たちと3つの証明書を共有しています。
- ABCD.cer
- CA_Certificate.cer
- CCA_Certificate.cer
SSL通信のためのフォームチェーンを作成し、キーストアに追加する必要があります。
-
keytool -keystore npci_keystore_test.jks -genkey -alias npci_client_testore
Result :- keystore npci_keystore_test.jks created.
-
keytool -import -keystore npci_keystore_test.jks -file CA_Certificate.cer -alias theCARoot
Result :- certificate CA_Certificate.cer is added to keystore.
-
keytool -import -keystore npci_keystore_test.jks -file CCA_Certificate.cer -alias theCCARoot
Result :- certificate CCA_Certificate.cer is added to keystore.
-
keytool -import -keystore npci_keystore_test.jks -file ABCD.cer -alias npci_client_testore
ステップ4で以下のような例外が発生しました。
キーストア パスワードを入力してください: (パスワードを入力すると、以下の例外が発生します)
keytool error: java.lang.Exception: replyとkeystoreの公開鍵が一致しません。
SOで検索しましたが、今のところヒットしません。
私は以下のソースに従ってストアを作成し、そこに証明書をインポートしています。 JKSキーストア
EDIT:---
証明書のインポート順序を変えてテストしてみましたが、今のところうまくいきません。
どうすればいいですか?
ご質問のリンク先では、サーバー用のSSLキーストアを作成する方法を説明していますが、これはあなたがやりたいことではありません。あなたがしたことは
- 新しいキーペアを作成する
- 鍵ストアに信頼できる証明書を追加する
- 別の信頼できる証明書をキーストアに追加する
- サーバーのSSL証明書をキーペアの証明書としてインポートしてみる
ステップ4は、SSL証明書が全く別のキーペアのために生成されたため、失敗しました。
3つの証明書は、おそらく
- ウェブサービスのSSL証明書
- SSL証明書に署名したCA証明書
- CAに署名したルート証明書
今やらなければならないことは、トラストストアにトラストアンカーを追加することです(デフォルトでは。
${JAVA_HOME}/jre/lib/security/cacerts
その結果、クライアントはウェブサービスのSSL証明書を受け入れることになります。
通常、SSLサーバはSSLハンドシェイクの際にルート証明書を除くチェーン全体をクライアントに送信します。これは、ルート証明書をトラストストアに追加する必要があることを意味します。
keytool -import -keystore ${JAVA_HOME}/jre/lib/security/cacerts -file CCA_Certificate.cer -alias theCCARoot
ウェブサービスがSSLクライアント認証を必要とする場合は、追加の手順が必要ですが、クライアント認証について言及されていないので、必要ないと思われます。
関連
-
[解決済み】Android java.lang.IllegalStateException: Android java.lang.IllegalStateException: Could not execute method of the activity
-
[解決済み】Java、"変数名 "を変数に解決することができない
-
[解決済み】"比較メソッドはその一般契約に違反する!"
-
[解決済み】不正な反射的アクセスとは?
-
[解決済み] StringBuilderをクリアまたは空にするにはどうすればよいですか?重複] [重複] [重複] [重複] [重複] [重複
-
[解決済み】Eclipseで「パッケージエクスプローラー」ビューが見つからない
-
[解決済み] 証明書をインポートした後のJava Keytoolのエラー、"keytool error: java.io.FileNotFoundException & Access Denied" 。
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み】.cer証明書をjava keystoreにインポートする方法は?
-
[解決済み】トラストストアとキーストアの比較 - keytoolで作成する場合
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】StringUtils.isBlank() vs String.isEmpty()
-
[解決済み】「error: '.class' expected」の意味と修正方法について
-
[解決済み】非閉鎖文字リテラルエラー
-
[解決済み】Mockitoでモックからチェックされた例外を投げる
-
[解決済み】破損したjarファイル
-
[解決済み】Javaで文字列をコピーするにはどうしたらいいですか?
-
[解決済み】Java Error "Exception in thread "main" java.util.InputMismatchException" Array プログラムで発生。
-
[解決済み] JavaでSSLピアが正しくシャットダウンされない
-
[解決済み】intがnullであるかどうかを確認する方法
-
[解決済み】 executeQuery()でデータ操作文が発行できない。)