SSL 接続を確立しようとするすべての Java アプリケーションがこの証明書を信頼するように、自己署名証明書を Java にインポートしたいと考えています。
これまでのところ、私はそれをインポートすることができました
keytool -import -trustcacerts -noprompt -storepass changeit -alias $REMHOST -file $REMHOST.pem
keytool -import -trustcacerts -noprompt -keystore cacerts -storepass changeit -alias $REMHOST -file $REMHOST.pem
それでも、走ろうとするとHTTPSClient.class
まだ次のものを受け取ります:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX パスの構築に失敗しました: sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません
ベストアンサー1
Windowsの場合最も簡単な方法はプログラムを使うことです玄関。
- portecleをダウンロードしてインストールします。
- まず、プログラムを実行するためにどの JRE または JDK が使用されているかを 100% 確実に把握してください。64 ビット Windows 7 では、JRE がかなり多く存在する可能性があります。Process Explorer を使用すると、この作業が簡単になります。または、次のツールを使用することもできます。
System.out.println(System.getProperty("java.home"));
- JAVA_HOME\lib\security\cacerts ファイルを別のフォルダーにコピーします。
- Portecleでファイル > キーストアファイルを開くをクリックします。
- cacertsファイルを選択する
- このパスワードを入力してください: changeit
- ツール > 信頼できる証明書のインポートをクリックします
- mycertificate.pemファイルを参照します
- インポートをクリック
- 信頼パスに関する警告に対して [OK] をクリックします。
- 証明書の詳細が表示されたら、「OK」をクリックします。
- 証明書を信頼できるものとして受け入れるには、[はい] をクリックします。
- エイリアスの入力を求められた場合は「OK」をクリックし、証明書がインポートされたことが表示されたらもう一度「OK」をクリックします。
- 「保存」をクリックします。これを忘れると変更は破棄されますので、忘れないようにしてください。
- cacerts ファイルを元の場所にコピーします。
Linuxの場合:
次のようにして、すでに SSL 証明書を使用している Web サーバーから SSL 証明書をダウンロードできます。
$ echo -n | openssl s_client -connect www.example.com:443 | \
sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /tmp/examplecert.crt
必要に応じて証明書情報を確認します。
$ openssl x509 -in /tmp/examplecert.crt -text
証明書を Java cacerts キーストアにインポートします。
$ keytool -import -trustcacerts -keystore /opt/java/jre/lib/security/cacerts \
-storepass changeit -noprompt -alias mycert -file /tmp/examplecert.crt