美文网首页
如何解决Windows系统Java代码出现的SSL握手异常?

如何解决Windows系统Java代码出现的SSL握手异常?

作者: 斜月三星无所住 | 来源:发表于2021-01-08 14:29 被阅读0次

一、异常现象

利用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地址,然后点击地址栏前面的红色警告,查看站点信息,点击证书,选择详细,点击拷贝证书到文件,下一步

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

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

keytool -import -noprompt -trustcacerts -alias <AliasName> -file <certificate> -keystore <KeystoreFile> -storepass <Password>

说明:

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

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

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

<Password>:java默认changeit

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

相关文章

网友评论

      本文标题:如何解决Windows系统Java代码出现的SSL握手异常?

      本文链接:https://www.haomeiwen.com/subject/nqtfaktx.html