ポート443でホストされているWebサービスにアクセスする必要があります。サービスプロバイダーは3つの証明書を共有しています。
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エラー:Java.lang.Exception:返信とキーストアの公開キーが一致しません
私はすでにSOで検索を行っていますが、これまでのところ運はありません。
ストアを作成し、そこに証明書をインポートするには、以下のソースに従います。 JKSキーストア
編集:---
証明書のインポート順序を変更してテストしましたが、これまでのところ運はありません。
質問のリンクは、サーバーのSSLキーストアを作成する方法を説明していますが、これはあなたがしたいことではありません。あなたがしたことは:
SSL証明書が完全に異なるキーペアに対して生成されたため、手順4は失敗します。
3つの証明書はおそらく次のとおりです。
ここで必要なのは、トラストストアにトラストアンカーを追加することです(デフォルトでは${Java_HOME}/jre/lib/security/cacerts
)、クライアントがWebサービスのSSL証明書を受け入れる結果。
通常、SSLサーバーは、SSLハンドシェイク中にルート証明書を除くチェーン全体をクライアントに送信します。これは、ルート証明書をトラストストアに追加する必要があることを意味します。
keytool -import -keystore ${Java_HOME}/jre/lib/security/cacerts -file CCA_Certificate.cer -alias theCCARoot
WebサービスでSSLクライアント認証が必要な場合は追加の手順が必要ですが、クライアント認証については一度も言及したことがないので、それは必要ないと思います。
ここでの問題は、JKSストアの作成中に使用したものと同様の証明書のインポート中に使用したエイリアスです。エイリアスを変更するだけで問題が解決します。ソースドキュメント[1]は、それに応じて修正する必要があります。
[1] http://docs.Oracle.com/cd/E19509-01/820-3503/ggfgo/index.html
証明書をインポートする4つのポイント(エラーが発生する場所:keytool error:Java.lang.Exception:返信とキーストアの公開キーが一致しません)で、エイリアスを変更してください。キーストアのエイリアスにすでに使用されているため、エイリアスはnpci_client_testoreであってはなりません。
私の場合、「CAに署名したルート証明書」がチェーンにありませんでした。適切なルートCA証明書があるかどうかを確認してください。そうでない場合は、中間CAからエクスポートして、キーストアにインポートします。ルートCAをキーストアにインポートするとうまくいきました。
Tomcat8でホスティングしているのと同じ例外エラー(キーストアが一致しません)がありました。キーストアの作成中にwrong domain name
またはno domain name
を入力した場合は、キーストアファイルを再作成し、CSRをライセンス/認識/承認した認証機関(CA)に再送信する必要があります。デジタル署名証明書(私の場合はGodaddy)を発行します。
キーストアファイルを作成するコマンドは次のとおりです。
keytool -keysize 2048 -genkey -alias Tomcat -keyalg RSA -keystore Tomcat.keystore
keytool -importkeystore -srckeystore Tomcat.keystore -destkeystore Tomcat.keystore -deststoretype pkcs12
(ドメイン名を入力する必要があります。プロンプトが姓と名を要求するとき、それはを要求しています完全修飾ドメイン名(FDQN)例:www.example.com)。市、州、県から-do not abbreviate
次のコマンドを入力してCSRを作成します(Tomcat.keystoreの場所と同じディレクトリから)。
keytool -certreq -keyalg RSA -alias Tomcat -file myFQDN.csr -keystore Tomcat.keystore
注:以前のエラーのため、WindowsコンソールからGodaddy証明書をすべて削除する必要がありました( [〜#〜] mmc [〜#〜] )。
証明機関から証明書ファイルの準備ができたら。ファイルをダウンロードし、2つの.crtファイルをそれぞれダブルクリックして、Windowsに再インストールします(ローカルマシンに自動的にインストールすることを選択します)。 Tomcat.keystoreファイルをバックアップしてから、これらの証明書ファイルをORDERからTomcat.keystoreファイルに(最初から)同じ順序でインポートします。次の例:
keytool -import -alias root -keystore Tomcat.keystore -trustcacerts -file gdig2.crt.pem
keytool -import -alias intermed -keystore Tomcat.keystore -trustcacerts -file Gd_bundle-g2-g1.crt
keytool -import -alias Tomcat -keystore Tomcat.keystore -trustcacerts -file namewithnumbersandletters.crt
Server.xmlを更新したことを確認してから、Tomcatを再起動します
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" />
<Connector
URIEncoding="UTF-8"
SSLEnabled="true"
clientAuth="false"
keystoreFile="C:\Program Files\Java\jdk1.8.0_181\bin\Tomcat.keystore"
keystorePass="changeme"
maxThreads="200"
port="443"
scheme="https"
secure="true"
sslProtocol="TLS" />
ほら!ドメインを参照すると、ロックされたアイコン(セキュア接続)が表示されます。
これは私のために働いた:
keytool -keystore yourkeystorename -importcert -alias certificatealiasname -file certificatename.cer