先说结论:如果你有一堆域名挂在 腾讯云 CDN / 七牛云 CDN 上,且证书来源是 Let's Encrypt 这类「三个月一续」的 ACME 证书,那么你大概率经历过这种循环:
- 看到“证书快到期”的提醒
- 打开云厂商控制台,翻半天找到域名的 HTTPS 配置
- 申请/续签证书、下载、上传、绑定
- 多个域名重复 N 次,祈祷别漏掉一个
我们写了一个专门面向 CDN 场景 的证书自动化平台:Auto CDN SSL(auto-cdn-ssl)。把证书的生命周期变成一条可观测的流水线:申请/续签 → 统一管理 → 自动部署,到期不靠记忆,也不靠“人肉提醒”,全自动续签+部署,最关键的完全免费开源,拒绝伪开源。
先看图:长这样
它解决的“痛”,基本都很真实
CDN 域名多、证书多时,常见痛点不外乎这几类:
- 到期时间分散:不同平台、不同项目、不同负责人——最后总会漏。
- 重复劳动:续签 + 上传 + 绑定,每个域名都要点一遍。
- 失败不透明:到底是验证失败、签发失败,还是部署失败?很多时候只能靠猜。
Auto CDN SSL 的思路很简单:把你每天(或每三个月)在控制台做的事情,变成系统里一条“可追踪的任务”。
Auto CDN SSL 能做什么(面向 CDN 场景)
它不是“又一个 ACME 客户端”,而是把 证书管理 和 CDN 部署 合在一起:
- 统一管理:站点/域名、证书列表与到期时间、续签任务、部署记录、失败原因
- 自动续签 + 手动触发:定时续签;需要时也能一键手动续签/部署
- 域名验证:按顶级域名配置验证方式(HTTP-01 / DNS-01)
- HTTP-01:提供
/.well-known/acme-challenge/:token - DNS-01:自动写
_acme-challengeTXT(目前支持腾讯云 DNS)
- HTTP-01:提供
- 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
用起来的流程(我推荐这么走)
- 注册并完成邮箱验证后登录
- 在「凭据」新增:
- CDN 凭据:腾讯云
tencent/ 七牛qiniu - DNS 凭据(可选):腾讯云 DNS
tencent_dns(用于 DNS-01)
- CDN 凭据:腾讯云
- 在「域名验证」按 顶级域名 设置验证方式:
- HTTP-01:需要域名的
80端口可访问到/.well-known/acme-challenge/* - DNS-01(推荐):系统自动写 TXT 并等待生效
- HTTP-01:需要域名的
- 创建站点并绑定 CDN 凭据,开启自动续签(可选)
- 触发「续签」与「部署」,或等定时任务自动执行
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 也非常欢迎。