ホームページ >Java >&#&チュートリアル >Java プログラムが「要求されたターゲットへの有効な証明書パスが見つかりません」というメッセージで HTTPS ファイルのダウンロードに失敗するのはなぜですか?

Java プログラムが「要求されたターゲットへの有効な証明書パスが見つかりません」というメッセージで HTTPS ファイルのダウンロードに失敗するのはなぜですか?

DDD
DDDオリジナル
2024-12-20 18:12:16353ブラウズ

Why Does My Java Program Fail to Download HTTPS Files with

要求されたターゲットへの有効な証明書パスが見つかりません

Java 経由で HTTPS サーバーからファイルをダウンロードすると、次のエラーが発生する場合があります:

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

を理解するエラー

このエラーは、クライアント/サーバー認証に問題があることを示します。 HTTPS サーバーは証明書を使用して安全な接続を確立します。ダウンロードを続行するには、クライアント (Java プログラム) がサーバーの証明書を信頼する必要があります。

考えられる原因: サーバーに自己署名証明書があります

自己署名証明書は信頼できる機関によって発行されていない。 Java のデフォルトの信頼ストアにはこれらの証明書が含まれていないため、認証エラーが発生します。

解決策

クライアント/サーバー認証を無視するには、サーバーの証明書を Javaトラストストア。方法は次のとおりです:

1.証明書を取得します:

  • ブラウザを使用して Web サイトに移動します。
  • アドレス バーの鍵アイコンをクリックします。
  • 「証明書」を選択します。証明書を CER または CRT ファイルとしてエクスポートします。

2.証明書をトラスト ストアに追加します。

これを行うには 2 つの方法があります。

a. keytool の使用:

  • コマンド プロンプトを開きます。
  • JAVA_HOME/jre/lib/security に移動します。
  • 次のコマンドを実行します。
keytool -import -trustcacerts -alias myalias -file certificate.cer

b. -D パラメータの使用:

  • 次のパラメータを使用して Java アプリケーションを実行します:
-Djavax.net.ssl.trustStore=mytruststore.jks

3. certificate.cer と mytruststore.jks を実際のファイル名に置き換えます。

証明書をトラスト ストアに追加した後、Java プログラムは認証エラーなしで HTTPS サーバーからファイルをダウンロードできるようになります。 .

以上がJava プログラムが「要求されたターゲットへの有効な証明書パスが見つかりません」というメッセージで HTTPS ファイルのダウンロードに失敗するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。