java 输出ssl握手信息_如何解决Windows系统Java代码出现的SSL握手异常?

一、异常现象

利用java代码向某个https地址发送请求的时候,出现如下异常:

javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed Error

二、问题定位

根据异常信息初步判断为https证书缺失,为了验证判断的正确性,可以进入%JAVA_HOME%/bin目录,打开windows命令行窗口,执行如下命令:

keytool -list -keystore "../jre/lib/security/cacerts"

点击Enter键跳过密码,查看已经存在的证书列表。结果显示,我们请求https地址的证书的确不在列表中

三、解决方案

第一步,我们需要下载该证书。可以通过谷歌浏览器访问我们想要的https地址,然后点击地址栏前面的红色警告,查看站点信息,点击证书,选择详细,点击拷贝证书到文件,下一步

314f8acdb797

选择Base-64 encoded X.509格式,下一步,点击浏览按钮,任意选择一个目录,我们这里为了方便,指定到%JAVA_HOME%/bin目录,输入证书名称xxx.cer

314f8acdb797

第二步,运行下面的命令行,将证书添加到证书列表中

keytool -import -noprompt -trustcacerts -alias -file -keystore -storepass

说明:

: 我们的证书名称为xxx.cer, 这里可以使用xxx作为别名

:可以使用证书的绝对路径也可以使用相对路径,比如我们这里为./xxx.cer

:keystore文件,我们这里使用相对路径,../jre/lib/security/cacerts

:java默认changeit

第三步,我们可以再运行 keytool -list -keystore "../jre/lib/security/cacerts" 命令检查我们的证书是否成功添加到了证书列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值