Centos7用Let’s encrypt certbot生成证书并自动更新

本文介绍了如何使用certbot获取和管理SSL证书,包括安装certbot,采用standalone模式申请证书,配置Nginx的SSL,查看与删除证书,手动及自动续期证书,并设置cron作业进行定期续期。

安装 certbot

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

安装证书前

  • 安装证书前先准备个临时目录,有个 index.html
  • 配置 nginx 增加你要添加证书的 server

server{
   
   
    listen 80;
    server_name you_add_domain
    root /your/test/www/dir
    location / {
   
   
        index  index.html
    }
}

standalone 模式

有些时候我们的一些服务并没有根目录,例如一些微服务,这时候使用 --webroot 就走不通了。certbot 还有另外一种模式 --standalone,这种模式不需要指定网站根目录,他会自动启用服务器的443端口,来验证域名的归属。我们有其他服务(例如nginx)占用了443端口,就必须先停止这些服务,在证书生成完毕后,再启用。

certbot certonly --standalone -d sub.domain.com -m xxxxxx@xxx.com --agree-tos

证书生成后文件:

  • cert.pem 服务端证书
  • chain.pem 浏览器需要的所有证书但不包括服务端证书,比如根证书和中间证书
  • fullchain.pem 包括了
<think>我们正在为Apache配置Let's Encrypt自动续期证书,使用certbot工具是最常见的方法。根据引用[1]提到的ACME协议,certbot就是实现了该协议的客户端,可以自动化申请和续期Let's Encrypt证书。 步骤概览: 1. 安装certbot和Apache插件 2. 获取证书(如果尚未获取) 3. 配置自动续期 详细步骤: ### 1. 安装certbot 根据操作系统选择安装命令,以Ubuntu为例: ```bash sudo apt update sudo apt install certbot python3-certbot-apache ``` ### 2. 获取证书自动配置Apache 运行以下命令,certbot会自动检测Apache的配置引导你完成证书申请: ```bash sudo certbot --apache ``` 按照提示输入邮箱(用于紧急通知和恢复密钥)、同意服务条款,选择需要申请证书的域名。 注意:在执行此命令前,请确保: - 域名已解析到当前服务器的IP - Apache已配置好对应的虚拟主机(80端口可访问) ### 3. 测试自动续期 Let's Encrypt证书有效期只有90天,但certbot会自动设置定时任务续期。测试续期流程是否正常: ```bash sudo certbot renew --dry-run ``` 如果显示没有错误,则自动续期配置成功。 ### 4. 验证自动续期定时任务 certbot安装时会自动创建定时任务,位置通常在: ```bash /etc/crontab ``` 或 ```bash /etc/cron.d/certbot ``` 默认配置为每天运行两次,只有证书快到期时才会真正续期。 ### 5. 配置Apache自动加载新证书(可选) 默认情况下,certbot在续期后会自动重新加载Apache配置,无需额外操作。但如果你修改了Apache配置,请确保在续期后重载服务: ```bash # 检查certbot续期后执行的钩子命令 sudo certbot renew --pre-hook "service apache2 stop" --post-hook "service apache2 start" ``` 通常不需要手动设置,certbot默认会调用`apache2ctl graceful`或`systemctl reload apache2`来重新加载配置而不中断服务。 ### 注意事项 - **防火墙**:确保80和443端口开放,因为申请和续期时需要验证域名所有权(通过80端口)。 - **虚拟主机配置**:多个域名需要分别申请或使用通配符证书(通配符证书需通过DNS验证)。 - **证书位置**:certbot申请的证书通常存储在`/etc/letsencrypt/live/yourdomain.com/`目录下,其中: - `fullchain.pem`:包含证书和中间证书 - `privkey.pem`:私钥 - 在Apache配置中,通常这样引用: ```apache SSLCertificateFile /etc/letsencrypt/live/yourdomain.com/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/yourdomain.com/privkey.pem ``` ### 常见问题解决 - **续期失败**:检查80端口是否被占用(如Nginx、其他Apache实例);检查域名解析是否生效。 - **证书未自动加载**:检查Apache错误日志`/var/log/apache2/error.log`,确认是否有权限问题(certbot需要root权限,但证书文件对Apache用户可读)。 ### 自动化续期的优势 通过ACME协议自动化续期,无需人工干预,避免了证书过期导致的网站安全问题[^1]。 §§相关问题§§ 1. 如何为Nginx配置Let's Encrypt自动续期证书? 2. 如何申请Let's Encrypt的通配符证书? 3. certbot自动续期失败的可能原因有哪些? 4. 如何手动强制更新Let's Encrypt证书? </think>### 为Apache配置Let's Encrypt自动续期证书的方法 #### 核心原理 Let's Encrypt通过ACME协议实现证书自动化管理,certbot工具作为ACME客户端实现了证书申请、安装和续期的全流程自动化[^1]。证书有效期为90天,自动续期可避免服务中断。 --- ### 详细步骤 #### 1. 安装certbot工具 ```bash # Ubuntu/Debian sudo apt update sudo apt install certbot python3-certbot-apache # CentOS/RHEL sudo yum install epel-release sudo yum install certbot python3-certbot-apache ``` #### 2. 申请安装证书 ```bash sudo certbot --apache ``` 执行后会: 1. 交互式选择域名(自动检测Apache配置) 2. 自动修改Apache配置启用HTTPS 3. 生成证书存于`/etc/letsencrypt/live/yourdomain.com/` - `fullchain.pem`:证书链 - `privkey.pem`:私钥 - `cert.pem`:主证书 #### 3. 验证自动续期机制 ```bash # 测试续期流程(不实际续期) sudo certbot renew --dry-run ``` ✅ 成功输出:`The dry run was successful` #### 4. 配置自动续期定时任务 certbot自动创建定时任务: ```bash # 查看定时任务 systemctl list-timers | grep certbot ``` 默认配置: - 每天检查2次 - 距离到期<30天时自动续期 - 续期后自动重启Apache #### 5. 手动强制续期(可选) ```bash # 强制立即续期 sudo certbot renew --force-renewal ``` --- ### 关键配置说明 | 配置文件路径 | 作用 | |-------------|------| | `/etc/letsencrypt/renewal/yourdomain.com.conf` | 续期参数配置文件 | | `/etc/apache2/sites-enabled/your-site-le-ssl.conf` | certbot自动生成SSL站点配置 | | `/var/log/letsencrypt/letsencrypt.log` | 日志文件 | --- ### 故障排除 **证书未自动续期?** 1. 检查定时服务状态: ```bash sudo systemctl status cron # Ubuntu sudo systemctl status crond # CentOS ``` 2. 测试证书有效性: ```bash openssl x509 -enddate -noout -in /etc/letsencrypt/live/yourdomain.com/cert.pem ``` **续期后Apache未重启?** 手动添加钩子脚本: ```bash sudo certbot renew --pre-hook "systemctl stop apache2" --post-hook "systemctl start apache2" ``` --- ### 最佳实践 1. **邮件通知配置**: ```bash sudo certbot renew --email your@email.com ``` 2. **通配符证书申请**: ```bash sudo certbot certonly --manual --preferred-challenges=dns -d *.yourdomain.com ``` 3. **证书备份**: ```bash sudo tar -czvf letsencrypt-backup.tar.gz /etc/letsencrypt ``` > 通过ACME协议实现的全自动化管理,避免了传统CA机构的手动操作瓶颈[^1],建议每月检查续期日志: > ```bash > grep "renew" /var/log/letsencrypt/letsencrypt.log > ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值