ETCインターフェイスの呼び出し時にPKIXパス構築失敗エラーが発生する

最近ETCプロジェクトで作業しているときに、ETCインターフェースを呼び出すときにjavax.net.ssl.SSLHandshakeExceptionが発生しました。

完全な例外情報:

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

上記の例外情報により、次のプロンプトが表示されます。要求ターゲットが有効な証明書パスを見つけられませんでした。HTTPSセキュアネットワーク通信プロトコルを使用してETCインターフェースにアクセスします。この問題の原因は、アプリケーションが配置されているJVM環境が正しい証明書ファイルを見つけられないことです。

実際、ソリューションは非常に単純です。つまり、インターフェースアドレスの証明書をダウンロードして、JVMが配置されている環境にインストールします。具体的な手順は次のとおりです。

  • 手順1:アプリケーションがブラウザで呼び出す必要のあるインターフェイスのアドレスを入力し、F12キーを押して、[セキュリティ]列の[証明書の表示]ボタンをクリックします。証明書
    ここに画像の説明を挿入
    の名前を覚えておいてください。
    ここに画像の説明を挿入

  • ステップ2:「実行」certmgr.msc入力し、証明書管理ウィンドウを開いて、ダウンロードする必要のある証明書ファイルを見つけます。
    ここに画像の説明を挿入

  • 手順3:ダウンロードする必要のある証明書ファイルを選択し、マウスを右クリック-> [すべてのタスク]-> [エクスポート]をクリックして、証明書をローカルディスクにエクスポートします。
    ここに画像の説明を挿入

  • 手順4:コマンドウィンドウを開き、コマンドを実行しkeytoolて証明書をローカル環境にインストールします。

参数说明:
  -import 导入证书操作
  -alias 秘钥对的别名
  -keystore 秘钥对的路径及名称
  -file 证书文件的路径
  -trustcacerts 告诉keytool您要将其导入作为受信任的证书

例えば:

keytool -import -alias cacerts -keystore cacerts -file D:\JavaEE\JDK\jdk1.8.2\jre\lib\security\zsetc.crt -trustcacerts

キーストアのパスワードを入力し、Enterキーを押します。
ここに画像の説明を挿入
インストールされている証明書を表示する場合は、次のコマンドを実行できます。

keytool -list -v -alias cacerts -keystore cacerts -storepass 秘钥库的口令

証明書の削除:

keytool -delete -alias cacerts -keystore cacerts -storepass 秘钥库的口令

上記の方法に加えて、3つの新しいルート証明書がJDK 8u101バージョンに追加されました(https://bugs.openjdk.java.net/browse/JDK-8154757)。
ここに画像の説明を挿入
したがって、上記の問題はJDKをアップグレードすることでも解決できます。

おすすめ

転載: blog.csdn.net/zhongliwen1981/article/details/106767589