Let's Encrypt 证书已续订​​,但网站提供的是旧证书

Let's Encrypt 证书已续订​​,但网站提供的是旧证书

我的 https 证书将在大约一周后过期,我运行了脚本来更新它们。

它们似乎已经更新了,因为如果我尝试certbot-auto再次运行,它会显示一些消息,提示证书到期日期应该更接近今天的日期。

问题是该网站看起来仍在提供旧证书。到期日期没有改变。

这是预料之中的吗?如何强制更新证书?

相关输出:

$ echo | openssl s_client -connect ionicabizau.net:443 2>/dev/null | openssl x509 -noout -dates
notBefore=Aug 28 03:40:00 2016 GMT
notAfter=Nov 26 03:40:00 2016 GMT

服务器上的文件看起来已更新:

$ ls
cert.pem  chain.pem  fullchain.pem  privkey.pem
$ stat -c '%y' *
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000
2016-11-17 06:03:20.838837999 +0000

答案1

Web 服务器守护进程(apache、nginx 等)仅在加载配置时加载证书,并在运行时将其保存在内存中。certbot 提供了一些钩子参数,您可以使用这些参数在证书更新后重新加载守护进程。

例子来自文档

certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"

不过,使用 post hook 重新加载服务就足够了。这是我使用的:

certbot renew --deploy-hook "service nginx reload"

当然,您可以service nginx reload在每次运行 certbot 后运行,但使用更新挂钩的好处是,只有在证书实际已更新时才会重新加载守护进程。

相关内容