正确设置DNS CAA记录给你提升HTTPS站点安全

[复制链接]
情系毒花 发表于 2019-2-20 22:06:33 | 显示全部楼层 |阅读模式
什么是 DNS CAA譬如说,你的站点已经启用了 HSTS,甚至已经被固化到了浏览器内部。但是一个中间人仍然劫持了你的连接。你走了 HTTPS 协议?没问题,我也搞到了一个你所访问域名的 SSL 证书。要知道 SSL 连接使用的证书是服务端决定的,但是这个证书未必就是真正的域名所有人申请的。虽然普通人未必能搞到不属于你的域名的证书,但是证书颁发机构就不一样——虽然基于信誉的原因他们不太可能会这样做,但是没有任何外在的保护防止他们颁发并非由域名所有人申请的证书。
简而言之,一个有效的证书未必就是域名所有人申请的证书。就好比普通人造不出能过验钞机的假钞,但是再强大的验钞机也不能阻止造币厂监守自盗。这时就需要一个更上层的服务去验证这个“有效的证书”的合法性,这就是 DNS CAA 的作用。
DNS Certification Authority Authorization(DNS证书颁发机构授权,简称 CAA)是一项借助互联网的域名系统(DNS),使域持有人可以指定允许为其域签发证书的数字证书认证机构(CA)的技术。它会在 DNS 下发 IP 的同时,同时下发一条资源记录,标记该域名下使用的证书必须由某证书颁发机构颁发。比如我大 EOI 的官网使用了 Let’s Encrypt 颁发的免费证书,我可以同时使用 CAA 技术标记 EOI 官网域名 www.eoitek.com 使用的 SSL 证书由 Let’s Encrypt 颁发,这样就可以(在一定程度上)解决上面所述的问题。
启用 DNS CAA
CAA 是 DNS 服务器下发的记录,所以首先要 DNS 服务器支持才行。EOI官网域名购买自阿里云旗下的万网,然而万网自带的 DNS 服务并不支持 CAA 资源记录。如果想体验 CAA,可以使用CloudXNS。另外支持 CAA 记录的国外 DNS 服务这里有比较详细的记录:https://sslmate.com/caa/support
这里使用的是 CloudXNS这款号称永久免费的 DNS 服务。
注意:
  • CAA:证书颁发机构授权 格式flag tag value
  • CAA:格式为“flag tag value” 其中flag目前取值为0、128;tag取值为issue、issuewild、iodef;value为不包含|、””、\、<>、中文字符的字符串。
主机记录:可以直接填写顶级域名,可以使用@。
记录值:填写 0 issue “证书颁发机构域名”。
如果如果你用 Let’s Encrypt 颁发的免费证书,记录值 部分直接填写 0 issue “letsencrypt.org” 即可。
你还可以添加一条为 0 iodef “mailto:你的邮箱” 的 CAA 记录,表示如果发现违背 CAA 记录的情况给这个邮箱发邮件通知。
如果你仍然不太清楚如何填写 CAA 记录,可以用工具直接生成:https://sslmate.com/caa/
填写域名后点 Auto-Generate Policy,这个工具会自动查询你的网站使用了什么证书,从而生成对应的 CAA 记录数据。
检验 DNS CAA 是否生效
使用 SSL Server Test 可以很方便的检验你的域名是否启用了 DNS CAA
下面还有对应证书是否匹配当前 DNS CAA 记录的提示

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 本贴地址:http://www.clibbs.com/thread-4333-1-1.html 上篇帖子: 手机制作小表情软件 下篇帖子: 懒人听书 批量下载工具