【问题标题】:CA Public Certificate Bundle for cURLcURL 的 CA 公共证书包
【发布时间】:2014-07-04 16:28:31
【问题描述】:

我有一个启用 SSL 的电子商务网站,它使用 cURL 进行支付处理。一切运行良好,但最近我了解到“CA Public Certification Bundle for cUrl”,将其用于 cURL 连接是个好主意。

如果这是真的,那么有人能告诉我如何或它比使用标准 SSL 更好/不同吗?

SSL 不是已经为所有连接提供某种认证了吗?

【问题讨论】:

  • 谢谢,我想我现在明白其中的区别了
  • 请告诉我们为什么反对“投票”???
  • @SLaks,证书固定与 CA 捆绑包无关,恰恰相反。那个 Wikipedia 条目相当具有误导性:没有“额外步骤”,而是绕过 CA 的直接比较。

标签: php security curl ssl


【解决方案1】:

任何连接到 HTTPS 服务器的 HTTPS 客户端都会得到它的证书(实际上可以是一个证书链)。然后,客户端必须验证此服务器证书才能对服务器进行身份验证。

这通常通过使用在客户端上配置的多个 CA 证书作为信任锚来完成(即,这是您在遇到服务器证书之前提前信任的证书)。客户端尝试在服务器链的最后一个元素和其信任锚中的一个 CA 证书之间建立一个链。如果存在这样的有效链,则服务器证书是受信任的。

“CA 证书包”是一组信任锚。您可以通过寻找您愿意信任的 CA 来构建自己的 CA,也可以使用现有的捆绑包。大多数操作系统或浏览器都带有一个现有的捆绑包。 cURL 本身没有,但它可以依赖于预定义的位置(在编译时设置),或者它还建议使用Firefox bundle(通过转换机制)。 (您可以通过额外的选项、命令行或 API 覆盖默认设置。)

Certificate Pinning(您也提到过)与 CA 证书捆绑无关。事实上,它几乎是相反的。您无需依赖第三方信任锚(证书颁发机构),而是明确“固定”一组您知道直接受信任的服务器证书。它们不用于验证其他证书,而是将您获得的证书与您期望该主机的确切证书进行比较(或者至少您比较公钥)。这更像是从服务器名称到证书(或公钥)的引用映射,并将您从该主机获得的内容与您拥有的引用进行比较。当然,这在实践中仅适用于相当少量的证书,这与 CA (PKI) 方法不同,该方法旨在让您对从未遇到过的各方(通过第 3 方:CA)进行身份验证。

它与使用标准 SSL 相比有何更好/不同之处? SSL 不是已经为所有连接提供了某种认证吗?

使用 CA 证书包与使用“标准 SSL”没有什么不同,它是 SSL/TLS 连接常用的。您通常看不到它,因为 CA 捆绑包通常随您的客户端(或操作系统)一起提供。 请注意,严格来说,这与SSL/TLS itself 是正交的,它主要只是说您应该对服务器进行身份验证。证书验证(PKI 方式,通过 CA 证书)在 different specification 中定义,还由 a specification on how to verify the name in the certificate(当然还有 HTTPS specification)补充。

【讨论】:

    【解决方案2】:

    找到了一个很好的答案here。上面的评论真的很有帮助。我正在寻找的确切关键字是“证书固定”。

    【讨论】:

    • 您提到的博客文章与“证书固定”无关。此外,它只谈论CURLOPT_SSL_VERIFYPEER,而不是CURLOPT_SSL_VERIFYHOSTBoth matter。值得庆幸的是,在不太旧的 cURL 版本中,默认情况下都应该启用它们的安全值。 (由于问题中标记了php,因此记录在here)。
    猜你喜欢
    • 2016-03-23
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 2016-01-27
    • 2021-09-12
    • 2022-12-16
    相关资源
    最近更新 更多