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

时间:2015-03-15 15:32:25

标签: php ajax ssl curl

我正在尝试使用Ajax发送cURL PHP请求但是它会出错

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,第四个参数无关紧要{{ 1}}和第五个是it's for cookie file

根据此命令data o post

,我正在使用UBUNTU 14.10cURL Versioncurl 7.37.1

/usr/bin/curl -V

打印相同

请帮忙

2 个答案:

答案 0 :(得分:0)

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

此处有一个页面,其中包含以下信息:http://blog.techstacks.com/2010/03/3-common-causes-of-unknown-ssl-protocol-errors-with-curl.html

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

答案 1 :(得分:0)

这台服务器坏了。它不支持最兼容的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进行的简短测试确认1的CURLOPT_SSLVERSION不起作用3应该工作。