常用工具及查询🤖 AI 导航HOT寒霜启示录游戏工具攻略文章关于

HTTPS 证书过期怎么排查:查看有效期、续期失败的原因和监控方法

作者:冰原老猫 · 发布:2026-10-22 · 分类:网络运维

广告位(预留,AdSense 审核通过后启用)

早上打开公司网站,浏览器突然提示“您的连接不是私密连接”,错误代码里带着 CERT_DATE_INVALID——这通常意味着 HTTPS 证书过期了。证书过期是最常见、也最容易预防的线上事故之一。这篇文章讲怎么确认问题、怎么查到期时间、自动续期为什么会失败,以及怎样提前发现。

一、证书为什么会过期

HTTPS 证书由证书颁发机构(CA)签发,里面写明了生效时间(Not Before)和到期时间(Not After)。到期后浏览器不再信任它。证书有效期设计得有限,是为了降低私钥泄露后的长期风险。行业的趋势是有效期越来越短,例如 Let's Encrypt 的证书有效期通常为 90 天,CA/浏览器论坛也已通过逐步缩短证书最长有效期的规则,具体时间表以 CA 公告为准。有效期越短,越要依赖自动续期。

二、先确认是不是过期

浏览器提示“不安全”不一定都是过期,常见原因还有:域名与证书不匹配、证书链不完整、电脑时间不对。区分方法:

三、查看证书有效期

浏览器:点击地址栏左侧的图标,查看连接安全信息和证书详情,可以看到颁发者、有效期起止时间和包含的域名。

命令行(openssl):

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
  | openssl x509 -noout -dates -subject -issuer

输出中的 notAfter= 就是到期时间,注意它是 GMT(UTC)时间,换成北京时间要加 8 小时。-servername 参数很重要:一台服务器托管多个网站时,不带它可能拿到别的网站的证书,看到错误的结果。

检查本地证书文件:

openssl x509 -in fullchain.pem -noout -enddate

证书文件是 PEM 格式,中间那段文本其实是 Base64 编码的二进制数据,所以用文本编辑器打开只能看到一串字母。

四、自动续期为什么失败

很多网站使用 certbot、acme.sh 等 ACME 客户端自动续期,或者托管在自带证书管理的云平台和 CDN 上。续期失败的常见原因:

  1. 验证失败:HTTP-01 验证需要 CA 能通过 80 端口访问 /.well-known/acme-challenge/。如果防火墙关了 80 端口、网站强制跳转配置有误、或者前面加了 CDN 拦截,验证就会失败。
  2. DNS 验证凭据失效:使用 DNS-01 验证(通配符证书必须用它)时,DNS 服务商的 API 密钥过期或被删除。
  3. 续期成功但没生效:新证书已经下载,但 Web 服务器没有重新加载,仍在使用内存里的旧证书。需要在续期后执行 reload(如 nginx -s reload),certbot 可以用部署钩子自动完成。
  4. 定时任务没在运行:服务器迁移、重装后,cron 或 systemd 定时器没有恢复。
  5. 域名解析变了:域名已经指向新服务器,但续期还在旧服务器上进行。
  6. 多处部署:同一张证书部署在负载均衡、CDN、源站等多个位置,只更新了一处。

五、紧急处理步骤

  1. 手动执行一次续期,例如 certbot renew,仔细阅读报错信息。
  2. 根据报错修复验证问题(端口、跳转、DNS 凭据)。
  3. 续期成功后重新加载 Web 服务器。
  4. 用上面的 openssl 命令再次检查线上证书的 notAfter,确认已更新。
  5. 检查 CDN、负载均衡等其他位置的证书是否也需要更新。

六、建立到期提醒

七、小结

证书过期几乎都是流程问题而不是技术难题:自动续期 + 续期后自动重载 + 独立的到期监控,三者都做到,就很少再遇到这种事故。脚本里常见的到期时间如果是时间戳,可以用本站的 时间戳转换工具 换算;首页“网络”分类也收录了在线 SSL 检测工具,可以从外部再检查一次。

广告位(预留,AdSense 审核通过后启用)

相关站内工具

同类文章

← 全部文章