HTTPS 证书这件事,申请的时候大家都很上心,真正出事的环节往往在续期。
尤其是现在主流的免费证书,单张有效期只有 90 天——一年要处理四次。第一次你会设个日历提醒,第二次靠邮件通知,第三次大概率就忘了。等到某个周一早上用户截图发来"您的连接不是私密连接",你才想起来证书三天前已经过期。
这篇不聊怎么申请,只解决一个问题:把"续期"这件事从人工操作变成机制。下面把三种自动化程度不同的路线摆在一起对比,并给出可直接复制的配置和踩坑点。
一、先分清:哪些证书能自动续期,哪些根本不能
这是最容易踩空的认知一步。不是所有证书都支持自动续期,阿里云上几类证书的续期能力差别很大:
| 证书类型 | 单张有效期 | 是否支持自动续期 | 到期后怎么处理 |
|---|---|---|---|
| 个人测试证书(免费版) | 90 天 | 不支持 | 用当年剩余免费额度重新申请新证书 |
| 个人测试证书(Pro) | 6 个月(2026-02-25 及之后签发) | 不支持(无托管能力) | 重新购买并申请 |
| 正式证书(DV/OV/EV) | 订阅期内自动连发多张 | 支持,需开启证书托管(付费) | 系统自动申请新证书并部署 |
几个必须记住的规则:
- 免费版不能自动续期,也不能"续费",它压根没有续费入口。到期后不会自动返还额度,需要用当年剩余额度重新申请一张新证书。免费额度按自然年计算,每年 20 张,年末清零(已签发的证书不受影响)。
- "自动续费"和"自动托管"是两个不同的收费项。自动续费解决的是"订阅到期自动扣款"(系统通常在到期前 9 天开始扣款);自动托管解决的是"自动申请新证书 + 自动部署到云产品"。买了自动续费不等于证书会自动换新。
- 托管是收费的,且不包含证书本身的钱。它是把申请、域名验证、部署这几步交给系统去做的服务费。
所以结论很清楚:如果你用的是免费证书,续期必须由你自己的机制来兜;如果你用的是正式证书,可以花钱买托管;如果你的站点跑在云产品上,还有第三条更省事的路。
二、方案一:acme.sh 自动续签(自建服务器,零成本)
适用场景:Nginx / Apache 跑在 ECS 或自有服务器上,证书直接装在 Web 服务器里。
原理不复杂:acme.sh 是一个 ACME 协议客户端,它向 Let's Encrypt、ZeroSSL 这类免费 CA 申请证书,并用 DNS API 自动完成域名所有权验证,最后把新证书装到指定路径并重载服务。装好之后,剩下的交给 cron。
第 1 步:安装
curl https://get.acme.sh | sh -s email=you@example.com
第 2 步:配置 DNS API 凭证
用阿里云 DNS 自动验证时,acme.sh 需要一对有云解析权限的 AccessKey。不要用主账号 AK,建议新建一个 RAM 子账号,只授予 AliyunDNSFullAccess:
export Ali_Key="<RAM用户的AccessKeyId>"
export Ali_Secret="<RAM用户的AccessKeySecret>"
第 3 步:签发证书
acme.sh --issue --dns dns_ali -d example.com -d www.example.com --server letsencrypt
裸域名和 www 要分别写 -d,少写一个就会出现"主域名正常、www 报警"的情况。
第 4 步:安装到 Nginx 并配置重载
acme.sh --install-cert -d example.com \
--key-file /etc/nginx/ssl/example.com.key \
--fullchain-file /etc/nginx/ssl/example.com.crt \
--reloadcmd "nginx -s reload"
这里的 --reloadcmd 是整个方案的关键。证书换了文件但 Nginx 不重载,内存里用的还是旧证书,表现为"明明续期成功了,浏览器还报过期"。用 --fullchain-file 而不是 --cert-file,可以顺带避免证书链不完整导致的安卓端报错。
第 5 步:确认定时任务已生效
crontab -l | grep acme
安装时 acme.sh 会自动写入一条每天执行的任务,默认在证书剩余 30 天内自动续签,并通过 --reloadcmd 完成部署。
| 维度 | 说明 |
|---|---|
| 成本 | 免费(CA 证书免费,脚本开源) |
| 自动化程度 | 签发、续期、部署全自动 |
| 前提条件 | 服务器可执行脚本;域名 DNS 在阿里云或可走 DNS API |
| 主要代价 | 首次配置需要动手;要自己维护脚本和监控 |
三、方案二:阿里云证书托管(云产品场景,付费省心)
适用场景:TLS 在云产品上终结,比如 CDN、负载均衡 SLB/ALB/NLB、WAF、DDoS 高防。
开启托管后,系统会在证书剩余有效期不足 15 天时自动发起下一张证书的申请,签发完成后自动部署到已关联的云产品。你基本不用管流程,只需要保证两件事:
- 账户里有足够的托管授权数。1 个授权对应 1 次"到期自动更新 + 自动部署",购买后不立即签发,只在真正触发续签时扣减;授权数不设有效期,到期后仍可使用剩余次数。部分规格的证书(如专业版、旗舰版服务)已内含不限次数的自动托管能力,无需单独购买授权数。
- 域名已授权免验证。如果域名就在当前账号下、且使用阿里云云解析,自动验证可以顺利走通;否则你仍需要在窗口期内配合完成域名所有权验证,否则签发会失败。
这个方案最容易误解的一点:托管的自动部署只覆盖已关联的阿里云云产品。部署在 ECS 自建 Nginx/Apache 或线下服务器上的证书,新证书签发后仍然需要你手动下载并安装——不是开了托管就一劳永逸。
| 维度 | 说明 |
|---|---|
| 成本 | 托管服务按授权数预付费,具体价格以购买页为准;不含证书本身费用 |
| 自动化程度 | 云产品全自动;自建服务器仍需手动部署 |
| 触发时机 | 当前证书剩余有效期不足 15 天 |
| 主要限制 | 免费版/Pro 不支持;自建服务器不自动替换证书文件 |
如果站点同时有云产品和自建服务器,推荐组合使用:云产品侧交给托管,自建服务器侧用方案一的脚本兜底。证书与托管规格的实时价格、活动优惠,以 阿里云数字证书管理服务 页面实时展示为准。
四、方案三:HTTPS 加速网关(把证书彻底交出去)
适用场景:站点是展示型、浏览型,你完全不想碰证书文件的申请与续期。
这类场景的做法是:不单独申请证书,把域名接入 HTTPS 加速网关,由平台完成证书申请、自动更新与 HTTPS 加速。你只需要把解析指过去,不用配置任何脚本。
参考价格(以官方页面实时展示为准,活动价变化频繁):
| 版本 | 域名类型 | 参考价格 |
|---|---|---|
| 入门版 | 单域名 | ¥109/年(宣传口径 9.9 元/月起,支持按月续费) |
| 基础版 | 单域名 | ¥319/年 |
| 基础版 | 通配符 | ¥1309/年 |
需要注意:入门版对域名后缀有限制(如 org、jp 等特殊后缀不支持),对后缀有要求的场景要用基础版;另外域名流量会经网关转发,适合静态展示型站点,不适合所有业务类型。
| 维度 | 说明 |
|---|---|
| 成本 | 按年/按月付费,比自建高,但比"雇人管证书"低 |
| 自动化程度 | 最高:不申请、不续期、不部署 |
| 前提条件 | 域名解析可指向网关;后缀符合版本要求 |
| 主要代价 | 流量经网关转发;对站点架构有约束 |
五、三种方案怎么选
| 你的情况 | 建议方案 | 核心理由 |
|---|---|---|
| Nginx/Apache 装在 ECS 或自有服务器 | acme.sh | 零成本、全自动,一次配置长期有效 |
| 站点在 CDN / SLB / WAF 等云产品上 | 证书托管 | 云产品侧真正免运维,花钱换人力 |
| 云产品 + 自建服务器混合 | 托管 + acme.sh | 两边各走各的自动化路径 |
| 纯展示型站点、不想碰技术细节 | HTTPS 加速网关 | 连证书都不用申请,接入即 HTTPS |
| 还在用免费证书且不打算加机制 | —— | 一年四次人工续期,漏一次就是线上事故 |
六、八条避坑清单
- 以为免费证书能自动续期。免费版和 Pro 版都没有托管能力,到期必须重新申请,别忘了额度按自然年清零。
- 把"自动续费"当成"自动托管"。前者只管扣款,后者才管换证书,两个收费项。
- 开了托管就以为自建服务器也自动更新。托管自动部署只覆盖已关联的云产品,ECS 上的证书文件要自己换。
- 忘了托管有 15 天触发阈值。系统在剩余有效期不足 15 天时才发起申请,域名又未授权免验证的话,验证环节可能卡住——别等到最后三天才看。
- acme.sh 直接用主账号 AK。应新建 RAM 子账号、只授 DNS 解析权限,最小化凭证暴露面。
- 配了续期没配重载。缺
--reloadcmd,Nginx 会继续用内存里的旧证书,白忙一场。 - 只续裸域名或只续 www。域名写全,签发后两个入口都验一遍。
- 没有到期监控。任何自动化都可能失败(DNS 改动、额度耗尽、验证超时),加一条最低成本的巡检:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \
| openssl x509 -noout -subject -dates
把这条命令挂到定时任务里,到期前 15 天开始告警,比任何"我记得"都可靠。
小结
证书续期的本质是用机制替代记忆。三条路线的取舍很清晰:自建服务器走 acme.sh,零成本、自动化完整;站点在云产品上就走证书托管,花钱把申请与部署交出去;不想碰技术细节的展示型站点,用 HTTPS 加速网关一步到位。
无论选哪条,都建议顺手做两件事:把"证书剩余天数"纳入监控告警;确认自己的证书类型到底支不支持托管——免费证书不支持这件事,越早知道越好。各方案的规格与价格均以官方页面实时展示为准,配置前建议再对照帮助中心的最新说明。