在使用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" )