Android sun.security.validator.ValidatorException: PKIX path building failed问题解决方法

本人Android开发,最近在更新自己公司项目私有库时遇到了如下报错
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

这个问题之前没有遇到过,于是网上查了查了,最终找到了解决方案。

我遇到的问题是Java访问网站时,网站证书过期的问题。

因为我使用了命令行的方式更新项目,当访问公司项目私有库网站时,由于证书过期,就会报这个错误。

解决方法就是将java里保存的证书更新。

1 下载新证书

我使用的是chrome浏览器,在浏览器输入你要访问的网站,也就是你用java更新项目是下载库的地址链接。我以百度网站为例。

点击浏览器地址栏左侧的小锁图标

之后点击了解详情

在新页面里找到导出证书,之后就把证书导出到本地保存好。比如mac上的文稿文件夹里。

注意如果是公司项目网站,也可能是有专门的人来管理证书,找相关人员要证书就好了。一般证书的格式是后缀为cer或crt的文件。

2 更新证书

把证书保存到本地后,就可以更新证书了

来到命令行页面

通过指令 “which java” 查看java版本

之后输入指令    

sudo keytool -importcert -noprompt -alias Your_Name -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts -file /Users/youradmin/Documents/yourcert.crt -storepass changeit

来更新证书

注意,命令中的Your_Name是你保存证书使用的别名,一般更新证书或删除证书都需要用到这个别名。

/Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts 是存放java证书的路径

jdk1.8.0_221.jdk 是我的java版本,如果你用的是其他版本,需要进行相应的更改

youradmin是你自己在电脑上的用户文件夹

yourcert.crt是你下载到本地的证书的文件名。比如我的就是放到了mac系统文稿目录下,保存的名字是yourcert.crt,如果crt格式更新失败了,可以试试把后缀改成cer

-storepass changeit 这个是默认的修改密码,一般都是changeit,如有特殊情况还需另行处理

在输入完更新证书的命令后,如果提示证书已存在,那么还需要进行一步证书删除工作

删除指令为

sudo keytool -delete -alias Your_Name -keystore /Library/Java/JavaVirtualMachines/jdk1.8.0_221.jdk/Contents/Home/jre/lib/security/cacerts -storepass changeit

注意,这个Your_Name是你更新证书是提示已经存在证书的名字

删除之后,再次输入更新证书的指令,证书就更新成功了。

之后在android项目更新代码,应该就能下载代码库了

猜你喜欢

转载自blog.csdn.net/Kongou/article/details/106288868