第一次申请 SSL 证书的人几乎都会卡在这一步——选验证方式。界面上摆着 HTTP-01、DNS-01,有时还有个 DNS 委派,三个选项,点哪个?
先说"验证"是在验什么
申请 SSL 证书,本质上是在跟一个叫 CA(证书颁发机构) 的机构说:"这个域名是我的,给我发张证书。"
但 CA 不认识你,它需要你证明你确实控制这个域名。验证方式说白了就是:CA 出一道"作业题",你去完成它,CA 看到你完成了,就相信你是这个域名的主人。
HTTP-01 和 DNS-01 是两种不同的"出题方式",DNS 委派则是一种"做题辅助方案"。下面一个一个说。
HTTP-01:在网站上放一个文件
原理
CA 说:"你在 http://你的域名/.well-known/acme-challenge/ 这个路径下放一个特定内容的文件,我去访问,访问到了就算验证通过。"
你按要求放好文件,CA 去 HTTP 请求这个 URL,拿到正确内容,验证完成,证书签发。
优点
- 操作直观,只要能控制网站根目录,放个文件就行
- 不需要动 DNS,对 DNS 权限没有要求
限制
- 你的服务器必须公网可访问,而且 CA 固定从 80 端口发起请求
- 不支持通配符证书(即
*.example.com),每个域名都要单独放验证文件 - 国内申请时可能受网络影响,因为主流 CA 的验证请求大多从境外发起,特别是政务云等特殊网络环境下,HTTP 请求可能不稳定,导致验证失败
适合谁
部署在公网服务器上的网站,不需要通配符证书,没有 DNS 管理权限的。
DNS-01:在 DNS 里加一条记录
原理
CA 说:"你在你的域名下加一条 TXT 记录,内容是我给你的这串随机值,我去查 DNS,查到了就算验证通过。"
你去域名的 DNS 管理后台(比如阿里云、Cloudflare、腾讯云),手动加一条:
_acme-challenge.你的域名. TXT "CA给你的那串随机值"
CA 查到这条记录,验证通过。加完记录想确认 CA 能不能查到,可以用 DNS 验证记录与 CAA 检查 在几个公共 DNS 上同时查一下。
优点
- 服务器不需要公网访问,内网服务器也能用
- 支持通配符证书,这是 HTTP-01 做不到的
- 添加 DNS 解析即可,一般对网络环境和技术要求更低,验证更稳定
限制
- 需要有 DNS 管理权限
适合谁
需要通配符证书的、服务器在内网的、或者不想开 80 端口的场景。
对比一下
| HTTP-01 | DNS-01 | |
|---|---|---|
| 操作位置 | 在服务器上放文件 | 在 DNS 后台加解析记录 |
| 服务器需要公网 | 必须 | 不需要 |
| 支持通配符证书 | ❌ | ✅ |
| 受网络环境影响 | 较大,特别是国内访问境外 CA 时 | 较小,DNS 解析相对稳定 |
| 配置难度 | 单台服务器很简单;多台服务器、有 CDN 或强制跳转时容易出问题 | 手动加一条记录即可;自动续期需要 DNS 服务商提供 API |
DNS 委派:DNS-01 的进阶用法
说完了两种验证方式,再来说 DNS 委派——这不是第三种验证方式,它是基于 DNS-01 的一个优化方案。
DNS-01 验证本身不复杂,但如果你想让证书自动续期,就必须让工具能在每次续期时自动写入新的 TXT 记录——也就是说,工具需要能调用你 DNS 服务商的 API。
这里有两个现实问题
-
不是所有 DNS 服务商都支持 API。很多域名托管在一些小众或者老牌的服务商,根本没有 API 可以调用,只能手动登录后台改记录——每次续期都得手动操作一次(90 天的证书通常 60 天左右就要续,以后有效期还会继续缩短),繁琐且容易忘。
-
就算有 API,主域的权限也太重。你的主域名 DNS 管着整个网站的解析,把 API Key 交给证书工具,意味着这个工具理论上可以改动你所有的 DNS 记录——权限太大,一旦 Key 泄漏或者工具出问题,整个域名的解析都可能被波及。
DNS 委派就是为了同时解决这两个问题而出现的。
DNS 委派怎么解决这个问题
DNS-01 验证固定查询这个名字:
_acme-challenge.example.com
你在主域的 DNS 里给它加一条 CNAME,指向另一个专门用于验证的 DNS Zone,比如放在一个独立的、权限受控的 DNS 服务上:
_acme-challenge.example.com. CNAME f3a9c1d2.acme-validation.example.net.
之后,所有的 ACME TXT 记录都去那个专用 Zone 里写。CA 查询时,会跟着 CNAME 走,最终找到正确的 TXT 记录,验证通过。
好处是什么
- 主域的 DNS 只需要加一次 CNAME,以后都不用动——无论证书续期多少次
- 证书工具拿到的只是那个专用小 Zone 的 API Key,碰不到主域的其他解析记录
- 主域 DNS 用什么服务商都行,哪怕完全不支持 API 也没关系——验证这边单独用一个支持 API 的服务来处理
需要注意的是,委派缩小的是 DNS 写权限,不是证书签发风险:谁能控制这个验证 Zone,谁就能为你的域名通过验证、申请证书。所以验证 Zone 的凭证仍然要妥善保管。
LapseZero 就支持 DNS 委派:在主域加一次 CNAME,之后每次续期都能自动完成验证。
适合谁
- 想实现证书自动续期,但主域 DNS 服务商不提供 API 的
- 有 API 但不想把主域的完整 DNS 权限暴露给证书工具的
- 需要统一管理多个域名续期的
选哪个?
这三者并不是互斥的,根据你当前的现实情况:
- 要通配符证书 → 必须 DNS-01 或 DNS 委派
- 有 DNS 管理权限 → 优先 DNS-01 更简单更稳定
- 想自动续期,但主域 DNS 没有 API 或不想交出主域 DNS 权限 → DNS 委派,只需在主域加一次 CNAME
- 没有 DNS 管理权限 → 只能 HTTP-01,但要注意网络环境和服务器配置可能带来的验证问题
理解了背后的原理,选起来就不纠结了。
如果你还在纠结证书该不该花钱,可以看看另一篇免费 vs 付费 SSL 证书,里面讲了两者在验证级别、信任背书和服务支持上的区别。