再也不想手动续签 CDN 证书了:Auto CDN SSL 申请/续签/部署一条龙搞定

0 阅读4分钟

先说结论:如果你有一堆域名挂在 腾讯云 CDN / 七牛云 CDN 上,且证书来源是 Let's Encrypt 这类「三个月一续」的 ACME 证书,那么你大概率经历过这种循环:

  • 看到“证书快到期”的提醒
  • 打开云厂商控制台,翻半天找到域名的 HTTPS 配置
  • 申请/续签证书、下载、上传、绑定
  • 多个域名重复 N 次,祈祷别漏掉一个

我们写了一个专门面向 CDN 场景 的证书自动化平台:Auto CDN SSL(auto-cdn-ssl)。把证书的生命周期变成一条可观测的流水线:申请/续签 → 统一管理 → 自动部署,到期不靠记忆,也不靠“人肉提醒”,全自动续签+部署,最关键的完全免费开源,拒绝伪开源。


先看图:长这样

控制台首页

站点列表


它解决的“痛”,基本都很真实

CDN 域名多、证书多时,常见痛点不外乎这几类:

  1. 到期时间分散:不同平台、不同项目、不同负责人——最后总会漏。
  2. 重复劳动:续签 + 上传 + 绑定,每个域名都要点一遍。
  3. 失败不透明:到底是验证失败、签发失败,还是部署失败?很多时候只能靠猜。

Auto CDN SSL 的思路很简单:把你每天(或每三个月)在控制台做的事情,变成系统里一条“可追踪的任务”。


Auto CDN SSL 能做什么(面向 CDN 场景)

它不是“又一个 ACME 客户端”,而是把 证书管理CDN 部署 合在一起:

  • 统一管理:站点/域名、证书列表与到期时间、续签任务、部署记录、失败原因
  • 自动续签 + 手动触发:定时续签;需要时也能一键手动续签/部署
  • 域名验证:按顶级域名配置验证方式(HTTP-01 / DNS-01)
    • HTTP-01:提供 /.well-known/acme-challenge/:token
    • DNS-01:自动写 _acme-challenge TXT(目前支持腾讯云 DNS)
  • CDN 部署:续签后自动部署或手动一键部署到:
    • 腾讯云 CDN
    • 七牛云 CDN
  • 站点同步:从云厂商同步在用域名、HTTPS 状态与当前证书信息,自动生成/更新站点
  • 安全设计:云厂商凭据与私钥 AES-256-GCM 加密存储(DATA_ENCRYPTION_KEY
  • 多用户:注册/登录/刷新 Token;SMTP 邮箱验证

适合谁用?

如果你符合下面任意一条,都挺适合:

  • 多个域名挂在腾讯云/七牛云 CDN 上(个人项目、团队项目都行)
  • 证书统一用 Let's Encrypt(或其它 ACME)签发
  • 不想再靠“日历提醒”续签证书
  • 想把“续签/部署失败原因”沉淀下来,方便复盘

如果你只有 1 个域名且完全不怕手动点控制台,那可能还不需要上系统(除非你就是想少操心)。


5 分钟跑起来(自托管试用)

下面用于快速跑通流程;生产部署建议看仓库里的 PM2 + Nginx 文档。

依赖

  • Node.js 20+
  • MySQL 8+
  • SMTP(用于注册邮箱验证)

启动

git clone https://github.com/Littleor/Auto-CDN-SSL.git
cd Auto-CDN-SSL
yarn install

cp apps/backend/.env.example apps/backend/.env
cp apps/frontend/.env.example apps/frontend/.env

# 填写 apps/backend/.env 里的 MYSQL_* / SMTP_* / JWT_SECRET / DATA_ENCRYPTION_KEY 等

yarn dev
  • 控制台:http://localhost:5173
  • API 健康检查:http://localhost:4000/health

用起来的流程(我推荐这么走)

  1. 注册并完成邮箱验证后登录
  2. 在「凭据」新增:
    • CDN 凭据:腾讯云 tencent / 七牛 qiniu
    • DNS 凭据(可选):腾讯云 DNS tencent_dns(用于 DNS-01)
  3. 在「域名验证」按 顶级域名 设置验证方式:
    • HTTP-01:需要域名的 80 端口可访问到 /.well-known/acme-challenge/*
    • DNS-01(推荐):系统自动写 TXT 并等待生效
  4. 创建站点并绑定 CDN 凭据,开启自动续签(可选)
  5. 触发「续签」与「部署」,或等定时任务自动执行

CDN 场景我个人更推荐 DNS-01:不需要暴露 80 端口,也不怕你线上入口在 CDN/WAF 后面绕来绕去。


技术栈(给想二开/贡献的人)

  • 前端:React + Vite + TypeScript + Tailwind(shadcn 风格组件)
  • 后端:Node.js + TypeScript + Fastify
  • 数据库:MySQL
  • 调度:node-cron
  • 证书:ACME(Let’s Encrypt)+ 开发环境自签
  • 安全:AES-256-GCM 加密存储敏感数据

最后:欢迎来一起把“证书这件小事”彻底自动化

目前已支持:

  • CDN:腾讯云、七牛云
  • DNS-01:腾讯云 DNS

我们也很希望把更多云厂商(CDN/DNS)接进来,让更多人不用再在控制台里重复劳动。

  • 仓库:github.com/Littleor/Au…
  • 如果你愿意点个 Star,就是对我们最大的鼓励;Issue/PR 也非常欢迎。