2016-08-01 128 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的問題。 –