理解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记录并不会花费你任何费用,却能有效地保护你的域名安全。
喜欢这篇文章吗? 分享给更多人吧!