SSL_connect SYSCALL вернул =5 errno=0 состояние = сервер чтения SSLv2/v3 привет A - Фарадей:: Ошибка::ConnectionFailed

Я видел много ответов здесь, но ни один из них не сработал.

Я использую камень omniauth-oauth2 для интеграции со сторонним клиентом.

Я использую фазу настройки, описанную здесь, но я всегда получаю эту ошибку:

Authentication failure! failed_to_connect: Faraday::Error::ConnectionFailed, SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A

Faraday::Error::ConnectionFailed (SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3     read server hello A):
.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `connect'
.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/net/http.rb:918:in `block in connect'

Мой инициализатор в config/initializers является:

Rails.application.config.middleware.use OmniAuth::Builder do
  client_id = 'my_client_id'
  client_secret = 'secret'

  ca_file = Rails.root.join('config', 'cacert.pem').to_s

  ssl_options = {}
  ssl_options[:ca_path] = '/usr/local/etc/openssl'
  ssl_options[:ca_file] = ca_file

  provider :my_partner_provider, client_id, client_secret,  :client_options => {:ssl => ssl_options},
    setup: ->(env){
    req = Rack::Request.new(env)
    site = "https://#{req.params.fetch('shop')}"
    env['omniauth.strategy'].options[:client_options][:site]  = site
  }
end

Я пробовал с и без опций ssl.

В дополнение, вот мой стек: https://gist.github.com/cleytonmessias/11274209

Я набрал в терминале openssl s_client -showcerts -connect partnerurl.com:443 <<<OK и он вернул это: https://gist.github.com/cleytonmessias/11288646

Кто-нибудь знает решение этой проблемы?

1 ответ

Решение

Я наконец нашел окончательный ответ:

Благодаря @mislav, которые дают подсказку, чтобы изменить ssl version,

Мне пришлось измениться, потому что мой партнер построил свое приложение на asp.net и использует эту версию ssl. Более подробная информация на http://mislav.uniqpath.com/2013/07/ruby-openssl/

Итак, окончательный код выглядит следующим образом:

Rails.application.config.middleware.use OmniAuth::Builder do
  client_id = 'my_client_id'
  client_secret = 'secret'

  ssl_options = {}
  ssl_options[:version] = :TLSv1

  ssl = {}
  ssl[:ssl] =  ssl_options

  provider :partner, client_id, client_secret,
    client_options: { connection_opts: ssl} ,
    setup: ->(env){
    req = Rack::Request.new(env)
    token_url = "https://#{req.params.fetch('shop')}"
    env['omniauth.strategy'].options[:client_options][:token_url] = token_url
  }
end
Другие вопросы по тегам