我的 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
Web 服务器守护进程(apache、nginx、...)仅在加载配置时加载证书,并在运行时将它们保存在内存中。certbot 提供了一些挂钩参数,您可以使用这些参数在证书更新后重新加载守护进程。
文档中的示例:
不过,使用 post hook 重新加载服务就足够了。这就是我使用的:
当然,您可以
service nginx reload
在每次运行 certbot 后运行,但使用更新挂钩的好处是只有在证书实际更新时才会重新加载守护进程。