トラスト ストアに追加する必要があるのはフィンガープリントではなく、実際の証明書です。
サーバー証明書自体を追加するか、CA 証明書の 1 つをチェーンに追加できます (特定のサーバーだけでなく、その CA からのすべての証明書を信頼する場合)。
証明書が何であるかを調べるには、OpenSSL を使用できます。
openssl s_client -showcerts -connect your.host.name:443
(ホスト名と 443 を実際に使用しているポートに置き換えます。)
間のブロック--BEGIN/END CERT...--
は、PEM 形式の証明書です。openssl x509 -text -noout
を使用して(そしてそこに各ブロックを貼り付けて)内容を確認できます。
インポートする証明書をプレーン テキスト ファイル (例: certificate.pem
) に保存します。信頼できる証明書のみをインポートする必要があります。ここにはある種の信仰の飛躍があります。(たとえば、ブラウザに接続して、キー マテリアルが一致するかどうかを確認することをお勧めします。)
トラストストアにインポートするには、次を使用します。
keytool -importcert -keystore truststore.jks -file certificate.pem
(エイリアス wit を指定する必要がある場合があります-alias some_name_you_choose
。)
これがデフォルトのトラストストアに影響するようにする場合は、Java ホーム ディレクトリtruststore.jks
の へのパスに置き換えます (デフォルトのパスワードは である必要があります)。lib/security/cacerts
changeit
いずれにせよ、ターゲットサーバーはよく知られている CA から来ているように見えるため (そして、JRE のいくつかのバージョンで動作します)、最も簡単な修正は、cacerts
動作する JRE からコピーを取得して手動でファイルを更新することです。結局のところ、JSSE リファレンス ガイドには次のように書かれています。
重要な注意: JDK は、/lib/security/cacerts ファイル内に限られた数の信頼できるルート証明書と共に出荷されます。keytool に記載されているように、このファイルをトラストストアとして使用する場合、このファイルに含まれる証明書を維持 (つまり、追加/削除) するのはユーザーの責任です。
接続するサーバーの証明書構成によっては、追加のルート証明書を追加する必要がある場合があります。適切なベンダーから必要な特定のルート証明書を取得します。
Qualys SSL Labs testerで示されているように、証明書チェーンの順序に問題があることは確かです (このサイトでは正しくありません) 。