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

Muhammad Zeeshan 2023年10月12日
  1. Java の sun.security.provider.certpath.SunCertPathBuilderException とは
  2. sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません の原因
  3. sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません の解決策
SunCertPathBuilderException: Java で要求されたターゲット エラーへの有効な証明書パスが見つかりません

今日の投稿では、要求されたターゲットへの有効な証明書パスが見つからないという潜在的な理由と、Java でのその解決策について説明します。

ただし、続行する前に、SSL 証明書を明確に理解する必要があるため、SSL 暗号化と証明書を明確に理解する必要があります。

SSL 暗号化と証明書: HTTPS 接続は、SSL 証明書がないと正しく機能しません。 公開鍵と秘密鍵のセットを使用することで、サービスまたは Web サイトの主張された ID を実証します。

秘密鍵は、ドメインによって配信されるすべてのものを暗号化または署名し、クライアント アプリは公開鍵を利用して ID を検証します。

Java の sun.security.provider.certpath.SunCertPathBuilderException とは

sun.security.provider.certpath.SunCertPathBuilderException は、Java プログラムが接続しようとしているサーバーの SSL 証明書をチェックする Java で例外を処理するためのクラスです。 このクラスは、証明書を作成したプロバイダーにちなんで名付けられました。

以下は、この問題が発生したときに開発者に表示されるエラー メッセージです。

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

SSL を使用して暗号化されたサービスにアクセスすることを含むアクション中にスローされる可能性があります。

SSL で保護された API と Web サイトは、アクセスする前に Java フレームワークによって信頼性がチェックされます。 これは、内部の信頼できるリストを調べて、署名されたルート認証局がそこにあるかどうかを確認することによって行われます。

サービスへの参照が見つからない場合、Java はこのエラーをスローします。 自己署名証明書を使用して、他の誰かのデジタル署名によって署名されたサービスにアクセスすると、常に失敗します。

sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません の原因

Java が SSL 経由で別のプログラムに接続できる唯一の方法は、HTTPS などを信頼できる場合です。信頼証明書を格納する Java ワールドには、通常 $JAVA HOME/lib/security/cacerts というトラストストアがあります。

この例外は、Java トラスト ストアに存在しない自己署名証明書または証明書チェーンによってトリガーされます。 Java は証明書を信頼しないため、アプリケーションへの接続を拒否します。

sun.security.provider.certpath.SunCertPathBuilderException: 要求されたターゲットへの有効な証明書パスが見つかりません の解決策

  1. まず、問題の原因が証明書にあるのかネットワークにあるのかを判断します。 これを確認するには、Google Chrome または任意のブラウザーで URL を開いて、機能するかどうかを確認します。

    この場合、アプリケーション クライアントの無効な証明書設定が例外の原因である必要があります。 ブラウザがアクセスできない場合は、ファイアウォールまたはネットワーク設定に問題がある可能性があります。

  2. 証明書の設定に問題があるかどうかを判断した後、サーバーの SSL 証明書を取得します。 これは、最も単純な状況ではルート証明書である可能性がありますが、ほとんどの場合、証明書チェーンと中間認証局が必要です。

    以下の手順に従って、SSL 証明書の有効性を確認できます。

  • ブラウザを開き、左上隅にあるロックをクリックします。

    URLのChromeロック

  • 次に、接続は安全ですをクリックします。

    安全な接続

  • 最後に、有効であればサイトのステータスを取得します。

    証明書は有効です

  1. 証明書の詳細をエクスポートする場合は、次の手順に従います。
  • URL バーの横にあるロック記号を選択し、[接続は安全です] > [証明書は有効です] をクリックします。

    証明書は有効です

    証明書

  • 詳細セクションをクリックし、ファイルにコピーボタンをクリックして証明書をエクスポートします。

    詳細をクリック

    ファイルにコピー

    エクスポートウィザード

  • DER でエンコードされたバイナリをエクスポートします。

    輸出先

  • 保存するディレクトリを選択し、ファイルに名前を付けます。

    参照

  • Finish をクリックすると、The export was successfully というメッセージが表示されます。

    エクスポート成功

  1. 新しい証明書を使用してトラスト ストア エントリを開始します。 キー ツール ユーティリティを使用してこれを行うことができます。

    次のコマンドを実行して、新しいトラスト ストアを作成します。

    keytool - import - file C :\cascerts\firstCA.cert - alias firstCA - Keystore myTrustStore
    
  2. プログラムを再起動してプロセスを完了します。

Muhammad Zeeshan avatar Muhammad Zeeshan avatar

I have been working as a Flutter app developer for a year now. Firebase and SQLite have been crucial in the development of my android apps. I have experience with C#, Windows Form Based C#, C, Java, PHP on WampServer, and HTML/CSS on MYSQL, and I have authored articles on their theory and issue solving. I'm a senior in an undergraduate program for a bachelor's degree in Information Technology.

LinkedIn

関連記事 - Java SSL

関連記事 - Java Error