【问题标题】:PHP cURL and SSL certificate errorPHP cURL 和 SSL 证书错误
【发布时间】:2012-09-17 16:07:46
【问题描述】:

使用CURLOPT_SSL_VERIFYHOST时出现此错误:

Curl error: SSL certificate problem, verify that the CA cert is OK. Details: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我尝试了什么:

1 - 关闭VERIFYHOST 不是一个选项,我需要这个才能登录到 https 页面

2 - 下载了证书,我这样使用它:

    curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 1);
    curl_setopt($c, CURLOPT_SSL_VERIFYHOST, 2);
    curl_setopt($c, CURLOPT_CAINFO, getcwd() . '/certificate.pl.crt');  

我仍然遇到同样的错误。

3 - 我在 Apache 扩展中打开了 ssl_module(我使用 WAMP)

4 - 我在 PHP 扩展中打开了php_openssl

我还应该做什么?来自phpinfo();我知道我有:

mod_ssl/2.2.22 
OpenSSL/0.9.8u

它仍然不起作用。我还应该做什么:(?

【问题讨论】:

  • verifyhost 不会禁用 ssl。它只是关闭服务器端证书的验证。您确定您拥有的 .crt 是签署了运行您尝试访问的站点的 ssl 证书的 CA 的证书吗?下载站点自己的 .crt 是没有用的。
  • @MarcB 我从poczta.interia.pl 下载了.crt,但POST 信息转到logowanie.interia.pl - 这有区别吗?因为文件的原始名称是 *.interia.pl.crt,所以我认为它适用于整个网站。 logowanie.interia.pl 将我重定向到主页,因此我无法从那里下载 crt
  • 我刚刚关闭了 VERIFYHOST,但我仍然有错误,我检查并让 CURLOPT_SSL_VERIFYPEER 为 True 给了我错误,但关闭 VERIFYPEER 我无法登录(它说我需要打开 cookie ,但我有带有 chmods 的 cookie.txt,所以我认为 SSL 是问题)
  • *.interia.pl 将是通配符证书,涵盖 interia.pl 域上的所有主机名。但要使 .crt 文件在验证您尝试访问的主机时有效,它必须是签署您网站证书的证书颁发机构的公钥证书,而不是证书本身。

标签: php ssl curl


【解决方案1】:

因为我之前错过了一些 cmets,所以不得不编辑它。

如果您不尝试导入证书并关闭对等验证,如果我没记错的话,您的传输仍然应该是 SSL 安全的,所以如果目标是通过 ssl 获取它,那么我不会打扰搞乱证书的导入。当然,如果您确实想要更安心,那就另当别论了。

【讨论】:

  • SSL 安全性有两个主要目标:1. 隐私加密 2. 验证以确保您与正确的服务器通信。如果没有验证,您将丢失大约一半的安全模型。
  • 如果你拥有服务器并且它是供内部使用的,人们倾向于自签名。你最信任谁,你自己还是第三方?自签名证书的安全性并不低。您可以轻松地在负载均衡器上终止 SSL,然后从那里嗅探到内部节点的会话。客户不知道发生了什么。 SSL 并不能保护您免受这种情况的影响。导入自签名证书并不安全。它在浏览器中看起来很糟糕。您也无需与正确的服务器交谈,而是与正确的服务交谈。你永远不会知道什么服务器照顾你,你知道服务
  • 这很好。不过,对于自签名证书,CURLOPT_SSL_VERIFYHOST 是否会给您额外的保证,您不会处理伪造品? TLS 很复杂,特别是对于 cURL,实现细节对我来说有点模糊。无论哪种方式,这实际上都取决于您要保护哪些数据以及您的用例是什么。如果您的证书是由 CA 颁发的,我认为验证主机仍然是一个好主意 - 请参阅可以代理和伪造的 SSL Man in the Middle Proxy:但是用户会收到警告,因为伪造不是由 CA 颁发的
  • 绝对正确。该 curl 选项基本上说:不要检查证书。几个月前,在 API 上的 SSL 证书在 CA 签名证书上过期后,我不得不这样做。由于 TLS 票证之间的 SSL 会话 ID 发生变化,因此 TLS 也很难平衡。我不想实现这一点。有一个非常不错的工具可以帮助测试 SSL。见github.com/vincentbernat/rfc5077
猜你喜欢
  • 2011-10-31
  • 2022-01-26
  • 2015-04-29
  • 2017-11-21
  • 2018-02-19
  • 2015-12-27
  • 2015-06-05
  • 1970-01-01
  • 2017-04-22
相关资源
最近更新 更多