【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

发布时间:2022-07-04 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

问题报错

今天上线了我开发的一个OAuth2单点登录客户端的实现,在测试系统验证没问题,到生产环境由于单点登录服务端HTTPS协议,报错如下:

I/O error on POST request for "xxx.xxx.xxx.xxx:8080": sun.securITy.validator.ValidatorException: 
PKIX path building failed: sun.security.PRovider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target; nested exception is javax wangt.cc .ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

导致报错的原因是 HTTPS 域名的公钥证书不在 JDK/JRE 的证书库中,被Java认为是不可信的。

解决方案

1、导出证书

首先需要获取 HTTPS 域名的公钥证书,可以通过浏览器导出,如下是 Chrome 浏览器导出百度的公钥证书。

【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException

2、上传证书到服务器

如果是本地 JDK 则不需要此步骤。我把CA.cer上传到了 Linux 服务器的 /root

3、为 keytool 授予执行权限

止 keytool 没有操作权限。

sudo chmod +x ${JDK目录}/bin/keytool

4、导入证书

Java 证书库文件的路径为 ${JDK目录}/jre/lib/security/cACERts,以下命令公钥证书放在 /root/CA.cer

${JDK目录}/bin/keytool -import  
-alias cacerts -keyStore ${JDK目录}/jre/lib/security/cacerts  
-file /root/CA.cer

顺序输入 yes + 回车 与 changeit +回车,完成证书导入。

yes 表示允许信任此证书,changeit 是 Java 证书库默认的密码。

5、重启 Java 服务

这我就不多说了,懂得都懂 :happy:

最后

希望对您能有所启发,如果您有更优雅的实现方式 或者 文中有错误,希望您能不吝赐教评论指出,感谢。

本文同步发布于博客园(东北小狐狸 https://www wangt.cc blogs wangt.cc /hellxz/)与CSDN(东北小狐狸-Hellxz https://bLOG.csdn wangt.cc /u012586326)禁止转载

脚本宝典总结

以上是脚本宝典为你收集整理的【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException全部内容,希望文章能够帮你解决【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。