You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部分客户端SSL验证失败,寻求证书追踪排查工具

SSL证书链验证排查工具推荐

我们有多台SSL Web服务器,绝大多数客户端可正常访问,但少数客户端无法完成SSL证书链验证,部分失败案例涉及代理服务器,且未使用客户端证书。需要能同时完成追踪服务器返回证书链、查看本地可用证书及加载来源、分析证书链结构、检测多条有效验证路径的排查工具。

结合你遇到的具体场景,以下是针对性的工具及用法:

核心工具与用法

1. OpenSSL(进阶扩展)

基础的openssl s_client可查看服务器返回证书,配合参数可实现更多排查功能:

  • 查看服务器返回的完整证书链:openssl s_client -connect example.com:443 -showcerts
  • 指定本地证书存储验证结果:openssl s_client -connect example.com:443 -CApath /path/to/cert-directory -CAfile /path/to/ca-bundle.crt
  • 配合流量转发工具(如socat)模拟代理环境,验证代理后的证书链
  • 适用场景:同一机器验证结果差异、验证问题客户端所见证书链

2. Java专属工具(keytool + jcmd)

针对Java应用验证失败的场景:

  • 查看Java默认信任存储的所有证书:keytool -list -v -keystore $JAVA_HOME/jre/lib/security/cacerts(默认密码changeit)
  • 检查特定证书是否在信任存储内:keytool -list -v -keystore cacerts -alias "amazonrootca"
  • 查看运行中Java应用实际加载的证书存储路径:jcmd <进程PID> VM.system_properties(查找javax.net.ssl.trustStore相关属性)
  • 适用场景:Java与其他应用验证结果不一致、Java部分场景失败排查

3. Windows平台:certutil

针对Windows系统中不同证书存储的排查:

  • 列出系统根CA证书:certutil -store Root
  • 列出当前用户的中间CA证书:certutil -store CA
  • 验证证书链并输出详细过程:certutil -verify -urlfetch example.crt
  • 适用场景:访问难查看的系统证书存储、验证PowerShell等Windows应用的证书环境

4. Certipy(证书链分析)

用于分析证书链结构、对比差异:

  • 解析证书链并展示层级关系:certipy chain analyze example_chain.pem
  • 对比同一根CA下不同中间证书的证书链差异:传入两个证书链文件,直接输出结构差异点
  • 适用场景:多个端点证书相似但中间证书不同、检测多条有效验证路径

场景对应排查方案

  • 同一机器验证结果不一致:针对不同应用使用对应专属工具验证(Java用keytool,PowerShell用certutil,自定义应用配合openssl指定其证书存储)
  • 同一根CA不同中间证书:用Certipy对比证书链结构,结合openssl确认服务器返回的中间证书是否完整
  • Java部分场景失败:用jcmd确认应用实际加载的信任存储,对比成功/失败场景的证书差异,检查代理证书是否加载到对应存储

内容的提问来源于stack exchange,提问作者Jason Hiatt

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 06:47:21