阿里云免费 SSL 证书(如由 DigiCert、Let's Encrypt 提供) 默认不会自动续签,你需要通过 脚本或 ACME 工具 实现自动续签 + 自动部署到 Web 服务(如 Nginx)。
以下是两种常见场景的自动续签方案:
✅场景一:使用阿里云 云产品(如CDN/负载均衡) 的免费证书自动续签
阿里云控制台中,绑定云产品的免费证书(非下载使用)会 自动续签,你无需处理。
⚠️ 但如果你是手动下载证书,部署到本地服务器(如Nginx/Tomcat),则 不会自动续签。
✅ 场景二:自托管 Nginx/Web 服务,需要自动续签阿里云的免费域名证书
阿里云提供的免费证书(如 DigiCert 提供的 DV 证书),不能通过脚本自动续签。推荐方式是用 Let’s Encrypt 的免费证书,结合 DNS 验证实现全自动续签。
🛠 推荐使用 acme.sh + 阿里云 DNS 自动续签证书
步骤一:安装 acme.sh 工具
curl https://get.acme.sh | sh
source ~/.bashrc
步骤二:配置阿里云 API 密钥(用作 DNS 验证)
进入阿里云控制台申请访问密钥(AccessKey ID & Secret):
建议使用 RAM 子账号并最小权限。
export Ali_Key="你的AccessKeyID"
export Ali_Secret="你的AccessKeySecret"
步骤三:配置EAB(External Account Binding)凭据
步骤 1️⃣:注册 ZeroSSL 账户(免费)
进入 https://zerossl.com 注册账号。
步骤 2️⃣:获取 EAB 凭据
登录后访问:
👉 https://app.zerossl.com/developer
在“External Account Binding (EAB)”部分点击【Create EAB Credentials】,会生成:
- Key ID
-
HMAC Key
image.png

步骤 3️⃣:配置 acme.sh 使用 ZeroSSL 和 EAB
export EAB_KID="你刚刚获取的 Key ID"
export EAB_HMAC_KEY="你刚刚获取的 HMAC Key"
acme.sh --register-account --server zerossl --eab-kid "$EAB_KID" --eab-hmac-key "$EAB_HMAC_KEY"
步骤四:签发证书(使用阿里云 DNS 验证)
acme.sh --issue --dns dns_ali -d yourdomain.com

使用 dns_ali 插件自动创建 DNS 解析记录用于验证。
或者切换回 Let’s Encrypt(不需要 EAB):
acme.sh --set-default-ca --server letsencrypt
Nginx 配置:
ssl_certificate yourdomain.com.cer
ssl_certificate_key yourdomain.com.key
步骤五:安装证书(部署到 Nginx 等)
acme.sh --install-cert -d yourdomain.com \
--key-file /etc/nginx/ssl/yourdomain.key \
--fullchain-file /etc/nginx/ssl/yourdomain.crt \
--reloadcmd "systemctl reload nginx"
步骤六:设置自动续签
acme.sh 默认会自动续签每个证书,每天运行一次 cron job(不需手动设置)。
🧪 检查是否续签成功
acme.sh --list
查看证书状态与到期时间。
🔁 可选:强制立即续签测试
acme.sh --renew -d yourdomain.com --force
📌 总结
| 方式 | 是否自动续签 | 自动部署 |
|---|---|---|
| 阿里云控制台申请免费证书(下载到本地) | ❌ 否 | ❌ 否 |
| acme.sh + 阿里云 DNS 申请证书(Let's Encrypt) | ✅ 是 | ✅ 可自动配置 |
