为SSL设置cURL

时间:2015-02-16 16:57:55

标签: php ssl curl openssl ssl-certificate

再一次,关于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

问题是什么?我缺少什么?

1 个答案:

答案 0 :(得分:0)

“服务器没有响应”

我认为这不太可能。我怀疑服务器没有 HTTP 响应,但SSL协商失败 - 但您的代码中没有错误检查。如果$ output === false,请查看curl_error()。

您可能想要使用VERIFYHOST和VERIFYPEER来确定问题的确切原因。