Ошибка рукопожатия SSL Rails omniauth facebook

Мое приложение работало нормально в течение нескольких месяцев, и вдруг вход в систему просто не работает, я получаю это:

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 каким-то образом незаметно справился с уязвимостью пуделя, и у меня есть ощущение, что это связано с тем, что я испытываю. я не уверен, как это решить


person volk    schedule 18.10.2014    source источник


Ответы (2)


Ну, в общем, на случай, если это случится с кем-то - я использовал гем omniauth-facebook, и что-то внутри этого гемма (не знаю, где) продолжало использовать sslv3 (даже несмотря на то, что facebook отказался от него из-за уязвимости POODLE). Вместо этого я просто переключился на драгоценный камень коалы, и я был готов к работе!

person volk    schedule 21.10.2014
comment
Спасибо за публикацию этого ответа @volk. Итак, вы использовали omniauth для аутентификации пользователей с помощью devise? У меня та же проблема, что и у вас, однако я не понимаю, как я могу использовать Коалу в качестве замены в этом сценарии. Спасибо. - person Matt Long; 13.11.2014
comment
я использовал omniauth-facebook в сочетании с геммом omniauth-facebook-access-token (github. com/SoapSeller/omniauth-facebook-access-token). единственная авторизация, которую я имел, подтверждала, что токен доступа facebook был законным, а затем отправляла специальный токен аутентификации, уникальный для моего приложения. (это приложение для айфона) - person volk; 17.11.2014
comment
Спасибо @волк. Я смог решить свою проблему, просто обновив свои драгоценные камни до версий, которые зависели только от ssl v2. stackoverflow.com/questions/26694173/ - person Matt Long; 17.11.2014
comment
круто @MattLong. Я вспомнил, что пытался обновиться тогда, и это не сработало для меня. Не знаю почему, но приятно слышать, что это помогло вам! - person volk; 17.11.2014

Проверьте этот вопрос, он, вероятно, имеет решение, которое вы ищете. Также вы можете отключить проверку SSL, что, очевидно, не является хорошим постоянным решением, но позволит вам временно запустить ваше приложение.

Как избавиться от OpenSSL::SSL::SSLError

person OneChillDude    schedule 18.10.2014
comment
эй, я только что попытался добавить это: :client_options =› { :ssl =› { :ca_path =› #{Rails.root}/lib/ssl/cacert.pem } } и это не сработало :( - person volk; 18.10.2014
comment
Попробуйте опцию no_verify - person OneChillDude; 19.10.2014