所以我在这里和其他地方发现了很多关于PHP,cURL和SSL的interwebs的帖子。我有一个问题,我没有看到。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 ...这意味着一切都OK ......但因为没有回来屏幕...我很确定它不工作。
有人吗?
原来,这是一个域问题。我对此并不是100%确定,但它向我解释的方式是,由于该网站位于子域,因此我们需要获得通配证书。一旦我们得到了,一切都奏效了。我可能会解释这是完全错误的,如果我是我稍后更新的,但是一旦我们获得了正确的SSL设置,这段代码就完美了。 – JoeCianflone 2011-05-25 20:23:18