折腾过域名的可能知道(A,AAAA)记录不能与 CNAME 共存, 但未必碰到过 TXT 与 CNAME 冲突的情况.
什么情况下 TXT 会与 CNAME 同时使用一个前缀?
有一种场景, 就是在 LetsEncrypt 证书申请, 使用 DNS-01 挑战来验证域名所有权时.
_acme-challenge.example.com 的TXT 记录_acme-challenge.example.com 的TXT 记录倘若创建TXT 记录时, 已经有一条_acme-challenge.example.com 的CNAME记录, 则TXT记录可能会创建失败, 导致域名挑战验证失败.
为什么会出现_acme-challenge.example.com 的CNAME记录?
阿里云新推出的 ESA 边缘安全加速, 类似 cloudflare, 是原 DCDN 全站加速的改名增强版. 在早期使用时, 不支持自助申请泛域名, 我是使用脚本周期性将自己申请的泛域名证书传上去, 管理起来稍有不便. 后来出了托管 DCV, 可以自助申请更新泛域名证书, 按照说明操作, 的确可以自助管理泛域名证书. 但埋下的隐患隔了数月才发现. 这个 CNAME 记录持续存在, 会导致不能创建相同前缀的 TXT 记录, 导致我不能在别处证明域名所有权.

托管 DVC 要求将_acme-challenge.example.com写入指定值, 本质上是声明该域名属于第三方, 自己不再拥有该域名的控制权.
需要泛域名的话, 可以使用任务脚本调用 ESA 的 API, 定时将泛域名证书上传到 ESA.
Certbot 提供几种域名所有权验证(challenge, 挑战)方法, 除了根域名验证(DNS-01)外, 还可以使用 HTTP-01 和 TLS-ALPN-01 等方法.
HTTP-01 和 TLS-ALPN-01 方法需要现先有服务, 验证可访问性之后, 再给证书.
DNS-01 可以在搭建服务之前就获取证书.
这俩业务同属阿里云, 但各自实现了一套 DNS API, 如果ESA可以自助在云解析 DNS设置 CNAME 或 TXT 记录, 获取完证书后, 删除记录, 则不会影响在别处使用 DNS-01 挑战.
cloudflare 上没这事, 证书随便给.
1
aG6uncl6Syb0brhs 193 天前
我之前也碰到了,但后来发现不太对。 cname 方式接入套路云或 cf ,cf 申请泛域名时候确实不需要使用配置托管 dcv (即一条 cname 记录),但是证书续签的时候就会出问题,即每 3 个月续签都需要客户手动 TXT 校验一次,我当时业务都挂了才知道,cf 官方有说明 https://developers.cloudflare.com/ssl/edge-certificates/changing-dcv-method/methods/txt/
然后为了上面这个泛域名解决续签的问题,cf 提供了“托管 DCV”,需要配置一条长期的 CNAME ,这个和套路云的 ESA 机制就完全一致了。 综上,2 家其实一样 |
2
jqknono OP @armstrongvs 原来如此.
|