java導入證書


  最近在用 gradle 編譯安卓代碼,gradle 下載依賴庫報錯 “Exception in thread "main" javax.net.ssl.SSLException: java.lang.RuntimeException: Unexpected error: java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty”,原因是高版本 java (1.8.0_4)下載 https 的時候去校驗證書了,默認java里沒有證書所以報錯。

 

 一、臨時方案(在java中導入對應站點的公鑰)

1、copy出要下載的依賴庫地址,改pom后綴為xml並在chrome中訪問

由於改成xml后綴會報404,不過沒關系咱們只要這個域名的共鑰即可

 

 

 2、點擊上圖三角,再點擊下圖紅框處

 

 

 3、鼠標安卓證書拖動到桌面,導出此域名的證書

 

4、把證書上傳到linux服務器上,如下圖

 

 

 5、執行如下命令,在java中導入此域名的證書

[root@VM-12-15-centos security]# pwd
/cn/java-se-8u41-ri/jre/lib/security
[root@VM-12-15-centos security]# keytool -alias repo.maven.apache.org -import -keystore cacerts -file /root/repo.maven.apache.org.cer  

如果你沒有初始化 /cn/java-se-8u41-ri/jre/lib/security/cacerts,那輸入java默認密碼 changeit 即可

其中:

-alias repo.maven.apache.org :是別名,隨便起或者寫成導入的域名即可

-file /root/repo.maven.apache.org.cer :是證書文件地址,就是剛才傳上來的證書文件

 6、查看已經安裝的證書

keytool -list -keystore cacerts

 運行命令后可以看到安裝了兩個證書

 7、重新編譯后即可成功下載依賴資源

 

 

 

  

 

目前的解決方法有點費勁,需要針對每一個域名安裝證書,大致的方法:
1、訪問對應的網站,從瀏覽器中導入對應域名的公鑰,將公鑰文件傳到linux
2、通過命令給java導入對應域名的公鑰 keytool -import -keystore cacerts -file /root/a1.cer
重新編譯ok了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM