2016-08-01 129 views
1

我在使用TLS 1.2进行卷曲操作时遇到了困难 - 我将登录数据发布到网站并将其保存在cookie文件中。我得到的错误信息是这样的:获取TLS 1.2与cURL一起工作的困难

“API错误:SSL连接错误”

我已经尝试设置curl_setopt($ch, CURLOPT_POST)到6,但似乎并没有工作,有什么建议?

版本我使用:

OpenSSL的版本1.0.2b CURL版本是7.49.1 PHP 5.5 下面是代码:

public function curl_request($url, $data, $method = 'GET', $headers = array(), $ssl_verify = false) 
    { 
      $ch = curl_init(); 

      curl_setopt($ch, CURLOPT_URL, $url); 
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
      curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, $ssl_verify); 
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, $ssl_verify); 
      curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); 
      curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
      curl_setopt($ch, CURLOPT_FAILONERROR, false); 
      curl_setopt($ch, CURLOPT_HTTP200ALIASES, range(400, 599)); 
      curl_setopt($ch, CURLINFO_HEADER_OUT, true); 


      if ($method == 'POST') 
      { 
        curl_setopt($ch, CURLOPT_POST, 6); 
        curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 
      } 

      $resp = curl_exec($ch);  

      if(curl_errno($ch)) 
      { 
        throw new Exception('Unleashed API Error:' . curl_error($ch)); 
      } 

      //print("<pre>" . print_r($resp, true). "</pre>") 

      $info = curl_getinfo($ch); 

      curl_close($ch); 

      $output = array(); 
      $output['resp'] = $resp; 
      $output['info'] = $info; 
+0

可能重复[TLS 1.2不能在cURL中工作](http://stackoverflow.com/questions/30145089/tls-1-2-not-working-in-curl) – miken32

+0

$ ssl_verify是真是假? –

+0

$ ssl_verify = false – Marcin

回答

0

OpenSSL version is 0.9.8b

没有支持用于OpenSSL 0.9.8中的TLS 1.2。您至少需要OpenSSL版本1.0.1。

+0

谢谢,我刚刚更新了OpenSSL,是否应该解决了这个问题,还是有其他我错过的东西? – Marcin

+0

@Marcin:如果您不仅更新了OpenSSL二进制文件,而且还卷曲了,以便它使用此库,那么至少应该解决不支持TLS 1.2的问题。 –