编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

https请求报错 PKIX path building failed 解决方法

wxchong 2025-01-11 17:51:32 开源技术 38 ℃ 0 评论

前一段时间公司切换域名证书,导致几家对接客户无法正常请求,当时给各对接技术提供了两种解决方案,但是所有人都选择了第一种方案,感到有些不可思议,也足以引发各位技术人的思考。

话不多说,直接上干货。

问题/报错: PKIX path building failed

先说问题,我们在开发对接接口的过程中,不可避免的要使用https请求,但是经常会出现以下几种报错。

The connection observed an error

io.netty.handler.codec.DecoderException: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target


解决方案:

方案一

修改代码,绕过https证书验证,这种代码在网上一搜一大片这里就不再赘述。

一般技术开发者碰到这种问题就会直接选择绕过https证书验证,不可否认直接修改代码绕过验证是一种简单粗暴的处理方式,但是这种方式是否真的可取,中间请求被篡改,被劫持风险很大。

方案二

将调用接口的证书下载下来导入系统开发环境,下面以java语言开发代码为例详细为大家讲解一下。

以百度接口为例,如果出现了上述证书验证错误的问题,首先要考虑,你的程序运行环境里面没有找到或者没有自动下载调用接口的证书,需要手动导入一下。

第一步 下载证书

1. 在浏览器中输入域名地址,如下图:




导出结果如下图,这个地方注意一点,需要将所有证书都导下来:


第二步 导入证书

使用java jdk自带的工具keytool,不需要重新下载,JDK自带

  1. keytool -import -keystore D:/Java/jdk-11.0.5/lib/security/cacerts -file C:\\Users\\ce\\Desktop\\AAA\\baidu.com -alias baidu.com
  2. keytool -import -keystore D:/Java/jdk-11.0.5/lib/security/cacerts -file C:\\Users\\ce\\Desktop\\AAA\\GlobalSign RSA OV SSL CA 2018.crt -alias GlobalSign_RSA_OV_SSL_CA_2018
  3. keytool -import -keystore D:/Java/jdk-11.0.5/lib/security/cacerts -file C:\\Users\\ce\\Desktop\\AAA\\GlobalSign.crt -alias GlobalSign

导入的过程中需要输入密码,密码为:changeit

导入完成后,重启服务,就可以看到程序https请求就不再报证书验证错误了。

各位有什么不清楚的都可以私信我,有时间都会回复的。

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表