SSL_connect SYSCALL返回= 5 errno = 0状态= SSLv2/v3读取服务器问候A-Faraday :: Error :: ConnectionFailed [英] SSL_connect SYSCALL returned=5 errno=0 state=SSLv2/v3 read server hello A - Faraday::Error::ConnectionFailed

查看:170
本文介绍了SSL_connect SYSCALL返回= 5 errno = 0状态= SSLv2/v3读取服务器问候A-Faraday :: Error :: ConnectionFailed的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这里看到了很多答案,但是都没有用.

我正在使用 omniauth-oauth2 gem 与第三方客户集成. /p>

我正在使用此处中所述的设置阶段,但是我总是出现此错误:

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

有人知道这个问题的解决方案吗?

解决方案

我终于找到了最终答案:

感谢@mislav,它给出了更改 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

I've seen many answers here, but none of them has worked.

I'm using omniauth-oauth2 gem to integrate with a third-party customer.

I'm using the setup phase described here but I'm always getting this error:

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'

My initializer at config/initializers is:

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

I've tried with and without ssl options.

To complement, here's my stack: https://gist.github.com/cleytonmessias/11274209

I've typed in terminal openssl s_client -showcerts -connect partnerurl.com:443 <<<OK and it returned this: https://gist.github.com/cleytonmessias/11288646

Does anyone know the solution to this issue?

解决方案

I've finally found a final answer:

Thanks to @mislav that give the hint to change ssl version.

I had to change because my partner has its application built using asp.net and uses this version of ssl. More info at http://mislav.uniqpath.com/2013/07/ruby-openssl/

So the final code is as it follows:

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

这篇关于SSL_connect SYSCALL返回= 5 errno = 0状态= SSLv2/v3读取服务器问候A-Faraday :: Error :: ConnectionFailed的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆