如何解决利用cron定时任务自动更新SSL证书后Nginx重启问题

利用cron定时任务自动更新SSL证书后,用浏览器访问网站,获取到的证书仍然是之前的。原因在于没有对Nginx进行重启。

据说certbot更新完成证书后会自动重启Nginx,但显然经我检测不是这回事儿。

所以我们需要创建一bash脚本,然后定时调用这个脚本。

第01步:创建一个新的脚本文件 renew-certificate.sh

如果Nginx不可以通过Nginx命令重启,那么脚本如下:

内容如下:

bash 复制代码
#!/bin/bash

# 运行 Certbot 更新命令
certbot renew --quiet

# 检查证书是否已更新
if [ $? -eq 0 ]; then
    # 证书已更新,重新加载 Nginx
    sudo /usr/local/nginx/sbin/nginx -s reload
fi

如果Nginx可以通过Nginx命令重启,那么把上面脚本中的:

bash 复制代码
sudo /usr/local/nginx/sbin/nginx -s reload

换成:

bash 复制代码
systemctl reload nginx

第02步:确保脚本具有执行权限

bash 复制代码
chmod +x renew-certificate.sh

或者直接用护卫神面板进行修改。

第03步:修改定时任务,调用脚本

bash 复制代码
sudo crontab -e
bash 复制代码
34 4 * * * /opt/bash_scripts/renew-certificate.sh

Centos上的默认文本编辑器vi的操作方法积累

在上面的任务中,脚本首先运行 certbot renew 命令,然后检查返回的退出码。如果退出码为0(即证书已成功更新【如果是多个证书,只有一个证书更新了,退出码都为0】),则重新加载 Nginx。

这样,你的定时任务将运行脚本,脚本将负责更新证书并重新加载 Nginx。

相关推荐
上海云盾-小余4 小时前
BGP 高防 IP 与 CDN 混合部署:攻防场景选型实战指南
网络·网络协议·tcp/ip
天天进步20159 小时前
Tunnelto 源码解析 #4:Wormhole 控制通道:WebSocket 如何建立一条“隧道控制线”
网络·websocket·网络协议
好好风格10 小时前
宝塔面板 HTTPS 端口证书不生效排查记录
linux·运维·nginx
宋冠巡11 小时前
OpenEuler 系统下 Nginx 安装配置与管理指南(基于 OpenEuler 22.03 LTS SP4)
nginx·openeuler
古道青阳11 小时前
深入密码学内核:对称/非对称原理、PKI体系及C语言实现
网络协议·https·ssl
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ13 小时前
nginx部署教程
运维·网络·nginx
夜月yeyue14 小时前
KCP 与 UDP 可靠传输
linux·网络·单片机·网络协议·udp·php
WIZnet14 小时前
W55RP20-EVB-MKR MicroPython 实战(14):MQTT 协议与 OneNET 平台对接
单片机·网络协议·wiznet
GlobalSign数字证书14 小时前
中小企业的 SSL/TLS 证书管理,有更轻量的方案
数据库·网络协议·ssl
tongluowan00716 小时前
负载均衡之硬件与软件层面的异同
运维·nginx·负载均衡·f5