譬如说,你的站点已经启用了 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 颁发,这样就能够(在必定程度上)解决上面所述的问题。工具
CAA 是 DNS 服务器下发的记录,因此首先要 DNS 服务器支持才行。EOI官网域名购买自阿里云旗下的万网,然而万网自带的 DNS 服务并不支持 CAA 资源记录。若是想体验 CAA,还得使用国外的 DNS 服务器。支持 CAA 记录的国外 DNS 服务这里有比较详细的记录:https://sslmate.com/caa/support网站
笔者使用的是 Hurricane Electric Free DNS 这款号称永久免费的 DNS 服务。注册帐号并邮箱验证后,添加一个新的域名,注意要填写一级域名。阿里云
首先添加 DNS 解析(A)记录,指向你服务器的外网 IPspa
而后添加 CAA 记录。.net
0 issue "证书颁发机构域名"
。 CAA data
部分直接填写 0 issue "letsencrypt.org"
便可。0 iodef "mailto:你的邮箱"
的 CAA 记录,表示若是发现违背 CAA 记录的状况给这个邮箱发邮件通知。若是你仍然不太清楚如何填写 CAA 记录,能够用工具直接生成:https://sslmate.com/caa/。填写域名后点 Auto-Generate Policy
,这个工具会自动查询你的网站使用了什么证书,从而生成对应的 CAA 记录数据。3d
填写完成后结果相似以下图(图中还添加了几条指向 EOI 公司内网的域名):code
最后只须要把你域名的 DNS 服务器指向到 nsX.he.net
就行了blog
更改 DNS 服务器指向可能须要约两天时间生效。是否生效能够在 Hurricane Electric Free DNS
中你的域名的记录列表页查看。
使用 SSL Server Test
能够很方便的检验你的域名是否启用了 DNS CAA
下面还有对应证书是否匹配当前 DNS CAA 记录的提示