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

利用CAA DNS记录来授权CA发行TLS证书。

DNS CAA是什么?

CAA是一种DNS记录类型,用于指示CA是否应该发行证书。换句话说,您可以让世界知道谁应该发行您的域名证书SSL/TLS certificate。CAA的实施于2017年底成为强制性要求,因此这是相对较新的功能,不到5%的热门网站已实施这项功能。

让我们以一个例子来说明 – Geekflare拥有一个名为“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获取证书。如果我要求Thawte或其他CA为gf.dev发行证书,他们将无法办到。此外,如果您仔细观察,您会注意到一些条目带有issue,而其他条目带有issuewild。让我们找出它们的含义。

  • issue – 指示CA仅为该域发行证书。
  • issuewild – CA可以发行通配符证书,以便在域名或子域名中使用。

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

当找不到CAA记录时会发生什么?

如果域名没有CAA记录,则任何人都可以为该域名申请证书并由任何CA签署。这是一个安全风险。

现在明白了吗?

上面我使用了一些链接abbreviations,让我们看看它们是什么。

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

如何检查DNS CAA记录?

有多种方法可以验证CAA记录。如果您不想离开终端,可以使用dig command进行检查。

dig caa $YOURWEBSITE.COM

以yaoweibin.com为例

root@yaoweibin:~# dig caa yaoweibin.com

; <> DiG 9.11.3-1ubuntu1.8-Ubuntu <> caa yaoweibin.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:
;yaoweibin.com.			IN	CAA

;; ANSWER SECTION:
yaoweibin.com.		3600	IN	CAA	0 issuewild "comodoca.com"
yaoweibin.com.		3600	IN	CAA	0 issuewild "letsencrypt.org"
yaoweibin.com.		3600	IN	CAA	0 issue "comodoca.com"
yaoweibin.com.		3600	IN	CAA	0 issue "digicert.com; cansignhttpexchanges=yes"
yaoweibin.com.		3600	IN	CAA	0 issue "letsencrypt.org"
yaoweibin.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

root@yaoweibin:~#

如果您想远程测试,则可以使用DNS CAA Tester在线工具。

如何添加CAA记录?

从技术上讲,这与添加其他类型的DNS records(如A、NS、CNAME等)相同。

如果您使用Cloudflare,请转到DNS选项卡>>添加记录并选择CAA作为类型。

对于GoDaddy,请转到DNS管理并添加记录。

如果不确定如何添加,则可以联系您的DNS/主机提供商寻求帮助。

结论

如果还没有的话,您应该利用CAA记录来增加域名安全性。增加CAA记录不会产生任何费用。

类似文章