在日常开发和部署中,HTTPS 已经成为网站的标配,SSL 证书强制 3 个月失效,每次都要手动更新,很烦人。acme.sh
是一个轻量级、纯 Shell 实现的 ACME 协议客户端,让我们可以更方便、自动化地申请和续期 SSL 证书。文章将以 Tencent Cloud DNS 为例,帮你快速实现 DNS 验证证书自动化配置。😎
🔍 环境准备
你已经拥有一个培基于腾讯云域名的域名(如:
example.com
)新建 API 密钥 (SecretId / SecretKey)
💪 安装 .acme.sh
邮箱设置为你接受通知的邮箱号
curl https://get.acme.sh | sh -s email=my@example.com
加入 PATH:
export PATH="~/.acme.sh":$PATH
检查版本或帮助:
acme.sh --version
acme.sh --help
🔧 设置腾讯云 DNS API 环境变量
export DP_Id="123456" # 你的腾讯云资源证书的 SecretId
export DP_Key="abcdefg123456" # 对应的 SecretKey
这里 Tencent DNS API 是用 dns_dp,不是 dns_tencent
🔢 通过 DNS 验证申请 SSL 证书
以 example.com
为例:
acme.sh --issue --dns dns_dp -d example.com -d www.example.com
成功后,证书将保存在:
~/.acme.sh/example.com/
📂 部署证书到 Nginx
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.cer \
--reloadcmd "nginx -s reload"
自动把证书部署到指定路径,并重载 nginx
♻️ 自动续期设置
默认 acme.sh 会定期运行 cron 任务:
crontab -l
看到类似下面的内容即为成功:
0 0 * * * "~/.acme.sh"/acme.sh --cron --home "~/.acme.sh" > /dev/null
总结
自动化配置 HTTPS 还是很有必要的,.acme.sh
配合 Tencent DNS API 就能快速实现无人倾入的证书更新,很适合自动部署、CI/CD 场景。