什么是 DNS CAA 以及如何验证和实施?

理解DNS CAA记录:为你的TLS证书授权

DNS CAA记录,是一种特殊的DNS记录类型,它用来指示哪些证书颁发机构(CA)被允许为你的域名颁发TLS证书。简而言之,通过设置CAA记录,你可以明确告诉全世界,只有你指定的CA才能为你的域名颁发SSL/TLS证书。虽然CAA记录在2017年底才被强制实施,算是一个相对较新的安全措施,但目前只有不到5%的热门网站采用了它。

我们来看一个例子,假设网站 techblik.com 下有一个名为“gf.dev”的站点,它的CAA记录如下:

gf.dev.			3586	IN	CAA	0 issue "digicert.com; cansignhttpexchanges=yes"
gf.dev.			3586	IN	CAA	0 issuewild "comodoca.com"
gf.dev.			3586	IN	CAA	0 issue "comodoca.com"
gf.dev.			3586	IN	CAA	0 issuewild "digicert.com; cansignhttpexchanges=yes"
gf.dev.			3586	IN	CAA	0 issuewild "letsencrypt.org"
gf.dev.			3586	IN	CAA	0 issue "letsencrypt.org"
  

通过这些记录,我们可以知道,只有DigiCert、Comodo和Let’s Encrypt 这三家CA被授权为gf.dev颁发证书。如果有人尝试让Thawte或其他CA颁发证书,将会被拒绝。 仔细观察这些记录,你会发现其中包含了两种类型的指令:

  • issue – 指定只有该CA可以为该域名颁发证书。
  • issuewild – 指定该CA可以为该域名颁发通配符证书,用于主域名及其子域名。

此外,CAA记录还支持iodef(事件对象描述交换格式),允许CA将违规报告发送到指定的电子邮件地址或其他联系方式。

缺少CAA记录会发生什么?

如果你的域名没有设置CAA记录,那么任何人都可以在没有你授权的情况下,为你的域名生成CSR(证书签名请求)并获得任何CA签发的证书。这显然存在严重的安全隐患。

现在明白CAA记录的重要性了吗? 为了更好地理解,我们来回顾一下文中提到的一些缩写:

  • DNS——域名系统
  • CA——证书颁发机构
  • CAA——证书颁发机构授权
  • TLS——传输层安全
  • SSL – 安全套接字层

如何查询DNS CAA记录?

查询CAA记录的方法有很多。如果你喜欢在终端操作,可以使用dig命令:

dig caa $YOURWEBSITE.COM

例如,查询 techblik.com 的 CAA 记录:

[email protected]:~# dig caa techblik.com.com

; <<>> DiG 9.11.3-1ubuntu1.8-Ubuntu <<>> caa techblik.com.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54430
;; flags: qr rd ra; QUERY: 1, ANSWER: 6, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;techblik.com.com.			IN	CAA

;; ANSWER SECTION:
techblik.com.com.		3600	IN	CAA	0 issuewild "comodoca.com"
techblik.com.com.		3600	IN	CAA	0 issuewild "letsencrypt.org"
techblik.com.com.		3600	IN	CAA	0 issue "comodoca.com"
techblik.com.com.		3600	IN	CAA	0 issue "digicert.com; cansignhttpexchanges=yes"
techblik.com.com.		3600	IN	CAA	0 issue "letsencrypt.org"
techblik.com.com.		3600	IN	CAA	0 issuewild "digicert.com; cansignhttpexchanges=yes"

;; Query time: 7 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Oct 08 07:12:21 UTC 2019
;; MSG SIZE  rcvd: 298

[email protected]:~#
  

如果你想在线进行测试,可以使用 DNS CAA 测试仪 这样的在线工具。

如何添加CAA记录?

添加CAA记录与添加其他类型的DNS记录(如A、NS、CNAME等)的方式类似。

如果你使用Cloudflare,你需要进入DNS选项卡,点击添加记录,然后选择CAA作为记录类型。

如果你使用GoDaddy,你需要进入DNS管理,然后添加一条新的CAA记录。

如果你不确定如何操作,可以联系你的DNS或托管服务提供商寻求帮助。

结论

为了进一步加强你域名的安全性,你应该尽快启用CAA记录。 添加CAA记录并不会花费你任何费用,却能有效地保护你的域名安全。

喜欢这篇文章吗? 分享给更多人吧!