1

HTTPS 経由で webaplication と REST API をホストする Web サーバーがあります。Symantech によって署名された *.thedomain.com の証明書がサーバーにインストールされています。「thedomain」は例を示すためのものです。実際のドメインではありません。

サーバーから提供された証明書は、何もせずにどのブラウザーのデフォルト設定でも受け入れられるため、トラスト チェーンに問題はないと思います。

現在、このサーバーが提供する残りの API 用に Java でクライアントを作成しようとしています。

問題は、sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path要求されたターゲットがスローされることです。私がこれを正しく理解していれば、JDK でサポートされている CA が、サーバーを適切に認証できる有効な認証パスを提供していないことを意味します。

サーバーを認証しながら、このエラーの良い解決策は何でしょうか? JDK (7) ではなく、Web ブラウザがサーバーを認証できるのはなぜですか?

4

2 に答える 2

4

CA 証明書は、JDK が使用するキーリングではなく、ブラウザーのキーリングにあるため、ブラウザーで機能します。

以下を使用keytoolして、CA 証明書を JDK キーリングに追加します。

keytool -keystore cacerts -importcert -alias aliasOfTheCertificate -file FileNameOfTheCertificate.cer 

コマンドラインから。多くの Linux ディストリビューションでは、すべての信頼されたルートを含む ca-certs-java パッケージが既に出荷されていることに注意してください。可能であれば、それを使用してみてください。

于 2013-10-09T15:18:13.493 に答える