Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SSL的设置_Php_Ssl_Curl_Openssl_Ssl Certificate - Fatal编程技术网

Php SSL的设置

Php SSL的设置,php,ssl,curl,openssl,ssl-certificate,Php,Ssl,Curl,Openssl,Ssl Certificate,再一次,我问了另一个关于cURL和SSL的问题,因为我找不到与我的问题相匹配的答案 我在我的Web服务器上使用SSL,在浏览器地址栏a.s.o.上使用可信证书和绿色标志,而不是自签名。很好,到目前为止 现在我想与cURL通信并使用以下函数(尚未添加POST数据): 作为cacert.pem,我使用的是我在浏览器中找到的这个,它显然与我在这里找到的完全相同 在上面显示的代码中,可以看到一个false.pem。现在怎么办?如果此文件为空,则服务器没有响应,但我测试了从curl.haxx.se上的列表

再一次,我问了另一个关于cURL和SSL的问题,因为我找不到与我的问题相匹配的答案

我在我的Web服务器上使用SSL,在浏览器地址栏a.s.o.上使用可信证书和绿色标志,而不是自签名。很好,到目前为止

现在我想与cURL通信并使用以下函数(尚未添加POST数据):

作为cacert.pem,我使用的是我在浏览器中找到的这个,它显然与我在这里找到的完全相同 在上面显示的代码中,可以看到一个false.pem。现在怎么办?如果此文件为空,则服务器没有响应,但我测试了从curl.haxx.se上的列表粘贴来自另一个企业的证书,结果从服务器得到了与使用correct.pem时相同的正确答案

有什么问题吗?我缺少什么?

“服务器没有响应”

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


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

像这样吗?如果($output!==false)返回$output,则执行该操作;否则返回curl_错误($ch);没有区别。没有输出时没有错误消息。抱歉,我试图在关闭curl后捕获错误消息。现在,当文件为空(但仍然存在)时,我收到错误消息“错误设置证书验证位置:CAfile:sslstuff/false.pem CApath:/etc/ssl/certs”。但是,如果我使用了一个错误的证书,与正确的证书不同,仍然没有错误,并且网站正在响应猜测,最简单的解决方案是:使用CURLOPT_CAINFO删除整个行,因为正确的证书可以在本地计算机上的/etc/ssl/certs找到:-)我说的对吗?“问题出在哪里?”-问题出在哪里?
    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();