JVM进程中随机出现PKIX路径构建失败SSL握手错误的排查方法论求助
JVM进程中随机出现PKIX路径构建失败SSL握手错误的排查方法论求助
各位好,我现在碰到一个非常棘手的随机SSL握手问题,想请大家帮忙梳理下排查思路。
我的情况是这样的:我维护着一套企业级Java定制软件,部署在至少1000台电脑上,这些软件会调用Gravitee服务器托管的API。偶尔会出现以下错误:
com.sun.xml.internal.ws.client.ClientTransportException: HTTP transport error : javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
这个错误的出现规律很奇怪:
- 99%的调用都完全正常,错误是随机触发的
- 一旦某台电脑上的软件出现这个错误,只有重启软件才能解决——错误会持续到整个JVM进程生命周期结束
- 当电脑1报错时,同一时间电脑2调用同一个API完全正常,说明API服务器没有出现宕机或不可用的情况
补充一些关键信息:
- 目标API没有使用VIP/负载均衡,是一台固定IP的单服务器
- 我添加到JVM的cacerts密钥库中的是自签名证书
- API的域名是本地域(比如
myAPI.myDomain.lan),不需要公网根CA的验证 - 我确认证书是有效的:如果从密钥库中移除这个证书,所有调用都会直接报同样的错误,说明正常情况下证书是生效的
- 目前完全找不到稳定复现这个问题的方法
- 网络环境没有使用代理
- 日志中没有发现堆转储或内存泄漏的相关信息
- 使用的Java版本是
1.8.0_231_b11
我已经尝试了各种能想到的排查方向,但感觉一直在绕圈子,始终找不到问题根源。希望大家能给我一套可行的排查方法论,帮我定位这个随机出现的问题。
备注:内容来源于stack exchange,提问作者Saleri
相关产品推荐
相关产品推荐

