273 字
1 分钟
Let's Encrypt 自动续期踩坑:证书续了,服务却没重载

帮朋友排查一个”证书过期”的问题,翻日志发现 acme.sh 每次续期都是成功的,证书文件也是新的,但浏览器里看到的证书还是两个月前那张。

问题在哪#

他当初装证书时 --reloadcmd 写的是 nginx -s reload,但真正用证书的是另一个进程,nginx 只是路过。证书续了、文件换了,那个进程却从头到尾没重启过,内存里还是旧证书。

自动续期链条的四个环节,前三环全部成功,最后一环"服务加载新证书"从未发生,链条在这里断掉

正确姿势#

Terminal window
acme.sh --install-cert -d example.com --ecc \
--fullchain-file /path/fullchain.pem \
--key-file /path/key.pem \
--reloadcmd "systemctl restart 你的服务"

关键是 reloadcmd 必须指向真正加载证书的那个服务,而不是想当然写个 nginx。

验证方法#

Terminal window
echo | openssl s_client -connect 你的域名:443 -servername 你的域名 2>/dev/null \
| openssl x509 -noout -dates

另外建议在日历上设个提醒,每两个月看一眼线上证书的 notAfter,别完全信任自动续期。

Let's Encrypt 自动续期踩坑:证书续了,服务却没重载
https://oliver6868686.tech/posts/acme-renew-reload/
作者
Oli
发布于
2026-08-02
许可协议
CC BY-NC-SA 4.0