Google Oauth SSL 错误 - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Google Oauth SSL error - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

我正在开发 rails 具有社会授权的应用程序。 Facebook 和 Twitter 登录工作正常,但 Google...

出现了一些奇怪的情况

我的 google 初始化程序:

  provider :google_oauth2, OAUTH_CONFIG[:google_api_key], OAUTH_CONFIG[:google_api_secret], {
    :access_type => 'offline',
    :prompt => 'consent',
    :scope => 'userinfo.email, userinfo.profile, youtube.readonly'
  }

我的错误,我在点击 Google 登录时看到的错误:

Faraday::Error::ConnectionFailed
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `connect'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `block in connect'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/timeout.rb:76:in `timeout'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:920:in `connect'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:863:in `do_start'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:852:in `start'
/Users/bmalets/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/net/http.rb:1369:in `request'
faraday (0.8.8) lib/faraday/adapter/net_http.rb:75:in `perform_request'
faraday (0.8.8) lib/faraday/adapter/net_http.rb:38:in `call'
faraday (0.8.8) lib/faraday/request/url_encoded.rb:14:in `call'
faraday (0.8.8) lib/faraday/connection.rb:253:in `run_request'
oauth2 (0.8.1) lib/oauth2/client.rb:88:in `request'
oauth2 (0.8.1) lib/oauth2/client.rb:131:in `get_token'
oauth2 (0.8.1) lib/oauth2/strategy/auth_code.rb:29:in `get_token'

SSL 证书有什么问题?求助

在 google 搜索结果中,我看到许多类似的答案 - 更新 'openssl' 库,重新安装 ruby,rvm,更新 gemsets,bla-bla 和许多其他...我有什么都试过了,没有任何帮助。

环境:rails4.1.6,ruby2.1.4,OS_XYosemite

我添加到我的应用程序初始化这个不漂亮的尖峰:

if Rails.env.development? 
  OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE 
end

现在可以在开发模式下登录了。

另一个答案说要禁用 OpenSSL 的 VERIFY_PEER 选项,这意味着您的应用程序未验证证书,并且您在进行查询时无法验证您正在连接到 Google。这是一个巨大的安全风险,你永远不应该这样做。

google-api-ruby-客户端 (https://github.com/google/google-api-ruby-client/issues/253) 的 GitHub 存储库存在问题描述。当前的解决方法是将其添加到您的应用程序中:

ENV['SSL_CERT_FILE'] = Gem.loaded_specs['google-api-client'].full_gem_path+'/lib/cacerts.pem'

对于 Rails 应用程序,您可以将其添加为 config/application.rb 中的一行。

简而言之,您应该做以下事情:

rvm remove 2.1.4
rvm install 2.1.4 --disable-binary

这是带有说明的完整解决方案: https://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html