排错指南
证书被吊销,或者链验证没通过
证书被吊销,或者链验证没有通过。
证书被吊销是 CA 主动作废了这张证书。它和过期不一样:过期是到点了,吊销是这张证书出了问题,通常意味着私钥可能已经不安全。所以处理顺序是先查私钥,再换证书——直接拿同一把私钥重签,可能把问题原样带过去。
链验证没通过但错误码不属于常见几种时,说明证书本身有结构性问题,需要看原始错误码定位。
被吊销:先确认原因
- 私钥泄露或疑似泄露——最严重的一种。私钥进过代码仓库、备份被拿走、服务器被入侵,都属于这一类。
- 你自己申请的吊销:换服务器、域名转让、误签之后主动作废。
- CA 侧的合规吊销:签发时的域名验证被判定无效、CA 发现批量签发问题、行业规则变化导致批量吊销。
- 域名控制权变更:域名过户后原证书被作废。
如果不能排除私钥泄露,新证书必须用新生成的私钥。用原来那把重签,等于把可能已经泄露的钥匙继续用下去。
处理顺序
- 问清吊销原因——CA 的控制台或邮件里通常写了。
- 如果与私钥有关:生成新的私钥,不要复用。
- 用新私钥重新签发,部署,重载服务。
- 排查私钥是怎么泄露的:仓库历史、备份、日志、镜像层里有没有留下副本。
- 确认没有别处还在用这张被吊销的证书——负载均衡、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 的免费签发,支持泛域名。
了解免费证书其他排错指南
- 证书过期了怎么办浏览器拦下访问,提示证书已过期或连接不是私密连接。
- 证书快到期了:先分清是没续期,还是续了没部署证书还没过期,但剩余天数已经不多了。
- 证书还没到生效时间:多半是时钟不对证书的生效时间还没到,被判定为无效。
- 证书透明度日志里出现了没见过的证书监控期间,域名下出现了不是本站签发的新证书。
- 无法连接:证书检测连不上服务器时的排查顺序检测连不上服务器,没能拿到证书。
- 「您的连接不是私密连接」:先找错误代码,再决定修哪里浏览器弹出红色警告拦下访问,但不知道属于哪一种证书问题。
- 关闭 TLS 1.0 / 1.1,只留 1.2 和 1.3服务器还在使用 TLS 1.0 或 1.1 协商连接。
- 证书不包含这个域名:ERR_CERT_COMMON_NAME_INVALID 的几种成因浏览器提示证书不适用于该网站,或者拿到了另一个站点的证书。
- 电脑打得开、手机 App 报证书错误:证书链缺少中间证书电脑浏览器打得开,手机 App、curl 或 Java 客户端却报证书错误。
- OCSP stapling:开了能快一点,不开也不算故障没有启用 OCSP stapling,首次握手会稍慢一些。
- 自签名证书:什么时候没问题,什么时候必须换证书是自己签给自己的,浏览器不信任。
- 证书链追溯不到受信任的根:新根交叉签名与私有 CA浏览器打得开,curl、旧安卓或 Java 客户端却说找不到颁发者证书。
- RSA 密钥长度不足:为什么现在才被提醒证书的 RSA 密钥长度低于 2048 位。
- 泛域名证书为什么不覆盖主域名子域名都正常,直接访问主域名却报证书错误。
Last updated on