失控的防御 CDN 试用与回滚
失控的防御 CDN 试用与回滚
时间:2026-07-13
场景:VuePress 静态站部署在 Vercel,域名 DNS 在 Cloudflare
说明:本文只记方法与坑,不写账号专属 CNAME、私钥、API Token 等敏感值。
结论:Vercel 本身已是全球边缘 CDN;再套第三方 CDN 等于多一层边缘,边缘必须单独有合法 HTTPS 证书。本次因边缘证书未正确签发(浏览器 ERR_CERT_AUTHORITY_INVALID)中止,已改回 Vercel 直连。
相关旧文:网站加速方案。
1. 为什么想接
- 想多试一层「全球 / 大陆」宣传向的 CDN
- 服务商:失控的防御 scdn.io(控制台域名以官网为准)
- 免费档额度紧,可能提示超限 / 升级;即便分到接入 CNAME,证书链路仍可能不完整
2. 接入在做什么(概念)
回源
| 项 | 建议 |
|---|---|
| 加速域名 | 你的博客域名(如 blog.example.com) |
| 源站 | Vercel 边缘(面板若支持域名源站更稳;填 IP 则需 dig 官方 CNAME 得到,且 IP 会变) |
| 回源协议 | HTTPS / 443 |
| 回源 Host | 与加速域名一致(否则 Vercel 路由可能不对) |
| 忌 | 源站域名填自己、DNS 又指回 CDN → 环路 |
DNS(Cloudflare)
| 阶段 | 记录 | 指向 | 代理 |
|---|---|---|---|
| 接 CDN | 博客子域 CNAME | CDN 面板给你的接入域名 | 仅 DNS(灰云) |
| 回滚 | 同上 CNAME | Vercel 项目「域名」页里的官方目标(*.vercel-dns-*.com 一类) | 仅 DNS(灰云) |
不要开 Cloudflare 橙云 再指第三方 CDN,否则双层代理,证书和缓存都难排。
具体 CNAME 字符串以 Vercel / CDN 控制台当时显示 为准,可用
dig +short 你的域名 CNAME自查,不必写进公开文章。
3. 流量路径
Vercel 直连(当前生产常见形态):
访客 → DNS → Vercel 边缘(证书一般由 Vercel 自动签)
套第三方 CDN 时:
访客 → DNS → 第三方边缘(要单独有浏览器信任的证书)→ 回源 Vercel
源站证书 不会自动出现在第三方边缘上。
4. 踩坑
4.1 ERR_CERT_AUTHORITY_INVALID
边缘返回的不是你的域名正规证书,而是占位/测试证书(例如假 Let's Encrypt 中间机构、过期、CN 与域名不符)。Chrome 会直接拦截。
排查:
echo | openssl s_client -connect 你的域名:443 -servername 你的域名 2>/dev/null \
| openssl x509 -noout -subject -issuer -dates
期望:subject 含你的域名,issuer 为 Let's Encrypt 等正规 CA。
若是测试 CN / Fake LE / 过期 → 先修 CDN 证书,或 DNS 改回 Vercel。
4.2 面板自动签发失败
可选:
- 面板重试 / 检查套餐是否允许证书
- 自己签正规证书后 上传(证书 fullchain + 私钥)
- 改回 Vercel(本次选择)
4.3 acme.sh HTTP-01 → 404
典型日志:
Invalid response from http://你的域名/.well-known/acme-challenge/...: 404
静态站 + Vercel/CDN 上通常 没有 challenge 文件,HTTP-01 容易挂。应改用 DNS-01(Cloudflare API):
# Token 只放本机环境变量,勿提交仓库、勿写进博客
export CF_Token="…"
acme.sh --issue --dns dns_cf -d 你的域名 --server letsencrypt --force
然后在 CDN 证书页粘贴 fullchain 与 key。
注意:
- 导不出 Vercel 自动证书的私钥
- Cloudflare Origin CA 不能当「访客 → 非 CF 边缘」的公网证书
4.4 免费套餐过期
DNS 不会自动改回 Vercel。入口还指着过期 CDN 时,站点可能整站不可用。临时试用务必先记下 回滚用的 Vercel CNAME(可写在私人备忘,不必公开)。
5. 回滚(思路)
- Cloudflare DNS:博客子域 CNAME 改回 Vercel 官方目标
- 代理保持 灰云
- 等待解析生效后自检:
dig +short 你的域名 CNAME # 应回到 vercel-dns
curl -sI https://你的域名 | head -15 # 200,证书正常
CDN 控制台站点可删可留,不影响回滚后访问。
6. 经验小结
- 个人 VuePress + Vercel:默认已有全球 CDN,再套一层要单独搞定边缘证书。
- 第三方免费 CDN:接入容易,证书与稳定性才是坑。
- 证书问题优先查 边缘 证书,别先怀疑文章内容。
- 静态站签 LE:用 DNS-01,别用 webroot HTTP-01。
- 临时试用:先写好回滚解析;过期不会自动恢复。
- 域名在 Cloudflare 时,指第三方 CDN 务必 DNS only。
- 公开笔记:不要写 API Token、私钥、账号专属接入串;控制台里能看到的以控制台为准。
7. 当前状态(2026-07-13)
| 项 | 状态 |
|---|---|
| 生产入口 | 已回到 Vercel |
| HTTPS | 正常(平台自动证书) |
| 该第三方 CDN | 仅作踩坑记录,不作为生产入口 |
| 后续 | 无强需求不再接;不在意国内访问时维持 Vercel 即可 |
