【问题标题】:PHP 35: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failurePHP 35:错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败
【发布时间】:2014-06-27 10:12:37
【问题描述】:

cURL 停止工作。我开始收到此错误(直到几个小时前它还可以正常工作)。

我正在使用 PHP 的 cURL 扩展。我找到了 curl 命令行的一些解决方案,但不幸的是我不理解它们:/而且我不知道如何将它们移动到 PHP cURl 标志。

cURL 配置:

$curl=curl_init();
curl_setopt($curl, CURLOPT_URL, "https://pln.bitcurex.com/data/ticker.json");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSLVERSION, 3);
curl_setopt($curl, CURLOPT_TIMEOUT, 10);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_USERAGENT, $this->useragent);
curl_setopt($curl, CURLOPT_VERBOSE, 0);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
curl_setopt($curl, CURLOPT_HTTPHEADER, $this->headers);

if(substr($url, 0, 5)=='https') curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 2);

if($this->ciastko)
{
    curl_setopt($curl, CURLOPT_COOKIEJAR, $this->ciastko);
    curl_setopt($curl, CURLOPT_COOKIEFILE, $this->ciastko);
}

if($this->post)
{
    if( is_array($this->post) && count($this->post) > 0 )
    {
        $postdata = http_build_query($this->post,'','&');
    }
    elseif( is_string($this->post) )
    {
        $postdata = $this->post;
    }
    else $postdata = '';

    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
}

$wynik=curl_exec($curl);

错误:

35:错误:14094410:SSL 例程:SSL3_READ_BYTES:sslv3 警报握手失败

任何想法如何解决这个问题?

【问题讨论】:

标签: php curl


【解决方案1】:

我只是改变

curl_setopt($curl, CURLOPT_SSLVERSION, 3);

curl_setopt($curl, CURLOPT_SSLVERSION, 4);

【讨论】:

    【解决方案2】:

    我知道这是一个有点过时的问题,但我已经为其他人找到了解决方案:

    curl_setopt($ch, CURLOPT_SSLVERSION, 3);
    curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, 'SSLv3');
    

    【讨论】:

    • 您能否解释一下这些设置的作用以及它与问题中询问的 curl 错误消息有何关系?
    • 这不起作用,我遇到了同样的问题...这似乎发生在旧的基于 Centos 5 的服务器上,使用旧的 OpenSSL 0.9.8
    • 由于 POODLE 漏洞,许多网站现在禁用 SSL 3.0。您应该切换到 TLS,如下所示: curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1)
    【解决方案3】:

    输入值:

    $params = Array
        (
            "username" => "XXXXXXXXXX",
            "password" => "XXXXXX"
        );
    
    $path ='https://www.XXXXXXXX.com/xx/xxx/format/json/';
    

    功能:

    function curlpost($parameters, $path){
         $apiUrl = $path;
         $curl_handle = curl_init();
         curl_setopt($curl_handle, CURLOPT_URL, $apiUrl);
         curl_setopt($curl_handle, CURLOPT_BUFFERSIZE, 1024);
         curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, TRUE);
         curl_setopt($curl_handle, CURLOPT_SSL_VERIFYPEER, TRUE);
         curl_setopt($curl_handle, CURLOPT_SSL_VERIFYHOST, TRUE);
         curl_setopt($curl_handle, CURLOPT_POST, TRUE);
         curl_setopt($curl_handle, CURLOPT_PROXY, '');
         curl_setopt($curl_handle, CURLOPT_SSLVERSION, 4);
         curl_setopt($curl_handle, CURLOPT_POSTFIELDS, $parameters);
         $response = curl_exec($curl_handle);
    
         $content = curl_exec( $curl_handle );
         $err     = curl_errno( $curl_handle );
         $errmsg  = curl_error( $curl_handle );
         $header  = curl_getinfo( $curl_handle );
         curl_close( $curl_handle );
    
         $header['errno']   = $err;
         $header['errmsg']  = $errmsg;
         $header['content'] = $content;
        curl_close($curl_handle);
         return $header;
     } 
    

    【讨论】:

      猜你喜欢
      • 2019-08-16
      • 2014-12-10
      • 2015-04-02
      • 1970-01-01
      • 2016-08-14
      • 2017-05-14
      • 2019-12-21
      • 2016-12-12
      • 2015-12-02
      相关资源
      最近更新 更多