再一次,关于cURL和SSL的另一个问题,因为我找不到与我的问题匹配的答案。
我在我的网络服务器上使用SSL,在浏览器地址栏a.s.o上使用受信任的证书和绿色标志,而不是自签名。那么好,到目前为止。
现在我想与cURL进行通信并使用以下功能(尚未添加POST数据):
function ssltest(){
$post_data = '';
$url = 'https://myserver/test.php';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_MUTE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 1);
//curl_setopt($ch, CURLOPT_CAINFO, 'sslstuff/cacert.pem');
curl_setopt($ch, CURLOPT_CAINFO, 'sslstuff/false.pem');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/x-www-form-urlencoded'));
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
echo ssltest();
正如cacert.pem我使用的那个,我在浏览器中找到的,这显然与我在这里找到的相同http://curl.haxx.se/ca/cacert.pem 在上面显示的代码中有一个false.pem可见。怎么办 ?如果这个文件是空的,那么服务器没有响应,但是我测试了从curl.haxx.se列表中的另一个企业粘贴证书。我从服务器得到了相同的正确答案,就像我使用正确的答案一样。 PEM
问题是什么?我缺少什么?
答案 0 :(得分:0)
“服务器没有响应”
我认为这不太可能。我怀疑服务器没有 HTTP 响应,但SSL协商失败 - 但您的代码中没有错误检查。如果$ output === false,请查看curl_error()。
您可能想要使用VERIFYHOST和VERIFYPEER来确定问题的确切原因。