setup cURL for SSL


setup cURL for SSL

再一次,还有一个关于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 一样

怎么了?我缺少什么?

"服务器没有响应"

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

您可能想与VERIFYHOST和VERIFYPEER玩一玩,以确定问题的确切原因。