关于InstallCert需要信任两个及以上域名时的解决方法记录

        背景:开发的程序需要访问多个HTTPS地址,虽然做了忽略信任的步骤,但是还是有些地址会报下面这个错误 :

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

         用了InstallCert生成jssecacerts只能作用在一个域名上【也可能是我没查到一个域名以上的使用方法】,接着只能老老实实导入安全证书,下面开始:

1.首先获取证书文件,用Google来举例,下面二选一

openssl s_client -connect google.com:443 < /dev/null | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > google.com.crt

openssl s_client -servername google.com -connect google.com:443 2>/dev/null | openssl x509 -outform PEM > google.com.pem

执行完之后会在当前目录看到文件google.com.crt

2.把证书文件导入$JAVA_HOME/jre/lib/security/cacerts,caerts的默认密码是'changeit'

cd $JAVA_HOME/jre/lib/security/

keytool -importcert -alias google -file /usr/local/xxx/crts/google.com.crt -keystore cacerts -storepass changeit

        执行完上面的命令已经完工了。

        如果还是报错,就要注意cacerts 要生效 在$JAVA_HOME/jre/lib/security/目录下不能有jssecacerts,需要把jssecacerts名字改成其他的【有jssecacerts的情况下cacerts就不会生效】;

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

keytool -delete -alias google -keystore cacerts

keytool -import -alias google -file google.com.crt  -keystore cacerts


2024-08-30更新

发现有些使用openssl下载的证书导入之后还是访问失败,这种尝试从浏览器导出之后导入,问题得到解决,记录如下:

1.打开浏览器输入地址->点击🔒->网站安全链接->证书信息->详细信息->复制到文件->开始导出证书->下一步然后这里选择的是DER二进制编码...->拿到xxx.cer证书文件

2.证书上传到linux服务器之后按照上面的命令执行导入,使用工具测试效果

java SSLPoke 域名 端口
java SSLPoke www.baidu.com 443

工具地址
链接:https://pan.quark.cn/s/0435aa934046
提取码:xX6A

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值