CAA 可能确保颁发的证书来自我的 CA 而不是其他 CA。
DNS 中给出:
example.com. 300 IN CAA 0 issue "ca.example.com"
example.com. 300 IN CAA 0 issuewild "ca.example.com"
问题1:我的CA可以使用它来颁发以下子子域名吗?
a.b.c.example.com
d.e.f.example.com
问题 2:如果这不可能,那么在 DNS 中执行此操作的最简单方法是什么?我们有许多子域。
答案1
CAA 规范包括 DNS 沿根向上延伸。
因此,首先将对 处的 CAA 记录进行 DNS 查询a.b.c.example.com
,如果失败,则对 进行相同查询b.c.example.com
,然后c.example.com
进行 等,直到找到匹配项或到达根。
看RFC 8659§3 显示了要使用的算法:
RelevantCAASet(domain):
while domain is not ".":
if CAA(domain) is not Empty:
return CAA(domain)
domain = Parent(domain)
return Empty
解释如下:
CAA RRset 的搜索会从指定标签开始沿着 DNS 名称树向上搜索,直到找到 CAA RRset(但不包括 DNS 根“.”)。
所以对于您的问题 1 的答案是肯定的,因此问题 2 消失。