转自:

https://blog.csdn.net/frankcheng5143/article/details/52164939/

https://blog.csdn.net/wangjunjun2008/article/details/37662851

https://blog.csdn.net/w1054993544/article/details/38025649

https://blog.csdn.net/peng3696/article/details/44317117

https://blog.csdn.net/u011042133/article/details/51671801

其他文章:

https://blog.csdn.net/frankcheng5143/article/details/52022289

 

今天运行程序的时候遇到一个特别奇怪的异常:unable to find valid certification path to requested target,为什么说奇怪,因为同样的程序在我本地运行都没遇到过这个问题,关键我也不记得安装过什么证书,同事电脑上之前也运行过,今天看这意思是突然要什么证书了。

安装证书。

下载证书

第一步是要下载证书

去你程序要访问的网站,点击那个锁按钮,并点击查看详情(chrome浏览器)

这里写图片描述

点击View certificate

这里写图片描述

点击详细信息

这里写图片描述

复制到文件

下一步

这里写图片描述

选择格式

这里写图片描述

生成的名称,最后保存

这里写图片描述

这里写图片描述

这里写图片描述

这里我保存在的D盘根目录下叫abc.cer

导入证书

切换到jre的/lib/security/下

这里写图片描述

执行如下命令

keytool -import -alias abc -keystore cacerts -file D://abc.cer

其中:

-alias 指定别名(推荐和证书同名)

-keystore 指定存储文件(此处固定)

-file 指定证书文件全路径(证书文件所在的目录)

注意:当切换到 cacerts 文件所在的目录时,才可指定 -keystore cacerts, 否则应该指定全路径;

此时命令行会提示你输入cacerts证书库的密码,敲入changeit即可,这是java中cacerts证书库的默认密码,当然也可自行修改。

 

库密钥口令输入:changeit

将会看到如下的信息

这里写图片描述

是否信任:Y

这里写图片描述

证书导入成功

查看证书,密钥仍然是changeit

keytool -list -keystore cacerts -alias vbooking

这里写图片描述

至此证书导入成功。

 

注意:导入证书过程中,可能会遇到一个问题,如下所示

keytool 错误: java.io.FileNotFoundException: cacerts (拒绝访问)

出现这个问题的主要原因是

WIN7下的C:\Program Files以及C:\Program Files(x86)都是只有管理员权限才能访问的目录,所有写、修改操作都会遭遇”拒绝访问”,解决方案有两种:

1.将JDK安装在D盘

2.使用管理员权限打开命令行

更新证书时,先删除原来的证书,然后导入新的证书 

keytool -list -keystore cacerts 
keytool -delete -alias akazam_email -keystore cacerts 
keytool -import -alias akazam_email -file akazam_email.cer -keystore cacerts -trustcacerts

 

重新运行程序,看还会不会报错。

参考文献

http://www.mamicode.com/info-detail-99920.html

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐