DNS 委派
DNS 委派用一条 CNAME 记录把 _acme-challenge 的解析交给 BeeSSL,此后该域名的签发与每 90 天一次的续期都不再需要手工添加 TXT 记录。本文说明记录的格式、一条 CNAME 为何同时覆盖主域名与泛域名、委派交出了哪些权限,以及如何撤销。
手动方式下,每次签发和每 90 天一次的续期都要在 DNS 控制台添加一条新的 TXT 记录,因为 CA 每次下发的验证值都不同。DNS 委派(也称 CNAME 委派)把 _acme-challenge.example.com 通过一条 CNAME 指向本站,此后每次验证所需的 TXT 值由本站写入。这条 CNAME 添加一次即可,之后无需再动。
与手动方式的区别
| 手动添加 TXT | DNS 委派 | |
|---|---|---|
| 首次签发 | 添加一条或两条 TXT 记录 | 添加一条 CNAME 记录 |
| 每次续期 | 再次添加新的 TXT 记录 | 无需操作 |
| 同时签发泛域名 | 需要两条同名 TXT 记录 | 同一条 CNAME 覆盖 |
| 记录的去留 | 签发后可删除,续期时再加 | 长期保留 |
委派只改变验证环节。签发后的下载与部署,以及续期后重新部署的要求,与手动方式相同。
开启委派
开启分三步,其中只有第二步需要离开本站:
- 在本站为域名开启委派。 系统为该域名生成一个随机标识,并给出需要添加的 CNAME 记录。
- 在域名的 DNS 控制台添加这条 CNAME 记录。 格式见下表。这一步只需做一次,此后不必再修改。
- 返回本站点击「检查委派」。 系统确认这条 CNAME 已生效且指向正确的目标后,委派即开启。
| 字段 | 值 |
|---|---|
| 记录类型 | CNAME |
| 主机记录 | _acme-challenge(部分服务商要求填写完整的 _acme-challenge.example.com) |
| 记录值 | 本站给出的目标主机名,形如 ab12cd34.acme.beessl.cn,需完整复制 |
| TTL | 保持默认即可 |
若 _acme-challenge 下已经存在手动方式留下的 TXT 记录,添加 CNAME 之前必须先把它们删掉。DNS 协议规定 CNAME 不能与任何其他类型的记录同名共存(RFC 1034)。遇到这种情况,部分控制台会报错拒绝,部分会静默覆盖其中一条,两种结果都不是预期状态。这是开启委派时最容易出问题的一步。
记录生效所需的时间取决于 DNS 服务商的传播速度;若此前同名下存在 TXT 记录,还受旧记录 TTL 的影响。本站无法加速这一过程,检查未通过时稍后重试即可。
检查未通过时
先用命令行确认记录的实际状态,这可以排除本机与本地网络缓存的干扰:
# 查询 CNAME 的实际指向
dig +short CNAME _acme-challenge.example.com
# 若怀疑本地缓存干扰,直接向权威服务器查询
dig +short NS example.com
dig +short CNAME _acme-challenge.example.com @ns1.example-dns.com预期返回本站给出的目标主机名。末尾多出的一个点是 dig 的显示习惯,不影响判断。对照返回结果:
| 返回内容 | 通常原因 |
|---|---|
| 没有任何结果 | 记录尚未生效,或添加在了错误的域名下 |
| 目标与本站给出的不一致 | 记录值复制不完整,或误填了另一个域名的目标 |
| 同名下仍能查到 TXT 记录 | 旧的 TXT 记录未删除,CNAME 未能生效 |
记录名变成了 _acme-challenge.example.com.example.com | 服务商只需填写 _acme-challenge,却填写了完整名称 |
一条 CNAME 同时覆盖主域名与泛域名
example.com 与 *.example.com 在 ACME 协议中使用同一个验证名 _acme-challenge.example.com。手动方式下,这意味着要在同一个名字下添加两条值不同的 TXT 记录,也是手动验证最常见的失败原因。
委派之后这个问题不再存在:CNAME 只负责把 _acme-challenge.example.com 指向本站,两个验证值都由本站写入,DNS 服务商是否支持同名多值 TXT 不再重要。因此一个域名只需要一条 CNAME,无论证书是否包含泛域名。
子域名需要各自的 CNAME
验证名随证书中的域名而定。为 www.example.com 单独签发证书时,验证名是 _acme-challenge.www.example.com,与 example.com 的委派无关,需要在本站为 www.example.com 单独开启委派,并另外添加一条 CNAME:
| 字段 | 值 |
|---|---|
| 记录类型 | CNAME |
| 主机记录 | _acme-challenge.www |
| 记录值 | 本站为 www.example.com 给出的目标主机名 |
若 www.example.com 已被 *.example.com 覆盖,则无需单独签发,也就无需单独委派。单独委派的子域名计入委派数量,见数量限制。
委派交出了什么
把解析指向第三方之前,应当清楚交出的范围。
委派交出的是 _acme-challenge.example.com 这一个名字的解析控制权:本站可以决定这个名字解析出什么内容。这个名字的用途只有一个——回答 CA 的 DNS-01 验证。控制它意味着能为 example.com 通过 DNS-01 验证,这正是委派要达到的效果,也是它的全部范围。
没有交出的:
- 域名的其他任何记录。 A、AAAA、MX、
www等记录仍在原来的 DNS 服务商处,本站看不到,也改不了。 - 域名所有权与 DNS 账号。 开启委派不需要提供 DNS 服务商的账号、API 密钥或任何凭证,本站对域名的 DNS 配置没有写入权限。
- 收回的权利。 这条 CNAME 在自己的 DNS 控制台里,随时可以删除;删除后本站对该名字不再有任何影响,域名回到手动模式。
此外,公开 CA 签发的每一张证书都会进入证书透明度日志。以该域名名义签发过什么证书,是任何人都可以查证的。
委派之后
此后为该域名发起的申请,验证由系统自动完成,无需再添加任何记录。续期申请在到期前 30 天由系统创建后,同样自动完成验证并签发。
请长期保留这条 CNAME,不要像 TXT 记录那样在签发后删除;它一旦缺失,下一次续期就会退回手动方式。
委派改变的只有验证环节。证书签发后仍需下载与部署,续期后仍需重新部署,这一点与手动方式相同。建议同时开启证书监控,以便发现「已续期但未部署」的情况。
数量限制
免费版可以为 1 个域名开启委派,更多域名需要付费套餐。单独委派的子域名计入这一数量。当前套餐的额度可在「设置」页面查看。
撤销委派
两种方式任选其一:在本站关闭该域名的委派,或直接在 DNS 控制台删除那条 CNAME 记录。
撤销之后:
- 已签发的证书不受影响,继续有效至原到期日。
- 该域名回到手动模式。下一次续期时,系统会创建续期申请并通过邮件提醒添加 TXT 记录,流程与证书续期所述相同。
- 若在本站关闭了委派,但 DNS 里的 CNAME 仍在,需要先把它删掉,否则同名之下无法添加 TXT 记录,原因见上文 CNAME 与 TXT 不能共存的说明。