certbort自动更新配置
要为阿里云(万网)域名配置 SSL 证书的自动续期,可以使用 Certbot 的 DNS 验证插件(如第三方插件 certbot-dns-aliyun
),通过阿里云 DNS API 自动完成域名所有权验证。以下是详细步骤:
1. 准备工作:获取阿里云 API 密钥
-
登录阿里云控制台
访问 阿里云控制台,进入 AccessKey 管理 页面。 -
创建 RAM 用户(推荐)
- 进入 RAM 访问控制 > 用户管理 > 创建用户。
- 输入用户名(如
certbot-dns
),勾选 OpenAPI 调用访问,点击确定。 - 保存生成的 AccessKey ID 和 AccessKey Secret。
-
授权 RAM 用户 DNS 权限
- 进入 RAM 访问控制 > 权限管理 > 授权。
- 选择刚创建的 RAM 用户,添加权限策略:
AliyunDNSFullAccess
(或最小权限:仅允许操作 DNS 解析)。
2. 安装 Certbot 和阿里云 DNS 插件
# 安装 Certbot
sudo apt install certbot
# 安装阿里云 DNS 插件(需 pip)
sudo apt install python3-pip
sudo pip3 install certbot-dns-aliyun
3. 配置阿里云 API 密钥
-
创建密钥配置文件
将阿里云 AccessKey 写入安全文件(如/etc/letsencrypt/aliyun.ini
):sudo nano /etc/letsencrypt/aliyun.ini
内容:
dns_aliyun_access_key = YOUR_ACCESS_KEY_ID dns_aliyun_access_key_secret = YOUR_ACCESS_KEY_SECRET
-
设置文件权限
sudo chmod 600 /etc/letsencrypt/aliyun.ini
4. 申请证书(使用阿里云 DNS 插件)
sudo certbot certonly \
--dns-aliyun \
--dns-aliyun-credentials /etc/letsencrypt/aliyun.ini \
-d dpnxzj.com \
-d *.dpnxzj.com # 可选:通配符证书
- 参数说明:
--dns-aliyun
: 指定使用阿里云 DNS 插件。--dns-aliyun-credentials
: 指定密钥文件路径。-d
: 域名列表(支持通配符*
)。
5. 配置 Nginx 使用证书
参考之前的 Nginx 配置,确保 ssl_certificate
和 ssl_certificate_key
指向 Certbot 生成的路径:
server {
listen 443 ssl;
server_name dpnxzj.com;
ssl_certificate /etc/letsencrypt/live/dpnxzj.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/dpnxzj.com/privkey.pem;
# 其他配置(如根目录、代理等)
root /var/www/html;
index index.html;
}
6. 配置自动续期
-
测试续期命令
sudo certbot renew --dry-run
-
添加续期后自动重启 Nginx 的钩子
创建续期后执行的脚本/etc/letsencrypt/renewal-hooks/post/reload-nginx.sh
:#!/bin/bash systemctl reload nginx
赋予执行权限:
sudo chmod +x /etc/letsencrypt/renewal-hooks/post/reload-nginx.sh
-
设置定时任务(Cron)
# 编辑 Cron 任务 sudo crontab -e
添加以下行(每天凌晨 3 点检查续期):
0 3 * * * /usr/bin/certbot renew --quiet
7. 常见问题解决
问题 1:插件未找到错误
Could not find plugin dns-aliyun
- 解决:检查是否已正确安装
certbot-dns-aliyun
:sudo pip3 list | grep certbot-dns-aliyun
问题 2:DNS 记录未生效
- 检查阿里云 DNS 解析:确认 Certbot 自动添加的
_acme-challenge
TXT 记录存在。 - 等待 DNS 传播:某些地区 DNS 生效可能需要几分钟。
问题 3:权限不足
- 密钥文件权限:确保
/etc/letsencrypt/aliyun.ini
权限为600
。 - RAM 用户权限:确认 RAM 用户已授予
AliyunDNSFullAccess
权限。
总结
- 优势:通过阿里云 DNS 插件,无需手动操作即可全自动续期 SSL 证书,适合通配符证书和批量域名。
- 关键点:
- 使用 RAM 用户最小化 API 权限。
- 保护 API 密钥文件的安全。
- 通过 Cron 和钩子脚本实现无人值守续期。
通过以上配置,阿里云域名的 SSL 证书将完全自动化管理,无需人工干预。