2015-11-10 51 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 –