【发布时间】: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 文件在验证您尝试访问的主机时有效,它必须是签署您网站证书的证书颁发机构的公钥证书,而不是证书本身。