Php Curl HTTPS请求给出了;SSL对等方不希望收到握手消息。”;

Php Curl HTTPS请求给出了;SSL对等方不希望收到握手消息。”;,php,curl,https,Php,Curl,Https,我有一个简单的cURL代码,它在一台机器上运行良好(PHP5.2.17),但在另一台机器上运行失败(PHP5.6.13)。在较新的版本中,cURL调用抛出一个异常 SSL对等方不希望收到握手消息 代码如下: private function postRequest($url, $request) { $curl = curl_init($url); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); curl_seto

我有一个简单的cURL代码,它在一台机器上运行良好(PHP5.2.17),但在另一台机器上运行失败(PHP5.6.13)。在较新的版本中,cURL调用抛出一个异常

SSL对等方不希望收到握手消息

代码如下:

private function postRequest($url, $request) {
    $curl = curl_init($url);

    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER,  FALSE);
    curl_setopt($curl, CURLOPT_CAINFO,          "certificate.der");
    curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,  2);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER,  1);
    curl_setopt($curl, CURLOPT_POST,            1);
    curl_setopt($curl, CURLOPT_POSTFIELDS,      $request);
    curl_setopt($curl, CURLOPT_HTTPHEADER,      array('Content-Type: text/xml'));

    $r = curl_exec($curl);
    if ($r == false) {
        $r = curl_error($curl);
    }

    return $r;
}
您可能需要使用:

curl_setopt($curl, CURLOPT_SSLVERSION,  CURL_SSLVERSION_SSLv3);
选项包括:

CURL_SSLVERSION_DEFAULT

CURL_SSLVERSION_TLSv1

TLSv1.x

CURL_SSLVERSION_SSLv2

SSLv2

CURL_SSLVERSION_SSLv3

SSLv3

CURL_SSLVERSION_TLSv1_0

TLSv1.0 (Added in 7.34.0)

CURL_SSLVERSION_TLSv1_1

TLSv1.1 (Added in 7.34.0)

CURL_SSLVERSION_TLSv1_2

TLSv1.2 (Added in 7.34.0) 


$url
的值是否相同?@Halcyon是。我将自我包含的测试代码从一台机器复制到另一台机器上,效果很好。问题:如果CURLOPT_SSL_VERIFYPEER设置为false,CURLOPT_CAINFO有什么用?@swidmann没有,但我正在调试,这正是我使用的代码。这很有效,尽管我的系统上不存在
curl_easy_setopt
。尝试在证书上进行验证也能更好地工作,这给了我更好的错误消息。谢谢