自己署名証明書を、デフォルトですべてのJavaアプリケーションで利用可能なJavaキーストアに正しくインポートする方法は?
自己署名証明書をJavaにインポートして、SSL接続を確立しようとする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.SSSLHandshakeException: sun.security.validator.ValidatorException.PKIXパスの構築に失敗しました。PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
133
3
Windowsでは、最も簡単な方法は、プログラムportecleを使用することです。
1.portecleをダウンロードしてインストールします。 1.まず、プログラムの実行に使用されているJREまたはJDKを100%確認してください。64ビットのWindows 7では、かなりの数のJREが使用されている可能性があります。Process Explorerで確認することもできますし、次のような方法もあります。
System.out.println(System.getProperty("java.home"));
1.JAVA_HOME_libsecurity\cacertsを別のフォルダにコピーします。 1.PortecleでFile > Open Keystore Fileをクリックします。 1.cacertsファイルを選択する。 1.パスワードを入力する:changeit 1.ツール > 信頼できる証明書のインポート」をクリックする 1.ファイル mycertificate.pem を探す 1.インポート]をクリックする 1.トラストパスに関する警告が表示されるので、[OK]をクリックします。 1.証明書の詳細が表示されるので、OKをクリックする。 1.はい」をクリックして、証明書を信頼できるものとして受け入れる。 1.エイリアスの入力を求められたら「OK」をクリックし、証明書をインポートしたというメッセージが表示されたら再度「OK」をクリックします。 1.保存」をクリックします。これを忘れないようにしないと、変更内容が破棄されます。 1.cacertsファイルを元の場所にコピーする。**Linuxの場合:***。
すでにSSL証明書を使用しているWebサーバーから、次のようにしてSSL証明書をダウンロードできます。
オプションで証明書の情報を確認します。
証明書を Java cacerts キーストアにインポートします。
編集します。
最近では、ssls.comから年間5ドルで証明書を入手できるので、証明書をキーストアに追加する必要はあまりありません。念のため、そのようなオプションもあります。
結局、証明書をキーストアに追加する小さなスクリプトを書いたので、より使いやすくなりました。
最新版は https://github.com/ssbarnea/keytool-trust から入手できます。