SSL证书自动续期失败,是不是验证方式不匹配?

来源:互联网 时间:2026-10-25

自动续费这个功能,很多人以为装上就万事大吉,直到某天浏览器报不安全,回头看才发现它一次都没成功过。后台一查,插件明明装着,配置也写着到期前三十天自动处理。这种情况绝大多数不是续费没跑,而是跑了但验证没过。证书签发机构要确认你确实控制着这个域名,确认的方式有好几种,选的那种和你现在的部署结构对不上,任务就会一直失败,而且失败得很安静,不到期根本没人发现。日志里通常只有一行失败原因,翻到那一行,比重新配一遍快得多。这类失败不会弹窗提醒,也不会发告警邮件,只有证书真的过期、浏览器开始拦请求的时候才会被注意到,这就是它总拖到最后一刻才被发现的原因。

先确认续费任务到底有没有在跑。用certbot的话,装完会自动创建一个定时器,systemctl list-timers里能找到certbot.timer,状态是active才算真的挂着。手工写过cron的,去/var/log/letsencrypt/letsencrypt.log里看最近一次执行时间,日期停在几个月前,说明任务本身就没起来。

验证方式主要分两类。http-01要求你在网站根目录下的固定路径里放一个指定内容的文件,签发方从公网访问那个地址,读到了就确认你有控制权。dns-01要求你在域名的DNS里加一条指定的TXT记录,签发方查这条记录来确认。

http-01失败最常见的原因有三个:八十端口没有对外开放、域名解析没有指到这台机器、网站做了整站跳转到另一个域名。前两个是硬伤,第三个最容易被误判,签发方会跟着跳转走,最多十次,只认http和https、只走80和443端口,跳到https是允许的,跳到这两个端口以外或者直接跳到IP地址才会失败。

套了CDN的站点用http-01经常出问题,回源那一跳和验证请求走的是不同路径,验证文件可能根本没落到源站。这种情况换dns-01更省事,它不依赖端口和网站配置。

泛域名证书只能用dns-01,http-01没法为通配符域名提供验证文件,申请那一步就会直接报错。只是覆盖几个具体子域的多域名证书不在此列,每个名字各发一次http-01验证也能过,前提是每个子域都能打到这台机器。

动手改配置之前先跑一次演练。certbot renew加--dry-run会走完整流程但不真正签发,失败的原因会直接打出来,比等到期那天再查省事得多。看到成功之后再确认一次定时器状态,两件事都做完,才算真的配好了。演练通过不等于后面一定顺利,域名刚改过解析、DNS还没完全生效的,演练和正式签发之间可能隔着一个缓存时间。

相关文章

标签:

A5创业网 版权所有