Java#PKIX path building failed,***** ,unable to find valid certification path to requested target

之前一直运行好好的自动报送程序(类似模拟登录,爬取数据)突然报这个错,前几天都还能好好用;我直接度娘了一番,是http安全协议问题,需要安装对方网站证书;我立马在网页上访问了该网站,发现确实新增了安全证书(之前没有)。

提示:用谷歌浏览器可以直接有这个“锁”的小图标,点开就可以查看,其他浏览器需要自己探索。

总结一下网上的解决方案:

方案一、通过下载安全证书导入到jar的证书库来解决;

优点:快速解决,无需修改代码;配置导入相关证书即可。

缺点:需要手工下载导入证书到jar的证书库,一旦证书变化需要重新下载,另外这是对单一网站的,如果多个网站这需要每一个网站均导入;缺乏通用性。

由方案二是需要改http请求代码的和我的http请求代码方式不一致;我这边由于是自动报送需要保持会话,做多个操作;如果改动的话,影响访问将会影响其他网站的报送,爬取功能;为了能快速解决问题,减少影响范围我没有采取方案二,后面有时间可以做研究。

方案二、通过修改http请求代码,绕过安全协议(我没有验证过,下面为源网站)

https://www.cnblogs.com/guokai870510826/p/6519601.html

优点:具备通用性,原理是绕开安全协议,从根本上解决http安全证书问题,一劳永逸。

缺点:需要改动http代码,如果和原本的代码差异大,需要做评估影响;需要花费一定的时间来开发。

 

方案一我的步骤如下:

1、获取对方网站安全证书

谷歌浏览器点击“锁”的小图标 =》点击证书 =》详细信息=》复制文件到;出现向导页面,根据提示获取证书文件;

【提示】注意选择编码是要选择base64.

2、导入jre证书库

这里需要注意,

1)本地开发环境或者生产环境,需要先明确你使用的jre使用的是哪一个(如果有多个需要注意,别弄错了;只有一个就不需要);我这边就是有多个,一开始弄错了,踩了一坑。

2)明确好jre后,打开它的security目录,我的目录:E:\TTM\Java\jdk1.8.0_161\jre\lib\security;使用cmd 导入。

打开命令窗口,命令行如下:

C:\Users\yangminit>E:     ---切换到E盘,就是你jre的盘符

E:\>cd E:\TTM\Java\jdk1.8.0_161\jre\lib\security     ----- 打开 你jre的security目录

E:\TTM\Java\jdk1.8.0_161\jre\lib\security>

执行导入命令,然后输入密码,再次确认密码,密码为changeit (导入和查看均为这个密码),然后选择“Y”信任此证书,最后查看验证是否导入成功;命令行如下:

keytool -import -alias cmss -keystore cacerts -file D://cmss.cer     ---导入证书

cmss 表示你证书的别名(推荐和你文件名保持一致)

D://cmss.cer 表示你要导入的证书存放路径

keytool -list -keystore cacerts -alias cmss    ---查看证书是否导入成功

cmss 表示你要查看的证书名字

【提示】:如果密码有更改过,需要使用更改后的密码,changeit  为初始默认密码。

这里踩一坑,我忘记切换盘符,导致证书没有导入jre的证书库中; 这里切记先切换到你jre的目录。

最后重启服务器,重新验证即可;我这边最终验证结果,是成功完成验证码获取及其登录的;如果有问题,请仔细检查jre路径和命令行,我就踩了两坑。

提示:如果有多个网站,那么你需要把每一个网站的证书分别下载,然后分别导入才行。如果太多网站,或者考虑通用的话,建议你试试方案二,方案二我没有试验过,不保证能行。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值