ZeroSSL 90 天证书到期前必须做的 5 件事: HTTPS 续期 SOP 完整流程

作者: 陈志远 | 2026-09-04 | 工具教程 / 4 分钟读完 | 5 步 SOP

上篇文章 (8/29 W6) 我给老 PRO 工具装上 ZeroSSL 正式证书, 当时说 "90 天后续期 SOP 我会单独写一篇", 兑现承诺。今天是 9/4, 距离 8/27 签发还剩 83 天, 但我已经按 SOP 演练了一遍 (用 staging 域名), 顺便把流程固化成 5 步脚本。

这篇文章是给 跟我一样: 自己跑自部署工具 + 装过 ZeroSSL 证书 + 不想配 ACME agent + 愿意每季度手动 5 分钟换一次证书的朋友。

1到期待时: ZeroSSL 自动发提醒邮件

ZeroSSL 在证书到期前 14 天 发邮件提醒 (发到申请时的邮箱)。如果你用 Resend / Gmail 收信, 设个 zerossl@yourdomain.com 过滤器, 不会漏。

收到邮件长这样:

Subject: [ZeroSSL] Your certificate for www.baccpc.com will expire in 14 days

Hi 陈志远,
The certificate for www.baccpc.com issued on 2026-08-27
will expire on 2026-11-25 (in 14 days).

To renew: https://app.zerossl.com/certificate/xxxxxx/renew

- ZeroSSL Team

不要点邮件里的链接 (虽然是真的, 但习惯直接去 app.zerossl.com 操作更稳)。

2ZeroSSL 控制台 reissue: 5 秒搞定新证书

  1. 登录 app.zerossl.com
  2. 左侧 Certificates → 找到 www.baccpc.com 那张 (Expired in 14 days)
  3. 点右侧 "Renew Certificate" 按钮
  4. 弹窗: "Choose a verification method" → 选 DNS CNAME (跟首次一样, 不要改 HTTP 因为 80 端口被 IIS 占了)
  5. 点 "Next" → ZeroSSL 生成 新 CNAME 记录 (hash 会变!)

坑 #1: 续期 CNAME 跟首次 CNAME 完全不一样。首次是 _5CA856F20F2D109CF6B26F0927B1A43C, 续期可能是 _A8F7BC2D3E1F4A5B6C7D8E9F0A1B2C3D。必须删旧 CNAME + 加新 CNAME, 不能只改值。

3GoDaddy DNS: 删旧 CNAME + 加新 CNAME (10 分钟)

登录 dcc.godaddy.com → 我的产品 → 域名 → baccpc.com → DNS → 记录:

  1. 找到 _5CA856F20F2D109CF6B26F0927B1A43C.baccpc.com 这条 CNAME → 删
  2. 点 "添加" → 类型 CNAME → 主机 _A8F7BC2D3E1F4A5B6C7D8E9F0A1B2C3D → 值 9f7b11cfa5af85172870e15936857fb9.4a282cda8c9d892096197e0833bf72a0.ab12883837f650a.comodoca.com → TTL 600 (10 分钟) → 保存
  3. 等 5-10 分钟, 验证:
# Windows PowerShell
nslookup -type=cname _A8F7BC2D3E1F4A5B6C7D8E9F0A1B2C3D.baccpc.com

# 应该返回 canonical name = 9f7b...comodoca.com
# 没返回? 等 5 分钟再试

返回 ZeroSSL 控制台 → 看到 "Verified" 绿色对勾 → 点 "Download Certificate" → 拿 certificate.crt + ca_bundle.crt

4Flask 服务器: 替换 cert.pem + 重启 (3 分钟)

下载后用 W6 文章里写的 Python cryptography 库严格 LF 拼 cert.pem 脚本, 拷到 D:\phd824\:

# PowerShell 5.1: 解压 zip 后跑
python _patch_old_pro_https_8_27.py
# 脚本自动: 备份 cert.pem -> cert.pem.bak_8_27
#          拼 leaf + chain -> cert.pem (严格 LF)
#          cryptography 库验证公钥匹配
#          杀 Python 进程
#          启动 Flask + 等 8 秒 + netstat 8000/8443

或者手动:

  1. PowerShell Get-Process python | Stop-Process -Force
  2. Python: from cryptography.x509 import load_pem_x509_certificate; c = load_pem_x509_certificate(open('cert.pem','rb').read()); print(c.not_valid_after) 验证新证书
  3. 重新 cd D:\phd824; python app.py (后台)
  4. netstat -an | findstr 8443 看到 LISTENING

坑 #2: Flask 不会自动 reload cert.pem, 必须 kill + 重启。停服 5-10 秒, 用户无感。

5验证: HTTPS 不中断 (1 分钟)

  1. 浏览器开 https://www.baccpc.com:8443/ (PHD) → 看证书信息, 应该显示新 90 天有效期
  2. 浏览器开 https://www.baccpc.com:8000/ (老 PRO) → 同上
  3. 手机 4G/5G 测一次, 绿锁在

完整流程 5 分钟 (不包括 DNS 传播 10 分钟等待)。

ZeroSSL renew 5 步流程 checklist 图 1: 续期 5 步 checklist 一图流 (邮件 → reissue → DNS → 替换 → 验证)

整年续期日历: 4 个动作, 4 个日期

如果你也想 90 天自动续, 收藏这个表:

签发日续期动作日 (提前 14 天)新证书生效证书到期
2026-08-272026-11-11 (周二)2026-11-122026-11-25
2026-11-252027-02-10 (周三)2027-02-112027-02-23
2027-02-232027-05-11 (周二)2027-05-122027-05-24
2027-05-242027-08-10 (周二)2027-08-112027-08-22

把上面 4 个续期动作日加到日历提醒, 标题 "🔒 HTTPS 续期" + 提前 1 周再设个重复提醒。

为什么不配 ACME 自动续期?

你可能问: "ZeroSSL 2025 不是支持 ACME 吗, 干嘛还手动?"

理由:

  1. 复杂度: ACME agent (acme.sh / certbot) 装服务器 + DNS API token + cron 任务 + 监控失败告警。一次性 30 分钟配置, 每年维护 1 小时
  2. 风险: 自动化失败率高 (DNS API 改版 / cron 漏跑 / 文件权限错), 出问题往往是 12 点深夜, 用户满屏红锁
  3. 成本: 1 年 4 次手动 5 分钟 = 20 分钟/年, 跟自动差不多, 还能顺便看日志确认

我选手动 + 日历提醒。如果你是 10+ 域名 / 公司级, 再考虑 ACME。

踩坑清单 (省你 30 分钟)

  1. 续期 CNAME hash 全变 → 必须删旧 + 加新, 不能只改值
  2. Flask 不自动 reload cert → 必须 kill + 重启
  3. GoDaddy DNS 改完没等满 5 分钟 → nslookup 验证再操作
  4. PowerShell 拼 cert.crt 引入 CRLF → 用 Python cryptography 库, 严格 LF
  5. 到期日没记在日历 → 提前 14 天邮件 + 提前 7 天日历重复 + 提前 1 天日历

每条都是 W6 装证书 + W7 续期演练时实际踩过的, 不是抄文档。

续期前后对比 timeline 图 2: 续期 90 天周期可视化 (签发 → 14天前提醒 → 续期动作 → 新证书生效 → 到期)

SSL 监控: 让 Google 帮你盯着

还有个免费被动保险: Google Transparency Report 有个 Safe Browsing 服务, 但要主动提交。

更简单: 把 https://www.baccpc.com/ 提交到 GSC, GSC 会在 SSL 过期前 7 天给你发邮件。这是 Google 主动监控, 不需要你装 agent。

结论: HTTPS 续期没那么复杂, 别被自动化吓退

ZeroSSL 90 天续期 = 5 步 + 5 分钟 + 一年 4 次, 加上日历提醒, 总时间投入 25 分钟/年。配 ACME 自动可能省 5 分钟, 但增加运维复杂度 + 失败风险。

下周我打算写一篇 "HTTPS 加密原理: 5 分钟给非技术读者讲明白", 接着 SSL 主题, 但换科普角度 (跟 W6/W7 工具向不同)。如果你对 ZeroSSL 装 IIS ARR 反代感兴趣 (用 IIS 终结 80/443 TLS, Flask 只跑 8000 内部端口) 也留言告诉我。

想看 W6 装 SSL 实战 6 小时全过程? 戳 PRO 工具装 SSL 实战

关于作者: 陈志远, BaccAI 创始人, 12 年 web 部署经验, 写 百家乐工具评测算法分析。本文 ZeroSSL 续期 SOP 基于自家 PHD + 老 PRO 双 Flask 服务器实操, 5 步流程 9/4 用 staging 域名演练通过。

本文 URL: baccai.com/blog/zerossl-90-day-renewal-sop-2026.html