1. ホーム
  2. java

[解決済み] javax.net.ssl.SSLHandshakeException Errorを解決する方法は?

2022-03-03 23:29:25

質問

VPNで接続し、インベントリAPIをセットアップして商品リストを取得したところ、正常に動作しています。Webサービスから結果を取得し、UIにバインドします。また、Expressチェックアウトを行うためにPayPalをアプリケーションに統合しましたが、支払いのために呼び出しを行うと、このエラーに直面します。私は、バックエンド処理にサーブレットを使用しています。どなたかこの問題を解決する方法を教えてください。

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: 
PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException:
unable to find valid certification path to requested target

解決方法は?

まず、接続しようとするサーバーから公開証明書を取得する必要があります。これは、サーバーの管理者に連絡して求めるなど、さまざまな方法で行うことができます。 OpenSSLを使用してダウンロードする あるいは、このサーバーはHTTPサーバーのようなので、任意のブラウザで接続し、ページのセキュリティ情報を表示し、証明書のコピーを保存することができます。(Googleは、あなたの特定のブラウザで何をすべきか、正確に教えてくれるはずです)。

証明書をファイルに保存したので、それをJVMのトラストストアに追加する必要があります。以下の通りです。 $JAVA_HOME/jre/lib/security/ JREの場合、または $JAVA_HOME/lib/security というファイルがあり、JDKの場合は cacerts この証明書には、よく知られている認証局の公開証明書が含まれています。新しい証明書をインポートするには、cacertsへの書き込み権限を持つユーザーとしてkeytoolを実行します。

keytool -import -file <the cert file> -alias <some meaningful name> -keystore <path to cacerts file>

ほとんどの場合、パスワードを要求されるでしょう。Javaに同梱されているデフォルトのパスワードは changeit . ほとんどの人はこれを変更しません。これらの比較的簡単な手順を完了すると、あなたは安全で、正しいサーバと正しいサーバとだけ話していることが保証された通信を行うことができます(そのサーバが秘密鍵を失わない限りは)。