Php SSL的设置
再一次,我问了另一个关于cURL和SSL的问题,因为我找不到与我的问题相匹配的答案 我在我的Web服务器上使用SSL,在浏览器地址栏a.s.o.上使用可信证书和绿色标志,而不是自签名。很好,到目前为止 现在我想与cURL通信并使用以下函数(尚未添加POST数据): 作为cacert.pem,我使用的是我在浏览器中找到的这个,它显然与我在这里找到的完全相同 在上面显示的代码中,可以看到一个false.pem。现在怎么办?如果此文件为空,则服务器没有响应,但我测试了从curl.haxx.se上的列表粘贴来自另一个企业的证书,结果从服务器得到了与使用correct.pem时相同的正确答案 有什么问题吗?我缺少什么?“服务器没有响应” 我认为这不太可能。我怀疑服务器没有HTTP响应,但是SSL协商失败了——但是您的代码中没有错误检查。如果$output==false,请查看curl_error()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上的列表
您可能需要使用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();