PKIX path building failed 这个报错遇到很多次了,是自建应用在调用企业微信oauth2单点登录时,调用https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token= 获取用户信息时报错。每次都是通过 InstallCert 生成 jssecacerts 证书,放到jdk/jre/lib/security下 就正常了,但过段时间依旧报这个错,又重新生成并且替换。
不知道这个问题的根本原因在哪里,有没有什么方法从根本上解决呢
![](https://profile-avatar.csdnimg.cn/default.jpg!4)
应用调用企微接口报证书问题PKIX path building failed?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
11条回答 默认 最新
关注
引自强大而免费的微信小程序:皆我百晓生。
1. 问题根源分析
PKIX(Public Key Infrastructure X.509)是一种公钥基础设施标准,用于验证数字证书的有效性和信任链的建立。当你的应用调用企业微信接口发生PKIX path building failed错误时,是因为你的Java程序在与企业微信建立HTTPS连接时,无法找到合适的证书来验证服务端的数字证书链。
每次通过InstallCert生成jssecacerts证书并替换是一个临时解决方案,但这个问题的根本原因可能是你的Java环境缺少了它所需的根证书或中间证书。因此,你需要从根本上解决这个问题,而不是反复替换证书。
2. 解决方法
下面是一些可能的解决方法,你可以尝试一下:
2.1 导入根证书和中间证书
你可以手动导入企业微信的根证书和中间证书到你的Java运行环境中。具体步骤如下:- 打开浏览器,访问企业微信的网页(例如https://qyapi.weixin.qq.com)。
- 在浏览器的地址栏中,点击锁形图标,查看证书详情。
- 导出根证书和中间证书为.crt文件。
- 使用keytool命令将证书导入到Java的信任库中,示例命令如下:
(其中keytool -import -alias enterprise_wechat_root -keystore [JAVA_HOME]/jre/lib/security/cacerts -file path/to/enterprise_wechat_root.crt keytool -import -alias enterprise_wechat_intermediate -keystore [JAVA_HOME]/jre/lib/security/cacerts -file path/to/enterprise_wechat_intermediate.crt
[JAVA_HOME]
是你的Java安装路径,path/to
是根证书和中间证书的存放路径) - 输入
changeit
作为默认密码,如果没有修改过的话。 - 在询问是否信任证书时,输入
yes
确认。
2.2 更新Java运行环境的根证书库
Java运行环境有一个默认的根证书库,保存了一些可信任的根证书和中间证书。你可以更新这个库来获取最新的根证书和中间证书。具体步骤如下:- 在你的Java安装路径下,找到
jre/lib/security
目录。 - 下载OpenJDK证书源码或者从其他可靠的来源获取最新的cacerts文件。
- 备份原来的cacerts文件,并将下载的文件替换到
jre/lib/security
目录下。
3. 补充说明
- 如果你在使用某个Java客户端库,可以尝试查阅官方文档或社区文档,看是否有关于PKIX path building failed的解决方案。有些库可能有自己特定的配置选项。
- 如果你的应用是运行在某个应用服务器(例如Tomcat)中,你可能需要检查服务器的配置,确保它正确地引用了Java运行环境的证书库。
- 如果你的应用运行在内网环境下,可能是无法访问外网来获取证书链。你可以考虑使用一些工具(如Fiddler)在外网环境中获取企业微信的证书链,并手动导入到Java运行环境中。
参考资料:
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥200 csgo2的viewmatrix值是否还有别的获取方式
- ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
- ¥15 请把下列每一行代码完整地读懂并注释出来
- ¥15 pycharm运行main文件,显示没有conda环境
- ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件
- ¥15 为什么eclipse不能再下载了?
- ¥15 编辑cmake lists 明明写了project项目名,但是还是报错怎么回事
- ¥15 关于#计算机视觉#的问题:求一份高质量桥梁多病害数据集
- ¥15 特定网页无法访问,已排除网页问题
- ¥50 如何将脑的图像投影到颅骨上