排错指南

证书被吊销,或者链验证没通过

证书被吊销,或者链验证没有通过。

证书被吊销是 CA 主动作废了这张证书。它和过期不一样:过期是到点了,吊销是这张证书出了问题,通常意味着私钥可能已经不安全。所以处理顺序是先查私钥,再换证书——直接拿同一把私钥重签,可能把问题原样带过去。

链验证没通过但错误码不属于常见几种时,说明证书本身有结构性问题,需要看原始错误码定位。

被吊销:先确认原因

  • 私钥泄露或疑似泄露——最严重的一种。私钥进过代码仓库、备份被拿走、服务器被入侵,都属于这一类。
  • 你自己申请的吊销:换服务器、域名转让、误签之后主动作废。
  • CA 侧的合规吊销:签发时的域名验证被判定无效、CA 发现批量签发问题、行业规则变化导致批量吊销。
  • 域名控制权变更:域名过户后原证书被作废。

如果不能排除私钥泄露,新证书必须用新生成的私钥。用原来那把重签,等于把可能已经泄露的钥匙继续用下去。

处理顺序

  1. 问清吊销原因——CA 的控制台或邮件里通常写了。
  2. 如果与私钥有关:生成新的私钥,不要复用。
  3. 用新私钥重新签发,部署,重载服务。
  4. 排查私钥是怎么泄露的:仓库历史、备份、日志、镜像层里有没有留下副本。
  5. 确认没有别处还在用这张被吊销的证书——负载均衡、CDN 边缘节点、其他机器。

浏览器对吊销的处理并不一致:有的会拦截,有的因为吊销状态查询超时而放行。所以「浏览器还能打开」不能作为「没事」的依据。

验证没通过、错误码不常见

这说明 OpenSSL 拒绝了这条链,但原因不属于过期、主机名不匹配、链不完整、自签名这几类常见情况。直接看原始错误码:

拿到具体的验证错误
openssl s_client -connect example.com:443 -servername example.com </dev/null 2>&1 \
  | grep -E 'verify error|Verify return code'
  • CERT_SIGNATURE_FAILURE — 签名对不上,证书文件可能损坏或被截断。
  • CERT_CHAIN_TOO_LONG — 链层数超限,通常是链拼接时重复了。
  • INVALID_CA — 链中某张证书没有 CA 标记,顺序拼错了。
  • UNSUPPORTED_CERTIFICATE_PURPOSE — 证书用途不含服务器认证,签错了类型。

常见问题

检测一下你自己的域名

免登录,一次真实的 TLS 握手,直接给出结论:还有多少天到期、证书链是否完整、是否包含这个域名。

需要一张新证书?本站提供基于 Let's Encrypt 的免费签发,支持泛域名。

了解免费证书

其他排错指南

Last updated on