【问题标题】:Securely updating Certificate Authority Certificates安全更新证书颁发机构证书
【发布时间】:2016-01-01 00:57:00
【问题描述】:

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

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

【问题讨论】:

  • 你说curl.haxx.se/ca/cacert.pem“不支持HTTPS”。我不能说过去发生了什么,但它现在肯定使用 TLS。
  • 那是准确的。但是,问题仍然存在,您无法验证请求,因为您在下载之前没有 CA 证书列表。 CA也有变化的可能。在某个地方,你必须提出一个不安全的请求,它不可能是完全自动的。

标签: php security ssl curl certificate-authority


【解决方案1】:

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

当今的实用解决方案

让 Mozilla 的员工使用 GPG 签名 certdata.txt,验证您的签名,然后使用 Curl 团队用来构建您自己的 .pem 文件的相同 Perl 脚本。去掉中间人。

明天的假设解决方案

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

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

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

这不会阻止curl.haxx.se 的人们变坏。

【讨论】: