在使用httpclient請求時,使用proxy設置后,然后就報錯了。
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
1、獲取訪問網址的證書.cer文件.
在瀏覽器輸入網址,點擊網址左邊的鎖符號
2、添加jdk信任證書
將下載好的.cer文件復制到 %JAVA_HOME%/jre/bin/目錄下,打開命令窗口輸入以下命令(報錯就繼續往下看):
keytool -import -v -trustcacerts -alias 文件名 -file 文件名.cer -storepass changeit -keystore %JAVA_HOME%/jre/lib/security/cace
呵呵,這里就踩坑了,網上一群抄來抄去的也不驗證到底行不行,
說明:
changeit 是密碼, java默認。
keytool.exe是在 %JAVA_HOME%/jre/bin/目錄下的,jdk默認自帶。
cacerts是文件(即將要把證書導入到其中的文件),在 %JAVA_HOME%/jre/lib目錄
keytool命令的 -ketstore參數 跟着的密鑰庫名稱要加上雙引號。
是否信任此證書? [否]:" ,那么請輸入"y"。
3、查看cacerts中的證書列表
keytool -list -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit
4、刪除cacerts中指定名稱的證書
keytool -import -alias 文件名 -file 文件名.cer -keystore "%JAVA_HOME%/jre/lib/security/cacerts" -storepass changeit-trustcacerts
(當初網上找到2的時候,復制命令死活報錯,直到3、4命令,看到了 -keystore "x/x/x" )