过去,证书经常会过期,因为必须手动更新。 人们只是忘记了这样做。 随着 Let's Encrypt 和自动更新程序的出现,这个问题似乎应该得到解决。 但最近
如果您错过了这个故事,4 年 2019 月 XNUMX 日午夜,几乎所有 Firefox 扩展突然停止工作。
事实证明,这次大规模失败的原因是 Mozilla
Mozilla很快发布了Firefox 66.0.4补丁,解决了证书无效的问题,所有扩展恢复正常。 开发人员建议安装它并
然而,这个故事再次表明证书过期仍然是当今的一个紧迫问题。
在这方面,看看协议开发人员如何处理这项任务的一种相当原始的方式是很有趣的
DNSCrypt
DNSCrypt 是一种 DNS 流量加密协议。 它可以保护 DNS 通信免受拦截和 MiTM,还允许您绕过 DNS 查询级别的阻止。
该协议将客户端和服务器之间的 DNS 流量封装在加密结构中,通过 UDP 和 TCP 传输协议运行。 要使用它,客户端和 DNS 解析器都必须支持 DNSCrypt。 例如,自 2016 年 152 月以来,它已在其 DNS 服务器和 Yandex 浏览器中启用。 其他几家提供商也宣布提供支持,包括 Google 和 Cloudflare。 不幸的是,数量并不多(官方网站上列出了 XNUMX 个公共 DNS 服务器)。 但节目
DNSCrypt 是如何工作的? 简而言之,客户端获取所选提供商的公钥并使用它来验证其证书。 会话的短期公钥和密码套件标识符已经存在。 鼓励客户端为每个请求生成新密钥,并鼓励服务器更改密钥 每24小时。 交换密钥时,使用 X25519 算法进行签名 - EdDSA,进行块加密 - XSalsa20-Poly1305 或 XChaCha20-Poly1305。
协议开发者之一 Frank Denis
首先,它对于安全性非常有用:如果服务器遭到破坏或密钥泄露,则昨天的流量将无法解密。 关键已经改变了。 这可能会给 Yarovaya 法的实施带来问题,该法迫使提供商存储所有流量,包括加密流量。 这意味着以后如有必要,可以通过从站点请求密钥来解密它。 但在这种情况下,该站点根本无法提供它,因为它使用短期密钥,删除旧密钥。
但最重要的是,丹尼斯写道,短期密钥迫使服务器从第一天起就设置自动化。 如果服务器连接到网络并且密钥更改脚本未配置或不起作用,则会立即检测到。
当自动化每隔几年更改一次密钥时,它就不再可靠,人们可能会忘记证书过期的情况。 如果您每天更改密钥,则会立即检测到。
同时,如果自动化配置正常,那么密钥更改的频率并不重要:每年、每季度或每天三次。 弗兰克·丹尼斯 (Frank Denis) 写道,如果一切都能正常工作超过 24 小时,那么它将永远有效。 据他介绍,第二版协议中每日密钥轮换的建议,以及实现它的现成的 Docker 镜像,有效减少了证书过期的服务器数量,同时提高了安全性。
然而,由于某些技术原因,一些提供商仍然决定将证书有效期设置为超过 24 小时。 这个问题基本上通过 dnscrypt-proxy 中的几行代码得到了解决:用户在证书过期前 30 天收到一条信息警告,在过期前 7 天收到另一条具有更高严重性级别的消息,如果证书还有剩余,则会收到一条严重消息有效期:24小时以内。 这仅适用于最初有效期较长的证书。
这些消息使用户有机会在为时已晚之前通知 DNS 运营商证书即将到期。
也许如果所有 Firefox 用户都收到这样的消息,那么有人可能会通知开发人员,他们不会允许证书过期。 “我不记得公共 DNS 服务器列表中的任何 DNSCrypt 服务器在过去两三年内其证书已过期,”Frank Denis 写道。 无论如何,最好先警告用户,而不是在没有警告的情况下禁用扩展。
来源: habr.com