我有一个启用SSL的电子商务网站,该网站使用cURL进行付款处理。一切运行良好,但最近我了解了“CA公共认证捆绑包的cUrl”,最好将它用于cURL连接。
如果这是真的,有人可以告诉我如何或如何使用标准SSL更好/不同?
SSL是否已为所有连接提供某种认证?
答案 0 :(得分:2)
连接到HTTPS服务器的任何HTTPS客户端都将获得其证书(实际上,它可以是证书链)。然后,客户端必须验证此服务器证书以验证服务器。
这通常是通过使用在客户端上配置的许多CA证书作为信任锚来完成的(即,在遇到服务器证书之前,这是您提前信任的 )。客户端尝试在服务器链的最后一个元素与其信任锚中的一个CA证书之间构建链。如果存在这样的有效链,则服务器证书是可信的。
A" CA证书包"将是一组信任锚。您可以通过查找您愿意信任的CA来构建自己的CA,也可以使用现有的捆绑包。大多数操作系统或浏览器都附带现有的捆绑包。 cURL本身并不存在,但它可以依赖于预定义的位置(在编译时设置),或者它也建议使用Firefox bundle(通过转换机制)。 (您可以通过命令行或通过API在额外选项中覆盖默认设置。)
Certificate Pinning(您也提到过)与CA证书捆绑包无关。事实上,它几乎完全相反。您没有依赖第三方信任锚(证书颁发机构),而是明确地" pin"您知道直接信任的一组服务器证书。它们并不用于验证其他证书,而是将您获得的证书与您对该主机期望的确切证书进行比较(或至少比较公钥)。这更像是从服务器名称到证书(或公钥)的引用映射,并将从主机获得的内容与您拥有的引用进行比较。当然,这只适用于实际中相当少的一组证书,这与CA(PKI)方法不同,后者旨在让您验证以前从未遇到的各方(通过第三方: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)补充。
答案 1 :(得分:-3)
找到了一个很好的答案here。上面的评论确实有帮助。我正在寻找的确切关键字是“证书固定”。