我有一个启用SSL的电子商务网站,该网站使用cURL进行付款处理。一切运行良好,但是最近我了解到“ CA Url公共认证捆绑包”,将其用于cURL连接是一个好主意。
如果这是真的,那么有人可以告诉我如何或比使用标准SSL更好/不同吗?
SSL是否已为所有连接提供某种认证?
最佳答案
连接到HTTPS服务器的任何HTTPS客户端都将获得其证书(实际上,它可以是证书链)。然后,该服务器证书必须由客户端验证,以对服务器进行身份验证。
通常,这是通过使用许多在客户端上配置为信任锚的CA证书来完成的(即,在遇到服务器证书之前,这是您预先信任的证书)。客户端尝试在服务器链的最后一个元素与其信任锚中的一个CA证书之间建立一条链。如果存在这样的有效链,则服务器证书是受信任的。
“ CA证书捆绑包”将是一组信任锚。您可以通过查找您愿意信任的CA来构建自己的CA,也可以使用现有的捆绑软件。大多数操作系统或浏览器都随附有现有软件包。 cURL本身不是,但是它可以依赖于预定义的位置(在编译时设置),也可以建议使用Firefox bundle(通过转换机制)。 (您可以在命令行或API上通过其他选项覆盖默认设置。)
Certificate Pinning(您也提到过)与CA证书捆绑包无关。实际上,这几乎是相反的。无需依赖第三方信任锚(证书颁发机构),而是显式“固定”一组直接信任的服务器证书。它们不用于验证其他证书,而是将获得的证书与该主机期望的确切证书进行比较(或至少比较公共密钥)。这更像是具有从服务器名称到证书(或公共密钥)的引用映射,并将您从该主机获得的内容与所拥有的引用进行比较。当然,与CA(PKI)方法不同,CA(PKI)方法旨在让您对以前从未遇到过的各方进行身份验证(通过第三方:CA),因此,实际上这仅适用于相当少量的证书。
与使用标准SSL相比,它有什么更好/不同之处?
SSL是否已为所有连接提供某种认证?
使用CA证书包与使用“标准SSL”没有什么不同,它是SSL / TLS连接常用的方法。您通常看不到它,因为该CA捆绑包通常随您的客户端(或操作系统)一起提供。
请注意,严格来说,这与SSL/TLS itself是正交的,different specification主要只是表示您应该对服务器进行身份验证。证书验证(通过CA证书的PKI方式)在a specification on how to verify the name in the certificate中定义,还由HTTPS specification(当然还有)补充。
关于php - 用于cURL的CA公共(public)证书捆绑包,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24578196/