Certbot自动续签多域名

安装Certbot

yum install -y epel-release
yum install -y certbot

在这里插入图片描述

执行续签命令

certbot certonly --preferred-challenges dns --manual -d *.domain1.com -d domain1.com -d *.domain2.com -d domain2.com -d *.domain3.com -d domain3.com --server https://acme-v02.api.letsencrypt.org/directory --register-unsafely-without-email

按提示前往dns解析添加对应的值
完成后回车
在这里插入图片描述
生成的证书默认位置

/etc/letsencrypt/archive/domain.com

一键更新

certbot renew

开启自动续订

查看自己certbot和nginx的安装位置

which certbot
which nginx

在这里插入图片描述
添加续订脚本

sudo vi /root/renew_nginx.sh

写入以下内容,注意对应的指令路径要和上面查出来的一致

#!/bin/bash

# 日志文件
LOGFILE="/var/log/certbot-renew.log"
CERTBOT="/usr/bin/certbot"
NGINX="/usr/local/nginx/sbin/nginx"

echo "[$(date)] 开始证书续订检查..." >> "$LOGFILE"

if $CERTBOT renew --quiet --no-random-sleep-on-renew; then
    echo "[$(date)] 证书检查完成,正在重载 Nginx..." >> "$LOGFILE"
    $NGINX -s reload
    echo "[$(date)] Nginx 已重载" >> "$LOGFILE"
else
    echo "[$(date)] Certbot 续订失败!" >> "$LOGFILE"
    exit 1
fi

保存退出,添加可执行权限

sudo chmod +x /root/renew_nginx.sh

添加定时任务

sudo crontab -e

这个时候会弹出一个文本编辑器,里面可能已经有内容了,在下面插入一行新的内容,添加每天凌晨两点半执行一次脚本的任务

30 2 * * * /root/renew_nginx.sh >> /var/log/certbot-cron.log 2>&1

在这里插入图片描述
保存退出

测试脚本是否可用

sudo /root/renew_nginx.sh

查看执行的日志

sudo tail -f /var/log/certbot-renew.log

在这里插入图片描述

<think>好的,我现在需要帮助用户了解如何配置Let's Encrypt证书的自动续签。用户已经提供了一些相关的引用内容,我需要结合这些信息来生成一个详细的教程。 首先,我应该确认用户的需求。用户想知道如何实现自动续期,所以需要分步骤的配置教程。根据提供的引用,Certbot是官方推荐的客户端工具,所以应该以Certbot为主进行说明。引用中提到了不同系统如Ubuntu和CentOS,可能需要涵盖这两个系统的安装步骤,但用户可能更关注其中一个,或者通用步骤。不过用户的问题没有指定系统,所以应该给出通用的方法,同时提到不同系统的注意事项。 接下来,安装Certbot。根据引用1和4,Certbot的安装可以通过包管理器,比如在Ubuntu使用apt,CentOS使用yum或dnf。需要给出安装命令,并提醒用户根据系统选择合适的命令。例如,Ubuntu的安装步骤可能包括添加PPA仓库,而CentOS可能需要启用EPEL仓库,但引用4中的官网链接可能有具体指令,但用户提供的引用中没有详细说明,可能需要建议用户参考官方指令链接。 然后是生成证书的步骤。这里可能需要使用certonly命令,或者使用webroot插件,或者其他验证方式。引用2提到了使用webroot插件,克隆项目仓库,但可能用户更倾向于标准方法。因此,应该说明常见的验证方式,如standalone或webroot,并给出示例命令,比如使用--webroot模式需要指定web根目录,并确保服务器配置正确。 自动续期的配置是关键部分。Certbot默认会自动续期,但需要确认cron任务或systemd定时器的设置。根据引用3,证书有效期是90天,自动续期流程需要每60天运行一次。应该指导用户检查或设置定时任务,比如查看/etc/cron.d/certbot是否存在,或者手动添加crontab条目,运行certbot renew命令。可能还需要在续期后重启web服务器,比如Apache或Nginx,使用--post-hook参数来执行重启命令,如systemctl reload apache2。 验证和故障排除部分,用户可能需要手动运行certbot renew --dry-run来测试自动续期是否正常工作。同时,需要确保服务器防火墙开放了HTTP/HTTPS端口,尤其是standalone模式需要80或443端口。此外,日志文件的路径也很重要,比如/var/log/letsencrypt/letsencrypt.log,方便用户排查问题。 参考用户提供的引用,引用1提到了Certbot是官方推荐工具,引用3强调了自动续期的重要性,引用4提到了CentOS的官网指南。需要确保在回答中引用这些相关内容,并在适当的位置添加引用标识。 最后,生成相关问题,可能涉及续期失败的原因、其他客户端工具、证书安装后的验证,以及证书过期的影响。这些问题可以帮助用户进一步了解相关主题。 现在需要把这些步骤组织成结构清晰的中文回答,确保使用正确的LaTeX格式,并遵循系统级指令,比如行内数学表达式用$...$,独立公式用$$...$$,但在这个问题中可能不需要数学公式,所以可能不需要处理。但需要检查是否有变量或技术术语需要特别格式,比如命令名称使用代码块。 确保回答分步骤,每个部分有标题,代码示例用代码块,引用标识正确放置。例如,在提到Certbot时引用[^1],在提到有效期时引用[^3],在CentOS部分引用[^4],在克隆仓库时引用[^2]。但用户的问题主要是自动续签,所以引用2提到的项目可能是一个替代方案,但用户可能更关注Certbot的标准方法,所以可能需要简要提及,但主要步骤还是基于Certbot。 需要检查所有引用是否准确对应到回答中的内容,比如Let’s Encrypt的证书有效期在引用3中提到,应该正确引用。同时,自动续期的频率在引用3中说明是每90天,但Certbot默认每12小时检查一次,但实际续期是在到期前30天进行。需要确认正确信息,可能用户引用3中的说法是鼓励自动化,但具体续期周期由用户配置,所以可能需要说明certbot renew命令可以设置为定期运行,比如每60天,这样在90天到期前完成续期。 总结步骤:安装Certbot,生成证书,配置自动续期(包括定时任务和钩子命令),验证和故障排除。每个步骤详细说明,并添加相关引用。</think>### Let's Encrypt证书自动续期配置教程 Let's Encrypt证书有效期为90天,自动续期可避免服务中断。以下是基于Certbot的配置流程: --- #### **一、安装Certbot客户端** Certbot是官方推荐的自动化工具[^1],安装命令因系统而异: ```bash # Ubuntu/Debian sudo apt update sudo apt install certbot # CentOS/RHEL sudo yum install epel-release sudo yum install certbot ``` > CentOS详细指南参考[官网指令](https://certbot.eff.org/instructions?ws=other&os=centosrhel8)。 --- #### **二、生成初始证书** 选择适合的验证方式(以Webroot为例): ```bash sudo certbot certonly --webroot -w /var/www/html -d example.com ``` - `-w`:指定网站根目录 - `-d`:绑定域名(可多个) --- #### **三、配置自动续期** 1. **启用自动续期服务** Certbot默认安装定时任务,检查是否存在: ```bash systemctl list-timers | grep certbot ``` 若未生效,手动添加Cron任务: ```bash # 每天检查续期(实际仅到期前30天执行) 0 0 * * * /usr/bin/certbot renew --quiet ``` 2. **续期后自动重启服务** 添加`--post-hook`参数重启Web服务器: ```bash certbot renew --post-hook "systemctl reload apache2" # Apache示例 certbot renew --post-hook "systemctl reload nginx" # Nginx示例 ``` --- #### **四、验证与故障排除** 1. **测试续期流程** ```bash sudo certbot renew --dry-run ``` 成功输出`Congratulations, all renewals succeeded`表示配置正常[^1]。 2. **检查日志** ```bash tail -f /var/log/letsencrypt/letsencrypt.log ``` 3. **防火墙配置** 确保80/443端口开放(Standalone模式需要)。 --- #### **五、替代方案(可选)** 使用第三方工具如[Let's Encrypt WebApp Renewer](https://github.com/ohadschn/letsencrypt-webapp-renewer): ```bash git clone https://github.com/ohadschn/letsencrypt-webapp-renewer.git cd letsencrypt-webapp-renewer # 按项目文档配置 ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值