Rails的omniauth Facebook的SSL握手失败

问题描述:

我的应用程序已经数月运行正常,所有在短短的突然测井不工作,我得到这个:Rails的omniauth Facebook的SSL握手失败

2014-10-18T18:09:33.971670+00:00 app[web.1]: Faraday::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure): 2014-10-18T18:09:33.971672+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:918:in `connect' 2014-10-18T18:09:33.971674+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:918:in `block in connect' 2014-10-18T18:09:33.971675+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/timeout.rb:52:in `timeout' 2014-10-18T18:09:33.971676+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:918:in `connect' 2014-10-18T18:09:33.971678+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:862:in `do_start' 2014-10-18T18:09:33.971679+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:851:in `start' 2014-10-18T18:09:33.971680+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:1367:in `request' 2014-10-18T18:09:33.971682+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/agent/instrumentation/net.rb:27:in `block (2 leve ls) in request_with_newrelic_trace' 2014-10-18T18:09:33.971683+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/agent.rb:404:in `disable_all_tracing' 2014-10-18T18:09:33.971685+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/agent/instrumentation/net.rb:26:in `block in requ est_with_newrelic_trace' 2014-10-18T18:09:33.971686+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/agent/cross_app_tracing.rb:41:in `trace_http_requ est' 2014-10-18T18:09:33.971687+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/agent/instrumentation/net.rb:23:in `request_with_ newrelic_trace' 2014-10-18T18:09:33.971689+00:00 app[web.1]: vendor/ruby-2.0.0/lib/ruby/2.0.0/net/http.rb:1126:in `get' 2014-10-18T18:09:33.971690+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/faraday-0.9.0/lib/faraday/adapter/net_http.rb:78:in `perform_request' 2014-10-18T18:09:33.971691+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/faraday-0.9.0/lib/faraday/adapter/net_http.rb:39:in `call' 2014-10-18T18:09:33.971693+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/faraday-0.9.0/lib/faraday/request/url_encoded.rb:15:in `call' 2014-10-18T18:09:33.971694+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/faraday-0.9.0/lib/faraday/rack_builder.rb:139:in `build_response' 2014-10-18T18:09:33.971695+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/faraday-0.9.0/lib/faraday/connection.rb:377:in `run_request' 2014-10-18T18:09:33.971696+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/oauth2-0.8.1/lib/oauth2/cli ent.rb:88:in `request' 2014-10-18T18:09:33.971698+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/oauth2-0.8.1/lib/oauth2/access_token.rb:99:in `request' 2014-10-18T18:09:33.971699+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/oauth2-0.8.1/lib/oauth2/access_token.rb:106:in `get' 2014-10-18T18:09:33.971700+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-facebook-access-token-0.1.3/lib/omniauth/strategies/facebook-access-token.rb: 90:in `callback_phase' 2014-10-18T18:09:33.971702+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:227:in `callback_call' 2014-10-18T18:09:33.971703+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:184:in `call!' 2014-10-18T18:09:33.971704+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:164:in `call' 2014-10-18T18:09:33.971706+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:186:in `call!' 2014-10-18T18:09:33.971707+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/strategy.rb:164:in `call' 2014-10-18T18:09:33.971708+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/omniauth-1.2.1/lib/omniauth/builder.rb:59:in `call' 2014-10-18T18:09:33.971709+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/rack/error_collector.rb:55:in `call' 2014-10-18T18:09:33.971711+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/rack/agent_hooks.rb:32:in `call' 2014-10-18T18:09:33.971712+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/newrelic_rpm-3.8.1.221/lib/new_relic/rack/browser_monitoring.rb:27:in `call' 2014-10-18T18:09:33.971713+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/rack-ssl-1.4.1/lib/rack/ssl.rb:27:in `call' 2014-10-18T18:09:33.971714+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/warden-1.2.3/lib/warden/manager.rb:35:in `block in call' 2014-10-18T18:09:33.880979+00:00 app[web.1]: I, [2014-10-18T18:09:33.880840 #15] INFO -- omniauth: (facebook_access_token) Callback phase initiated. 2014-10-18T18:09:33.971716+00:00 app[web.1]: vendor/bundle/ruby/2.0.0/gems/warden-1.2.3/lib/warden/manager.rb:34:in `catch'

我无意中在一个偶然的鸣叫那提到facebook以某种方式悄悄地处理了狮子狗的弱点,我有一种感觉,它与我即将经历的事情有关。我不知道如何解决它

嗯,基本上,如果这发生在任何人 - 我用的是omniauth- Facebook的宝石,以及在那个宝石(不知道在哪里)保持使用sslv3(即使Facebook由于POODLE漏洞而丢弃它)。我只是改用了考拉宝石,而且我很开心!

+0

感谢您发布这个答案@volk。那么,你是否使用omniauth进行用户认证与设计?我遇到同样的问题,但是,我不明白我可以如何使用考拉作为替代方案,谢谢 – 2014-11-13 04:31:49

+1

我正在使用omniauth-facebook与omniauth-facebook-access-token gem(https://github.com/SoapSeller/omniauth-facebook-access-token)结合使用唯一的auth我已经确认Facebook访问令牌是合法的,然后发回一个特殊的身份验证令牌,这是我的应用程序独有的(它是一个iphone应用程序) – volk 2014-11-17 16:43:24

+0

Th anks @volk。我能够通过将我的宝石更新为仅取决于ssl v2的版本来解决我的问题。 http://*.com/questions/26694173/existing-rails-4-heroku-app-suddenly-failing-with-sslv3-read-server-hello-a-ss – 2014-11-17 18:12:57

看看这个问题,它可能有你正在寻找的解决方案。你也可以关闭SSL验证,显然不是一个好永久性解决方案,但它可以让你运行你的应用程序暂时

How to get rid of OpenSSL::SSL::SSLError

+0

嘿所以我只是尝试添加这样的: :client_options => {:SSL => {:ca_path => “#{Rails.root} /lib/ssl/cacert.pem”}} 和它没有工作:( – volk 2014-10-18 18:28:02

+0

尝试no_verify选项 – OneChillDude 2014-10-18 20:34:00