DANE 是 DNS-based Authentication of Named Entities 的缩写。
传统的基于 X.509 证书体系的公钥验证系统中,由于可能存在多级中间证书发行商,以及多个根证书发行商,环节众多因此一旦其中有任何一个出现问题,都可能会导致出现中间人攻击,而 DANE 则是利用 DNSsec 来发布经过签名的证书信息,由于根域名的签名是唯一并且广泛部署的,想要进行篡改必须首先获得对于域名的控制权,这样一来,通过伪造证书来实现中间人攻击的门槛就比找一家不靠谱的 CA 来签署证书要高了。
实现 DANE 的第一步是在域名上部署 DNSsec。
DANE 是通过 TLSA 记录来发布域名主人认可的证书签名的。其格式为:
_25._tcp.mx.example.com. IN TLSA ?
其中,_25._tcp 是固定的,表示 ESMTP 协议对应的服务端口和协议:tcp/25。mx.example.com 是收邮件的主机的名字。
TLSA 记录内容可以用 https://www.huque.com/bin/gen_tlsa 这里的工具生成,具体格式详见 RFC 6698,主要是其中的 2.1 小节。对于比较小规模的域名来说,可以使用用法3(表示此TLSA记录指定某个具体的证书/公钥作为相关主机的证书/公钥;更大的域也可以用用法2来授权某一个发证机构的证书颁发其下的证书),