为了账号安全,请及时绑定邮箱和手机立即绑定

DNS CAA 记录及创建方法

标签:
Linux

dns-caa

关于 CAA

有一百多个被称为证书颁发机构的组织,可以颁发 SSL 证书来保证您的域的身份。如果您和大多数域所有者一样,您可能只从少数几个证书颁发机构获得证书。CAA(Certificate Authority Authorization,证书颁发机构授权)允许您声明您实际使用的证书颁发机构,禁止其他机构为您的域颁发证书。

以下是您使用 CAA 的一些原因:

  • 您希望降低来自不安全证书颁发机构的风险。您可以使用 CAA 将您的域限制为您信任的证书颁发机构,而您信任这些机构不会颁发未经授权的证书。

  • 您希望阻止员工从未经授权的供应商处获取证书。

设置 CAA 很容易。使用便捷的 CAA 生成器检查您授权的证书颁发机构。然后在域的 DNS 中发布生成的 DNS 记录。您的域需要由支持 CAA 的 DNS 提供商托管。幸运的是,主要的 DNS 提供商现在都支持 CAA。

CAA 是由 RFC 6844 定义的 IETF 标准。自 2017 年 9 月 8 日起,所有公共证书颁发机构都必须遵守 CAA 记录。在为域颁发证书之前,他们必须检查域中的 CAA 记录,如果 CAA 记录集没有授权它们,则拒绝颁发证书。(如果没有 CAA 记录,则允许其发布。)

CAA 和子域

域的 CAA 记录集也适用于所有子域。如果子域有它自己的 CAA 记录集,它将优先。

例如,在证书颁发机构为颁发证书之前 www.example.com 网站,它将按以下顺序查询域中的 CAA 记录集,并使用它找到的第一个记录集:

www.example.com

example.com

CAA 和 CNAME

如果域名创建了 CNAME(也称为别名)指向另外一个域名(CNAME 目标),则证书颁发机构还会在 CNAME 目标以及目标的所有父域中查找 CAA 记录集。如果没有找到 CAA 记录集,证书颁发机构将继续搜索原始域名的父域。

例如,如果 blog.example.com 的 CNAME 记录指向 blog.example.net,则证书颁发机构按以下顺序查找 CAA 记录集:


blog.example.net

example.net

example.com

也就是说自己的域名如果 CNAME 指向了第三方域名(比如常用在 CDN 和智能 DNS),你的域名 CAA 策略由第三方域名 CAA 记录优先决定,如果第三方域名没有 CAA 记录,自己的域名 CAA 策略才完全有效。

当然,这个并不是全局的限制,比如上述 blog.example.com 这个域名要申请 SSL 证书会受到 blog.example.net 及其父域 example.net 的 CAA 策略限制,www.example.com 没有 CNAME 记录并不受此限。

但是,在上述 CNAME 记录存在的情况下,申请通配符证书 *.example.com 情况会怎样?理论上会受到第三方域名 CAA 记录的限制。

局限性

不管 CAA 怎么说,一个恶意或完全被破坏的证书颁发机构都可以为您的域颁发证书。此外,DNS 记录可以被强大的攻击者欺骗,欺骗证书颁发机构认为它已被授权。

然而,在实践中,CAA 可以保护域所有者不受证书颁发机构中最近的许多安全漏洞的影响。尽管存在局限性,发布 CAA 政策是一种非常明智的安全措施。

为了增加保护,请使用证书透明度监视器(如 Cert Spotter)在颁发的证书违反您的 CAA 策略时向您发出警报。

支持 CAA 的 DNS

服务商

主流的域名服务商,国内如 阿里云解析 DNSDSNPOD(腾讯云),国外如 Cloudflare、Azure DNS、AWS Route 53 和 Google Cloud DNS,都可以支持 CAA 记录。

更多厂商列表可以参考这里:https://sslmate.com/caa/support

软件

| Software/Provider | Support | Comments |

| ------------------- | ------- | ------------------------------------------------------------ |

| BIND | Yes | Prior to version 9.9.6 use RFC 3597 syntax |

| dnsmasq | Yes | Use --dns-rr option with hex data |

| Knot DNS | ≥2.2.0 | |

| ldns | ≥1.6.17 | |

| NSD | Yes | Prior to version 4.0.1 use RFC 3597 syntax |

| OpenDNSSEC | Yes | With ldns ≥1.6.17 |

| PowerDNS | ≥4.0.0 | Versions 4.0.3 and below are buggy when DNSSEC is enabled. |

| Simple DNS Plus | ≥6.0 | |

| tinydns | Yes | Use generic record syntax |

| Windows Server 2016 | Yes | Use RFC 3597 syntax |

CAA 记录格式

CAA 记录由以下元素组成:

| 标签 | 描述 |

| ----- | ------------------------------------------------------------ |

| flag | 0-255 之间的无符号整数 |

| tag | 用来表示关键标志,RFC 有定义 |

| value | 与 tag 关联的值 |

CAA 记录的规范的表示法是:


CAA <flags> <tag> <value>

RFC 目前定义了 3 个可用的 tag:

  • issue:明确授权单个证书颁发机构颁发主机名的证书(任何类型)。

  • issuewild:明确授权单个证书颁发机构为主机名颁发通配符证书(只有通配符)。

  • iodef:指定认证机构可以向其报告策略违规的 URL 或邮箱。

创建 CAA 记录

可以使用 https://sslmate.com/caa/ 来生成,示例:

通用(适用于一般 DNS 服务商或者域名注册商)

For Google Cloud DNS, Route 53, DNSimple, and other hosted DNS services


Name Type Value

sysin.org. CAA 0 issue "digicert.com"

0 issue "letsencrypt.org"

添加 CAA 记录

  • 记录类型选择 CAA

  • Name 或者主机记录填写 @ 表示顶级域名,会自动应用到多级域名。

  • 记录值填写 0 issue "证书颁发机构域名"

如果如果你用 Let’s Encrypt 颁发的免费证书,CAA data 部分直接填写 0 issue"letsencrypt.org" 即可。

允许多个证书颁发机构,添加多条即可。

  • 你还可以添加一条为 0 iodef "mailto: 你的邮箱" 的 CAA 记录,表示如果发现违背 CAA 记录的情况给这个邮箱发邮件通知。

检测方法

dig


# dig sslmate.com caa

  

; <<>> DiG 9.11.13-RedHat-9.11.13-5.el8_2 <<>> sslmate.com caa

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21947

;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1

  

;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;sslmate.com. IN CAA

  

;; ANSWER SECTION:

sslmate.com. 7200 IN CAA 0 issue "sectigo.com"

sslmate.com. 7200 IN CAA 0 issuewild ";"

sslmate.com. 7200 IN CAA 0 iodef "mailto:security@opsmate.com"

sslmate.com. 7200 IN CAA 0 issue "letsencrypt.org"

nslookup

注意:Windows 中目前并不支持 type=caa 查询,请在 Unix-Like 系统中使用。


# nslookup

> set type=caa

> sslmate.com

Server: 183.60.83.19

Address: 183.60.83.19#53

  

Non-authoritative answer:

sslmate.com rdata_257 = 0 issuewild ";"

sslmate.com rdata_257 = 0 iodef "mailto:security@opsmate.com"

sslmate.com rdata_257 = 0 issue "letsencrypt.org"

sslmate.com rdata_257 = 0 issue "sectigo.com"

  

Authoritative answers can be found from:

使用 SSL Test 在线检测,会提示:


DNS Certification Authority Authorization (CAA) Policy found for this domain. MORE INFO »

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消