我的https证书将在大约一周后过期,我运行脚本来更新它们。
他们似乎被更新,因为如果我再次运行certbot-auto
,它会告诉我一些消息,说证书到期date应该更接近今天的date。
问题是,网站看起来仍然在服务旧的证书。 到期date不变。
这是预期的吗? 如何强制更新证书?
相关产出:
$ 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服务器deamons(apache,nginx,…)仅在加载configuration时加载证书,并在运行时将其保存在内存中。 certbot提供了一些钩子参数,你可以在更新证书后重新加载守护进程。
来自文档的示例:
certbot renew --pre-hook "service nginx stop" --post-hook "service nginx start"
用post钩子重新加载服务应该足够了。 这是我使用的:
certbot renew --renew-hook "service nginx reload"
当然,你可以在每次运行certbot之后运行service nginx reload
,但是使用renew钩子的好处是只有当证书已经被更新时,守护进程才会被重新加载。