2016-04-19 26 views
0

https(SSL)を介してRESTサービスに接続しようとしていて、動作していませんでした。エラーはPKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targetです。私は、認証局(www.identrust.comという場所)がJREのデフォルトキーストア内の信頼できる当局のデフォルトリストに追加されていないという事実を追跡しました。 Will the cross root cover trust by the default list in the JDK/JRE?またはWhich browsers and operating systems support Let’s Encryptを参照してください。認証局がJREにない場合のJava SSL接続ソリューション

認証(Java: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target)を無視するか、証明書をJREキーストア(“unable to find valid certification path to requested target”, but browser says it's OK)にインポートするなどのいくつかの解決策がありますが、Java SEアプリケーションをSSLで正常に接続する必要があります。 www.identrust.comからの証明書と他の有効なサイトを持っています。言い換えれば、私はすべてのJDKアップデートでJREキーストアを変更したくないので、証明書を無視したくありません。

自分のウェブサイト(Certificate Chain Download Instructions)からidentrustの証明書を取得できるので、アプリケーションの「信頼チェーン」に追加するにはどうすればよいですか?

答えて

2

サーバー証明書のチェックを無視することは非常に悪く、安全ではありません。

JREキーストアに証明書をインポートすることも悪いことです.JREが年に数回更新されることを考えると、通常は証明書を再度インポートする必要があります。

欠けているCA証明書を明示的に信頼する(またはサーバー証明書を直接信頼する)のが最適です。これは、信頼できる証明書を別のJavaキーストアに配置し、このキーストアをアプリ(JARファイルなど)に組み込むことで可能になります。あなたは、システムのプロパティjavax.net.ssl.trustStoreを使用するか、私見を使用して、カスタムトラスト・ストアを提供することができます

は、ここで説明したような方法カスタムSSLContextの実装を使用して好適:How do I accept a self-signed certificate with a Java HttpsURLConnection?

+0

私はフィードバックに感謝、に来てかなりの結論を。 –

関連する問題