当没有https版本可用时,ssl_verify_result为0

时间:2014-01-27 09:28:52

标签: php curl ssl

我有一个使用http但不是https的网站。当我现在使用cURL时,http-Version获得http_code = 200。当我现在使用https-Version时,它获得0,这没关系,因为没有该网站的https版本。但问题是,ssl_verifiy_result是0,这意味着:

操作成功

来源:http://www.openssl.org/docs/apps/verify.html#VERIFY_OPERATION

为什么?

1 个答案:

答案 0 :(得分:0)

这确实是openSSL中的一个错误。此功能仅在您具有以下内容时才有用:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);

另见:

If no peer certificate was presented, the returned result code is X509_V_OK. This is because no verification error occurred, it does however not indicate success. SSL_get_verify_result() is only useful in connection with SSL_get_peer_certificate(3).

http://www.openssl.org/docs/ssl/SSL_get_verify_result.html#bugs

请记住,当您希望cURL连接到SSL并验证证书时,您必须先下载并将CA证书(firefox可以执行此操作)保存到您的应用程序并在您的cURL调用中引用它。例如:

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, getcwd() . "/CACertificats/AddTrustExternalCARoot.crt");

关于此的小教程:http://unitstep.net/blog/2009/05/05/using-curl-in-php-to-access-https-ssltls-protected-sites/