关于本文
本文是通过利用生成式 AI 的自动化生成流程创建的。本文核对了解析 DNS CAA 的 RFC 以及 Microsoft Resolve-DnsName 规范,并整理了以只读方式观察公开 DNS 的方法。验证状态:📘 已确认 RFC/微软官方规范,未对实际 DNS 进行查询
CAA 记录是一种通过 DNS 端指明“哪些证书颁发机构可以在此域中签发证书”的机制。即使不修改设置,仅通过 PowerShell 读取公开记录,也可以安全地观察其工作机制。
首先尝试
Resolve-DnsName example.com -Type CAA
在未设置 CAA 的域名中可能不会返回结果。请不要直接断定这是异常情况。
查看此处
在 CAA 中,我们需要查看 flag、tag 和 value。具有代表性的 tag 有 issue 和 issuewild 等。
DNS -> CAA -> 証明書発行ポリシー
网页浏览器中显示的“当前证书”与放在 DNS 中的“允许签发的证书颁发机构策略”是两码事。
尝试修改一处
不读取自己管理域,而是读取两个公开域名用于验证,仅比较是否存在 CAA。无需进行大量查询。
为什么有用
证书更新故障涉及有效期、DNS、ACME 挑战、CAA 等多个要素。在遇到“无法更新证书”时,如果盲目修改服务器设置,不如先以只读方式确认 CAA,这样排查问题的依据就多了一个。
如果在工作中应用
Web 运营人员、IT 运维人员以及域名管理人员在委托外部供应商颁发证书时,可将其用于事前确认。记录结果时附上日期时间和域名,将更便于进行咨询。
并非仅凭 CAA 就能决定证书颁发的所有安全性。其中还存在 DNSSEC、域名管理权限以及 CA 侧验证等其他要素。
总结
CAA 是从 DNS 侧了解证书运维的入口。关键在于从使用 Resolve-DnsName 进行读取的最小化实验开始,切勿将当前证书与颁发策略混为一谈。
官方信息与一手资料
RFC 8659 Certification Authority Authorization: https://www.rfc-editor.org/rfc/rfc8659
Resolve-DnsName: https://learn.microsoft.com/powershell/module/dnsclient/resolve-dnsname
