Weblogic访问HTTP站点出现PKIX路径验证失败timestamp check failed错误如何解决
问题根因说明
你前端使用HTTP访问站点触发SSL报错,是因为你部署的analytics应用内部逻辑发起了HTTPS协议的内部服务调用(比如第三方数据接口、身份认证服务、内部依赖接口等),报错是内部调用的SSL握手环节抛出的,和前端访问的HTTP协议无关。
日志中的PKIX path validation failed: java.security.cert.CertPathValidatorException: timestamp check failed明确指向证书有效期校验失败,本次报错大概率和Windows更新修改了系统默认信任证书链、或你所调用的目标HTTPS服务证书过期、或Weblogic关联的JDK信任库证书过期有关。
排查解决步骤
第一步:定位触发报错的HTTPS目标服务
开启Weblogic的SSL调试日志,定位握手失败的目标地址:
- 在Weblogic的启动脚本中追加以下JVM启动参数:
-Djavax.net.debug=ssl,handshake -Dweblogic.StdoutDebugEnabled=true
- 重启Weblogic服务后复现访问报错,查看日志中SSL握手阶段输出的远端IP、端口、域名信息,即可锁定触发问题的HTTPS目标服务。
- 也可以直接检查
analytics应用的配置文件,排查所有配置的外部接口地址,筛选出HTTPS协议的地址逐一验证。
第二步:校验目标服务证书有效性
使用openssl命令查询目标HTTPS服务的证书有效期:
openssl s_client -connect 目标域名/IP:端口 2>&1 | openssl x509 -noout -dates
- 如果返回的
notAfter时间早于当前系统时间,说明目标服务的SSL证书已过期,联系对应服务的管理员更新证书即可解决问题。 - 如果目标服务证书在有效期内,说明问题出在Weblogic使用的JDK信任库、或Windows系统信任证书链。
第三步:修复本地信任证书问题
场景1:JDK信任库证书过期
- 先确认Weblogic实例使用的JDK安装路径,默认信任库路径为
${JDK安装路径}/jre/lib/security/cacerts,默认访问密码为changeit。 - 执行keytool命令检查信任库中对应根证书/中间证书的有效期:
keytool -list -v -keystore ${JDK安装路径}/jre/lib/security/cacerts -alias 证书别名
- 如果确认对应证书过期,导出目标服务的有效证书后导入到JDK信任库即可:
# 导出目标服务的有效证书到本地 openssl s_client -connect 目标域名/IP:端口 -servername 目标域名 < /dev/null | openssl x509 > target.crt # 将证书导入JDK信任库 keytool -import -alias 自定义证书别名 -file target.crt -keystore ${JDK安装路径}/jre/lib/security/cacerts
场景2:Windows系统信任证书链异常
由于报错出现在Windows更新之后,若JDK配置了读取系统信任证书,可运行certmgr.msc打开Windows证书管理器,检查「受信任的根证书颁发机构」中对应根证书的有效期,更新过期的系统根证书即可。
内容的提问来源于stack exchange,提问作者Mick
相关产品推荐
相关产品推荐

