在日常开发和部署中,HTTPS 已经成为网站的标配,SSL 证书强制 3 个月失效,每次都要手动更新,很烦人。acme.sh 是一个轻量级、纯 Shell 实现的 ACME 协议客户端,让我们可以更方便、自动化地申请和续期 SSL 证书。文章将以 Tencent Cloud DNS 为例,帮你快速实现 DNS 验证证书自动化配置。😎


🔍 环境准备

  • 你已经拥有一个培基于腾讯云域名的域名(如: example.com

  • 已登录 Tencent Cloud Console

  • 新建 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 场景。