安全地更新证书颁发机构证书

Securely updating Certificate Authority Certificates

证书颁发机构的证书通常与它们一起使用的应用程序捆绑在一起,但您如何才能安全地自动更新它们?

在PHP中,推荐使用https://curl.haxx.se/ca/cacert.pem 连同 cURL,如果您预先捆绑它是安全的,但是 URL 不支持 HTTPS,因此中间人攻击完全有可能欺骗不同的证书。

这与 the problem of secure code delivery 有关,因此我怀疑该解决方案也能解决这个问题。

今天的实用解决方案

窃听 Mozilla 的人员进行 GPG 签名 certdata.txt,在你这边验证签名,然后使用 Curl 团队用来构建你自己的 .pem 文件的相同 Perl 脚本。去掉中间人。

明天的假设解决方案

注意:如果 curl.haxx.se 的人无法设置 HTTPS,我不知道社区能说服他们多少运气设置此真实性流程。

  1. 传输层安全性应该是强制性的。
  2. 应使用数字签名(GnuPG, minisign 等)。
  3. 签名及其时间戳应在区块链(例如比特币)或类似 Google 的 certificate transparency.
  4. 的系统中公布

这可以防止有人干扰您与 curl.haxx.se 的通信,同时还可以防止入侵 curl.haxx.se 的人向最终用户提供有毒证书列表。通过在去中心化分类账中公布证书和时间戳,并提供一些客户端验证机制,针对性攻击不再可行。

这不会阻止 curl.haxx.se 的人们变得邪恶。