普通用户使用 Let's Encrypt 证书有 90 天有效期的限制,但通过 Certbot 可以实现证书的自动续期。不过,更新证书后必须重新加载 nginx 配置文件才能生效。遗憾的是,Certbot 的默认定时任务并没有包含重载配置文件的命令。
为了避免未重载配置文件导致的服务不可用,我们需要对 Certbot 任务配置文件做出修改。其位于 /etc/cron.d/certbot
.
默认配置大概是这样:
1 2 3 4 5 6 7 8 9 10 11 |
# /etc/cron.d/certbot: crontab entries for the certbot package # # Upstream recommends attempting renewal twice a day # # Eventually, this will be an opportunity to validate certificates # haven't been revoked, etc. Renewal will only occur if expiration # is within 30 days. SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin 0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew |
我们只需要将向最后一行命令末尾添加 --renew-hook "/etc/init.d/nginx reload"
即可。即:
1 |
0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "/etc/init.d/nginx reload" |
--renew-hook
后面的命令会在每次成功续期证书后运行。此处即为重新加载 nginx 配置文件。
参考链接:https://www.guyrutenberg.com/2017/01/01/lets-encrypt-reload-nginx-after-renewing-certificates/
RainEggplant原创文章,转载请注明来自:Let’s Encrypt: 让Certbot续期证书后重新加载Nginx