赞
踩
利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。
据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。
所以我们需要创建一bash脚本,然后定时调用这个脚本。
renew-certificate.sh
:目录/opt/bash_scripts
下新建脚本文件 renew-certificate.sh
如果Nginx不可以通过Nginx命令重启,那么脚本如下:
如果是护卫神装的Nginx,脚本如下:
#!/bin/bash
# 运行 Certbot 更新命令
certbot renew --quiet
# 检查证书是否已更新
if [ $? -eq 0 ]; then
# 证书已更新,重新加载 Nginx
sudo /hws.com/hwsmaster/server/nginx-1_18_0/sbin/nginx -s reload
fi
如果是自己装的Nginx,脚本如下:
#!/bin/bash
# 运行 Certbot 更新命令
certbot renew --quiet
# 检查证书是否已更新
if [ $? -eq 0 ]; then
# 证书已更新,重新加载 Nginx
sudo /usr/local/nginx/sbin/nginx -s reload
fi
如果Nginx可以通过Nginx命令重启,那么把上面脚本中的:
sudo /usr/local/nginx/sbin/nginx -s reload
换成:
systemctl reload nginx
chmod +x renew-certificate.sh
或者直接利用面板进行修改。
sudo crontab -e
34 4 * * * /opt/bash_scripts/renew-certificate.sh
在上面的任务中,脚本首先运行 certbot renew
命令,然后检查返回的退出码。如果退出码为0(即证书已成功更新【如果是多个证书,只有一个证书更新了,退出码都为0】),则重新加载 Nginx。
这样,你的定时任务将运行脚本,脚本将负责更新证书并重新加载 Nginx。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。