domain-name-system – 为什么不通过DNS记录而不是letsencrypt验证自签名证书

我只是想知道.我们使用了很多SSL证书.如今,我们几乎只使用letsencrypt(谢谢!).这些证书的底线是,证书上域名的所有权证明来自操纵DNS记录或这些域下的网站的权力. DNS证明来自将一些密钥(由letsencrypt给出)作为TXT记录添加到DNS.

因此,如果足以证明能够更改域的DNS记录,为什么不在DNS中使用带有指纹的自签名证书?

我会说这给出了与letsencrypt(和其他CA)基于DNS的程序完全相同的信任度:

>创建一个自签名CA(只需按照各种方法的步骤)
>为某些域创建证书
>使用步骤1中的CA对步骤2中的证书进行签名.您现在拥有一个由非受信任CA签名的基本证书
>将TXT(或专用)记录添加到每个域的DNS中,说明:我们使用此CA签署了此域的证书.喜欢:’CA = -fingerpint of CA-‘
>浏览器下载证书并通过将CA / CA证书的指纹与给定域的DNS中的数据进行比较来验证证书.

这样就可以在没有第三方干扰的情况下创建受信任的自签名证书,其信任级别与任何基本SSL证书相同.只要您有权访问DNS,您的证书就有效.甚至可以添加一些DNSSEC,如加密,从CA加上SOA记录,以确保信任在DNS记录的更改中消失.

之前是否考虑过这个问题?

Jelmer

解决方法

使这成为可能的基本基础设施存在并称为基于DNS的命名实体认证(DANE)并在 RFC6698中指定.它通过TLSA资源记录工作,该记录指定证书或其末尾的公钥.实体或其链中的一个CA(实际上有四种不同的类型,请参阅RFC以获取详细信息).

采用

然而,DANE尚未被广泛采用. VeriSign监控DNSSEC and DANE adoptiontracks its growth over time

相比之下,根据VeriSign,存在大约270万个DNS区域,因此这意味着超过1%的区域至少有一个TLSA记录.

我不能给出任何权威的答案,为什么是DANE,但这里是我的推测:

DANE遇到与证书撤销列表(CRL)和在线证书状态协议(OCSP)相同的问题.为了验证提交的证书的有效性,必须联系第三方. HannoBöckgives a good overview,为什么这在实践中是一个大问题.它归结为当你无法到达第三方时该怎么做的问题.在这种情况下,浏览器供应商选择了软故障(又称许可),这使整个事情变得毫无意义,Chrome最终决定在2012年停用OCSP.

DNSSEC

可以说,DNS提供了比CA的CRL和OCSP服务器更好的可用性,但它仍然无法进行离线验证.另外,DANE应该只与DNSSEC一起使用.由于普通DNS在未经身份验证的UDP上运行,因此非常容易出现伪造,MITM攻击等.采用DNSSEC比采用DANE要好得多,但仍远未普及.

通过DNSSEC,我们再次遇到了软故障问题.据我所知,认情况下,没有主要的服务器/客户端操作系统提供验证DNSSEC解析器.

然后还有撤销问题. DNSSEC没有撤销机制,而是依赖于短期密钥.

软件支持

所有参与的软件都必须实现DANE支持.

理论上,您可能认为,这将是加密库的工作,应用程序开发人员不必做太多,但事实是,加密库通常只提供原语,应用程序必须自己进行大量配置和设置(不幸的是,有许多方法可以解决问题).

我不知道,任何主要的Web服务器(例如Apache或Nginx)都实现了DANE或者计划这样做. Web服务器在这里特别重要,因为越来越多的东西建立在Web技术上,因此它们通常是第一个实现内容的东西.

当我们将CRL,OCSP和OCSP Stapling视为对照时,我们或许能够推断出DANE采用故事的发展方向.只有一些使用OpenSSL,libnss,GnuTLS等的应用程序支持这些功能.像Apache或Nginx这样的主要软件需要一段时间来支持它,并再次回顾HannoBöck的文章,他们弄错了,他们的实现存在缺陷.其他主要的软件项目,如Postfix或Dovecot don’t support OCSP,并且具有非常有限的CRL功能,基本上指向文件系统中的文件(不一定需要重新读取,因此您必须手动重新加载服务器等).
请记住,这些是经常使用TLS的项目.然后你就可以开始研究TLS不常见的东西了,例如Postgresql / MysqL,也许他们最好提供CRL.

所以我甚至没有现代网络服务器实现它,大多数其他软件甚至没有实现OCSP和CRL,祝你5年的企业应用程序或设备好运.

潜在的应用

那你在哪里可以实际使用DANE?截至目前,不是一般的互联网.如果您控制服务器和客户端,也许它是一个选项,但在这种情况下,您通常可以采用公钥固定.

邮件空间中,DANE正在获得一些牵引力,因为SMTP在最长时间内没有任何经过身份验证的传输加密. SMTP服务器确实有时在彼此之间使用TLS,但没有验证证书中的名称是否实际匹配,他们现在开始通过DANE检查这一点.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些