2015-11-10 53 views
1

我得到這個錯誤:當使用此代碼調用APIAPI調用拋出所以SSL_connect錯誤

Not a duplicated SSL_connect returned=1 errno=0 state=error: certificate verify failed OS El Capitan 

require 'json' 
require 'net/http' 
url = 'https://touch-rate.com/o/analytics/dashboard?api_key='+ENV["API_KEY"]+'&app_id='+ENV["APP_ID"]%> 
resp = Net::HTTP.get_response(URI.parse(url)) 
dashboard = JSON.parse(resp.body) 

我的服務器最近更改爲一個安全的服務器,從那時起它一直在拋出上述錯誤。

我已經嘗試了Stackoverflow上的每個選項,但似乎沒有任何工作,有人可以幫助我,爲什麼我得到這個錯誤?

謝謝

回答

-1

你將不得不基本上繞過SSL ceritificate驗證,同時連接到SSL上運行web服務。您可以通過使用代碼

uri = URI.parse(url) 
http = Net::HTTP.new(uri.host, uri.port) 
http.use_ssl = (uri.scheme == 'https') 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 
request = Net::HTTP::Post.new(uri.request_uri) 
response = http.request(request) 
dashboard = JSON.parse(resp.body) 

下面的代碼片段這樣做所以基本上http.verify_mode = OpenSSL::SSL::VERIFY_NONE是代碼繞過證書驗證就行了。 我希望它可以幫助

+0

非常感謝!這對我有效:) – Andy

+0

你能否接受答案,以便其他人會知道這個解決方案的工作原理。 – Ankush

+0

禁用SSL是一個危險的選擇 - 你基本上在中間人攻擊中向自己開放。這些問題可能與OSX升級有關,請參閱此處瞭解更多信息:http://stackoverflow.com/questions/4528101/ssl-connect-returned-1-errno-0-state-sslv3-read-server-certificate-b -certificat –