排错指南
证书快到期了:先分清是没续期,还是续了没部署
证书还没过期,但剩余天数已经不多了。
先别急着签新证书。很多「快到期」其实是续期已经成功、只是没部署——新证书签出来了,躺在磁盘上或者在 CA 那边,而服务器进程还握着旧文件。这种情况签第二张没有任何用。
判断方法很简单:看证书透明度日志里有没有一张更新的、覆盖同一批域名的证书。有,就是部署问题;没有,才是续期本身没跑起来。
先确认是哪一种
| CT 日志里有更新的证书 | 含义 | 该做的事 |
|---|---|---|
| 有 | 已经签发,没有部署 | 把新文件放到位并重载服务 |
| 没有 | 续期没有成功 | 查续期任务本身 |
本站的域名监控页会直接给出这个判断——它把握手看到的证书和 CT 日志里的证书放在一起比。
已经签发但没部署
最常见的原因是重载被漏掉了。证书文件是新的,但 nginx / Apache / Java 进程在启动时把证书读进了内存,不重载就一直用旧的。
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -dates -serial- 没重载:
nginx -s reload/systemctl reload nginx。certbot 的--deploy-hook就是干这个的。 - 文件路径不对:续期写到了
/etc/letsencrypt/archive/...,而配置指向另一个目录。应当指向live/下的软链。 - 多台机器:证书只更新了一台,负载均衡后面还有别的机器在发旧证书。
- CDN / 负载均衡器:源站换了,但边缘节点上传的还是旧证书。
续期本身没跑起来
- 验证方式失效:HTTP-01 的
.well-known路径被重定向或防火墙挡了;DNS-01 的 API 凭据过期。 - 定时任务没执行:cron / systemd timer 被停掉,或者容器重建后任务没了。
- 触发太晚:证书只剩几天才开始重试,一旦遇到限流就没有余量了。
- 域名解析变了:域名换了服务商或指向,验证走不通。
自动续期最危险的地方在于它失败时是安静的。真正靠得住的做法是同时监控结果——直接去看服务器在提供的那张证书还有多少天,而不是相信续期任务的退出码。
应该提前多久处理
| 剩余天数 | 含义 |
|---|---|
| 30 天 | 自动续期本应在这时已经完成。到这里还没换,说明续期链路有问题。 |
| 14 天 | 留给排查和人工介入的时间。 |
| 7 天以内 | 按故障处理。遇到 CA 限流或验证问题,可能来不及。 |
90 天有效期的证书通常在第 60 天续期,新旧并存 30 天——所以看到「另有一张仍有效的旧证书」是正常现象,不是重复签发。
常见问题
检测一下你自己的域名
免登录,一次真实的 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