CURL上的新旋转无法通过SSL工作

时间:2011-05-18 22:02:24

标签: php curl

所以我一直在这里找到很多关于PHP,cURL和SSL的互联网上的帖子。我遇到了一个我没有看到的问题。

显然,如果我设置SSL_VERIFYPEER / HOST以盲目接受我可以让它工作,但我想使用我的证书来验证连接。

所以这里有一些代码:

        $options = array(
            CURLOPT_URL => $oAuthResult['signed_url'],
            CURLOPT_RETURNTRANSFER => TRUE,
            CURLOPT_HEADER => 0,
            CURLOPT_SSL_VERIFYPEER => TRUE,
            CURLOPT_SSL_VERIFYHOST => 2,
            CURLOPT_CAINFO => getcwd() . '\application\third_party\certs\rootCerr.crt'

        );
        curl_setopt_array($ch, $options);
    try {
        $result = curl_exec($ch);
        $errCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if (curl_getinfo($ch, CURLINFO_HTTP_CODE) != 200) {
            throw new Exception('<strong>Error trying to ExecuteWebRequest, returned: '.$errCode .'<br>URL:'.$url . '<br>POST data (if any):</strong><br>');
        }   

        curl_close($ch);

    } catch (Exception $e) {
        //print the error stuff
    }

返回的错误代码是0 ...这意味着一切都是A-OK ...但是因为没有任何东西回到屏幕上......我很确定它不起作用。

任何?

2 个答案:

答案 0 :(得分:0)

您提取的$ errCode是HTTP代码,当OK时为200-299。获得0表示由于问题或类似原因而未设置。

你应该在curl_exec()之后使用curl_errno()来判断事情是否正常。 (您无法轻松检查curl_exec()返回代码中的错误,因为您启用了CURLOPT_RETURNTRANSFER,这使得该函数返回它设置为get的传输内容。当然,返回的内容也不应该返回是事情失败的好指标。)

答案 1 :(得分:0)

我已经按照你的指示使用CURLOPT_CAINFO实现了LibCurl Certs ......

然而,通过提供文件名本身并不够好......它也在我身上崩溃了。

对我来说,文件是通过相对路径引用的...此外,我还必须确保证书也是Base64格式。然后一切都顺利进行..