安全地更新证书颁发机构证书
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,我不知道社区能说服他们多少运气设置此真实性流程。
- 传输层安全性应该是强制性的。
- 应使用数字签名(GnuPG, minisign 等)。
- 签名及其时间戳应在区块链(例如比特币)或类似 Google 的 certificate transparency.
的系统中公布
这可以防止有人干扰您与 curl.haxx.se
的通信,同时还可以防止入侵 curl.haxx.se
的人向最终用户提供有毒证书列表。通过在去中心化分类账中公布证书和时间戳,并提供一些客户端验证机制,针对性攻击不再可行。
这不会阻止 curl.haxx.se
的人们变得邪恶。
证书颁发机构的证书通常与它们一起使用的应用程序捆绑在一起,但您如何才能安全地自动更新它们?
在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,我不知道社区能说服他们多少运气设置此真实性流程。
- 传输层安全性应该是强制性的。
- 应使用数字签名(GnuPG, minisign 等)。
- 签名及其时间戳应在区块链(例如比特币)或类似 Google 的 certificate transparency. 的系统中公布
这可以防止有人干扰您与 curl.haxx.se
的通信,同时还可以防止入侵 curl.haxx.se
的人向最终用户提供有毒证书列表。通过在去中心化分类账中公布证书和时间戳,并提供一些客户端验证机制,针对性攻击不再可行。
这不会阻止 curl.haxx.se
的人们变得邪恶。