Maven下載依賴拋出一個ssl數(shù)字證書的異常:PKIX path building failed: SunCertPathBuilderException: unable to find valid certification path to requested target ,記錄一下問題的前因后果即解決辦法
問題原因
在我這篇博客中:Maven依賴下載失敗的原因及解決方案 ,我將maven的倉庫地址設置為 'http://maven.aliyun.com/nexus/content/groups/public' ,別看寫著是http開頭,實際訪問,卻是一個由GlobalSign Organization Validation CA頒發(fā)證書的https站點,而這個ca機構頒發(fā)的證書,在jre/lib/security的可信證書容器cacerts中是沒有存放過的,所以報出ssl數(shù)字證書不可信的異常。
不信,可以使用這條命令:
keytool -list -keystore $JAVA_HOME/jre/lib/security/cacerts
默認密碼為: 'changeit'
查閱一遍可信ca名單 ,你看看有沒有GlobalSign
解決辦法
解決辦法也很簡單,直接將被質疑的證書導入cacerts即可,這一點很多其他博客也說明過,但他們只關注了keytool的命令是如何來導入證書的,并沒有跟讀者說明該導入的證書如何去獲取
獲取被質疑的證書
在mvn拋出PKIX path building failed: SunCertPathBuilderException的日志中,我們也能看到具體是哪一個鏡像倉庫地址的證書是不可信的,那么用chrome瀏覽器訪問這個站點
點擊左上角的鎖icon -> 證書 -> 詳細信息 -> 復制到文件 -> 選擇Base64編碼的X.509格式,保存證書到本地目錄
獲取證書結束,這里假設你的證書存放路徑為 /tmp/caCert.cer
導入證書到cacerts
- 執(zhí)行以下命令
keytool -import -file /tmp/caCert.cer -keystore $JAVA_HOME/jre/lib/security/cacerts
輸入cacerts密碼: changeit
導入成功,結束
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!