【发布时间】:2012-08-13 05:52:44
【问题描述】:
我应该更加关注涉及安全的课程。我对某事感到很困惑。首先,这是我要完成的工作的背景。
我有一个需要访问的网络服务。 Web 服务设置为 HTTPS。客户端和服务器之间的流量是加密的(这与身份验证无关)。
我正在通过 cURL 和 PHP 与 Web 服务进行交互。我已经获得了一个通过 HTTP 在本地工作的示例,并且我相当有信心在 cURL/PHP 方面我走在正确的轨道上。
当使用 HTTP 版本的代码通过 HTTPS 访问 Web 服务时,我得到一个 error code 60 "SSL certificate problem, verify that the CA cert is OK" (error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed)
从我的阅读来看,我似乎需要一个 PEM 文件,并且我需要设置额外的 cURL 选项,例如:
- CURLOPT_CAINFO
- CURLOPT_SSLCERT
- CURLOPT_SSLKEYPASSWD
我的问题是我如何知道从哪里获取 PEM 文件或者我是否可以简单地制作它?这可能是一个显而易见的答案,因为我确定我错过了一些东西但我想我只需要询问并了解我所缺少的背景。
修正:Web 服务使用由 VeriSign 签署的证书。所以它不是自签名证书。此外,Web 服务由外部组织拥有和运营。
谢谢。
【问题讨论】:
-
您使用的是自签名证书还是由证书颁发机构颁发的证书?
-
我不知道——你是说网络服务吗? Web 服务不是我的……它是一个客户。我需要找出来吗?
-
CA = 证书颁发机构 -- 像 Digicert 这样的公司。它们基本上是创建浏览器接受的证书的寡头政治。是的,客户应该拥有所有相关信息。例如,如果您在浏览器中访问google.com,您可以查看由 Thawte Consulting (Pty) Ltd 签署的证书。该公司向您保证 google.com 的证书是合法的。
-
我了解 CA。这不是问题......有问题的网络服务正在使用由 VeriSign 签名的证书。
-
那我有点困惑。如果这是标准设置,则您不必在这里做任何特别的事情,除非他们的 Web 服务希望您发送自己的证书来验证您是否是 Web 服务的有效用户。我认为您确实需要与他们联系以获取更多信息。
标签: php curl public-key-encryption pem