七牛云证书自动延期(acme.sh)
完整自动化需要两部分:
acme.sh 自动申请/续期证书
续期成功后,通过
qiniudeploy hook 自动上传到七牛 CDN 并绑定域名
七牛目前在 acme.sh 中主要是“证书部署目标”,不是 DNS 验证插件。因此证书验证要使用你实际的 DNS 服务商 API,例如 DNSPod、阿里云、Cloudflare。
1. 安装 acme.sh
curl https://get.acme.sh | sh -s email=你的邮箱@example.com source ~/.bashrc acme.sh --upgrade --auto-upgrade acme.sh --set-default-ca --server letsencrypt
安装程序会自动创建每日 cron;可检查:
crontab -l | grep acme.sh
acme.sh 每日检查,但只会在证书进入续期窗口时真正续期。官方说明
2. 使用 DNS API 申请证书
根据域名的权威 DNS 服务商选择一种。
DNSPod
export DP_Id="DNSPod_ID" export DP_Key="DNSPod_Token" acme.sh --issue \ --dns dns_dp \ -d example.com \ -d '*.example.com'
阿里云 DNS
export Ali_Key="AccessKeyId" export Ali_Secret="AccessKeySecret" acme.sh --issue \ --dns dns_ali \ -d example.com \ -d '*.example.com'
Cloudflare
export CF_Token="Cloudflare_API_Token" export CF_Zone_ID="Zone_ID" acme.sh --issue \ --dns dns_cf \ -d example.com \ -d '*.example.com'
API 凭据会由 acme.sh 保存,后续 cron 续期无需重新导出。更多 DNS 服务商配置见 acme.sh DNS API 文档。
如果只需要 cdn.example.com,也可以直接申请单域名证书:
acme.sh --issue --dns dns_ali -d cdn.example.com
3. 配置自动部署到七牛云
先在七牛控制台完成:
添加 CDN 域名
开启 HTTPS
在“密钥管理”创建或取得 AK/SK
然后执行:
export QINIU_AK="你的七牛AccessKey" export QINIU_SK="你的七牛SecretKey" export QINIU_CDN_DOMAIN="cdn.example.com" export QINIU_FORCE_HTTPS="true" acme.sh --deploy \ -d example.com \ --deploy-hook qiniu
这里的 -d example.com 必须是申请证书时第一个 -d 指定的主证书名称;QINIU_CDN_DOMAIN 才是七牛控制台中的实际 CDN 加速域名。
首次部署成功后,acme.sh 会保存部署配置。以后 cron 的流程就是:
检查有效期 → DNS API 验证 → 续签成功 → 上传七牛 → 更新 CDN HTTPS 配置
七牛部署 hook 的当前实现支持 AK、SK、多个 CDN 域名以及强制 HTTPS。七牛部署脚本和官方 deploy hook 文档。
多个七牛 CDN 域名共用证书
export QINIU_CDN_DOMAIN="cdn1.example.com cdn2.example.com" export QINIU_FORCE_HTTPS="true" acme.sh --deploy -d example.com --deploy-hook qiniu
如果证书本身的主名称就是 cdn.example.com,可以简化:
export QINIU_AK="你的AK" export QINIU_SK="你的SK" export QINIU_FORCE_HTTPS="true" acme.sh --deploy -d cdn.example.com --deploy-hook qiniu
此时未设置 QINIU_CDN_DOMAIN,部署脚本默认使用 -d 的域名。
4. 验证配置
查看证书续期信息:
acme.sh --info -d example.com
手动重新执行七牛部署,不需要重新签发:
acme.sh --deploy -d example.com --deploy-hook qiniu --debug 2
如果提示找不到 ECC 证书,可以加:
acme.sh --deploy -d example.com --deploy-hook qiniu --ecc --debug 2
检查定时任务整体运行:
~/.acme.sh/acme.sh --cron \ --home ~/.acme.sh \ --debug 2
不建议频繁使用 --renew --force,因为会真实重新签发证书,可能触发 CA 频率限制。
最后建议保护配置文件:
chmod 600 ~/.acme.sh/account.conf
find ~/.acme.sh -name '*.conf' -exec chmod 600 {} \;注意:DNS API 的服务商取决于域名 NS 托管在哪里,不取决于网站是否使用七牛 CDN。七牛 CNAME 只负责流量加速。

