繁体   English   中英

cURL PHP错误:连接中未知的SSL协议错误

[英]cURL PHP ERROR: Unknown SSL protocol error in connection

我正在尝试使用cURL PHP发送Ajax请求,但它给出了错误

Unknown SSL protocol error in connection

虽然我能够login到同一服务器。

我已经试过了

curl_setopt( $ch, CURLOPT_SSLVERSION, 1 );

Ajax请求就是这样

$header = array('Accept' => '*/*', 
"X-Requested-With" => "XMLHttpRequest", 
"Content-Type" => "application/x-www-form-urlencoded");

$data = array('ClientNumber=999999&OrderClass=ContractOrders&ShowAll=ContractOrders&ShowPerPage=500');

echo $page = Spider::spider($header, 'https://wfs.nursefinders.com/MasterConsole/displayorders.cfm?ShowAll=ContractOrders', 'https://wfs.nursefinders.com/MasterConsole/BuildOrderDisplaySection.cfm', FALSE, $data[0]);

注意spider函数中,第一个参数是header ,第二个是referrer第三个是url to access ,第四个无关紧要it's for cookie file ,第五个是data o post

我正在使用UBUNTU 14.10 ,根据此命令/usr/bin/curl -VcURL Versioncurl 7.37.1

和通过php phpinfo()打印相同

请帮忙

我相信问题的原因是与您通信的服务器不支持SSL协议。

此处有有关此信息的页面: http : //blog.techstacks.com/2010/03/3-common-causes-of-unknown-ssl-protocol-errors-with-curl.html

有关更多直接信息,请尝试查看API文档以获取其服务器所需的连接协议。 他们可能提供了将要连接的样本。

该服务器严重损坏。 它不支持最兼容的SSLv23握手,如果尝试尝试,它将挂起。 它仅支持显式SSL 3.0或TLS 1.0握手。 通过查看cURL的源代码,在我看来,所有实施TLS1.0 +的变体都将执行SSLv23握手,而服务器则不能:

-- curl-7.41.0/lib/vtls/openssl.c
1719   default:
1720   case CURL_SSLVERSION_DEFAULT:
1721   case CURL_SSLVERSION_TLSv1:
1722   case CURL_SSLVERSION_TLSv1_0:
1723   case CURL_SSLVERSION_TLSv1_1:
1724   case CURL_SSLVERSION_TLSv1_2:
1725     /* it will be handled later with the context options */
1726     req_method = SSLv23_client_method();

这仅留下使用不安全的SSL 3.0的选项,即

curl_setopt( $ch, CURLOPT_SSLVERSION, 3 );

虽然我没有要测试的PHP,但在命令行上对curl -1curl -3进行了简短测试,确认CURLOPT_SSLVERSION为1无效,而3正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM