調用ETC接口時出現PKIX path building failed錯誤

最近做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

上面異常信息提示:請求目標沒有發現有效的證書路徑。訪問ETC接口使用的是HTTPS安全的網絡通信協議,導致該問題的原因是應用程序調用調用接口時候,會檢查本地JVM所在環境是否有對應的證書,如果沒有則報錯。

其實解決方法也挺簡單,就是把接口地址的證書下載下來,然後安裝到JVM所在環境中。具體步驟如下:

  • 第一步: 在瀏覽器上輸入應用程序需要調用的接口地址,然後按下F12,然後在security欄目中點擊View certificate按鈕;
    在這裏插入圖片描述
    記住證書的名字:
    在這裏插入圖片描述

  • 第二步:在“運行”中輸入certmgr.msc,打開證書管理窗口後,找到我們需要下載的證書文件;
    在這裏插入圖片描述

  • 第三步:選中需要下載的證書文件,然後鼠標右鍵->所有任務->導出,把證書導出到本地磁盤上;
    在這裏插入圖片描述

  • 第四步:打開命令窗口,然後執行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

輸入祕鑰庫的口令回車即可。
在這裏插入圖片描述
如果要查看已安裝的證書,可以執行以下命令:

keytool -list -v -alias cacerts -keystore cacerts -storepass 祕鑰庫的口令

刪除證書:

keytool -delete -alias cacerts -keystore cacerts -storepass 祕鑰庫的口令
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章