注意:需要现在服务中安装nginx,并且需要申请域名指向该服务器
1、安装certbot
使用python3-certbot-nginx插件
sudo yum install certbot python3-certbot-nginx
2、获取并安装证书,同时自动配置Nginx
sudo certbot --nginx -d your.domain.com
3、使用crontab生成自动更新脚本
(1)新建脚本:vim /usr/local/sbin/renew-certbot.sh
授予脚本权限:chmod +777 /usr/local/sbin/renew-certbot.sh
#!/bin/bash
# 日志文件路径
LOG_FILE="/var/log/certbot-renew.log"
# 将标准输出和标准错误输出都重定向到日志文件
exec >> "$LOG_FILE" 2>&1
# 获取当前日期和时间
CURRENT_DATETIME=$(date '+%Y-%m-%d %H:%M:%S')
echo "[$CURRENT_DATETIME] 开始Certbot证书续订流程"
# 运行Certbot续订命令,并在必要时重启服务
# 注意:根据你的Web服务器(Nginx或Apache),选择适当的命令
# 如果你使用的是Nginx
sudo certbot renew --force-renewal --quiet --agree-tos --renew-hook "sudo systemctl reload nginx"
# 如果你使用的是Apache
# sudo certbot renew --force-renewal --quiet --agree-tos --renew-hook "sudo systemctl reload apache2"
# 获取Certbot续订命令的退出状态
EXIT_STATUS=$?
# 检查是否续订成功
if [ $EXIT_STATUS -eq 0 ]; then
echo "[$CURRENT_DATETIME] Certbot证书续订成功"
else
echo "[$CURRENT_DATETIME] Certbot证书续订失败,退出状态码:$EXIT_STATUS"
fi
(2)crontab -e 创建定时任务
#这里的各个字段含义如下:
#0:分钟(在第0分钟时执行)
#20:小时(在20点时执行,即晚上8点)
#*:日期(每天)
#*:月份(每个月)
#*:星期几(每周的每一天)
0 20 * * * /usr/local/sbin/renew-certbot.sh
(3)crontab -l 查看任务
(4)验证脚本是否执行
cat /var/log/certbot-renew.log