【问题标题】:SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed MACSSL_connect 返回=1 errno=0 state=SSLv3 读取服务器证书 B: 证书验证失败 MAC
【发布时间】:2014-08-25 06:05:19
【问题描述】:

我正在尝试使用 SoundCloud SDK 进行用户身份验证。用户点击“登录”后我的第一条路线:

get "/login" do 
    client = Soundcloud.new(:client_id => 'MY_ID',
                    :client_secret => 'MY_SECRET',
                    :redirect_uri => 'http://localhost:9393/signed_in')

redirect client.authorize_url()

end 

然后我有他们被重定向的下一条路线:

get "/signed_in" do 
client = Soundcloud.new(:client_id => '16d6ada1a0cfc5009f7d59d203a13b2f',
                    :client_secret => '845df7d44dc4e359fedc8ed5944d29a5',
                    :redirect_uri => 'http://localhost:9393/signed_in')

code = params[:code]
access_token = client.exchange_token(:code => code)

end

我可以成功点击重定向 url 并返回一个代码,但我从 Sinatra 收到以下错误:

OpenSSL::SSL::SSLError at /signed_in SSL_connect 返回=1 errno=0 state=SSLv3 读取服务器证书B:证书验证失败

我读过这些热门文章: http://railsapps.github.io/openssl-certificate-verify-failed.html

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

还有很多

当我输入时:

rvm osx-ssl-certs status all

我的结果是 /usr/local/etc/openssl/cert.pem 的证书:最新。

我目前在 Mac 10.6.8 上使用 ruby​​ 2.1.1。我已经解决了关于这个主题的大约 20 个堆栈溢出问题,但我无法跳过这个问题。

【问题讨论】:

    标签: ruby macos sinatra ssl-certificate


    【解决方案1】:
    1. 下载http://curl.haxx.se/ca/ca-bundle.crt
    2. 将证书复制到/usr/local/etc/openssl/certs/
    3. 使omniauth.rb 看起来像这样:

      options = {
        scope: "email",
        :prompt => "select_account",
        access_type: 'offline',
        :client_options => {
          :ssl => {
            :ca_file => "/usr/local/etc/openssl/certs/ca-bundle.crt",
            :ca_path => "/usr/local/etc/openssl/certs"
          }
        }
      }
      
      Rails.application.config.middleware.use OmniAuth::Builder do
        provider :google_oauth2, Rails.application.secrets.client_id, Rails.application.secrets.client_secret, options
      end
      

    【讨论】:

      【解决方案2】:

      有一个 gem 可以解决这个问题,尝试将gem 'certified', '~> 1.0'添加到您的Gemfile

      【讨论】:

        猜你喜欢
        • 2011-05-30
        • 2013-05-30
        • 1970-01-01
        相关资源
        最近更新 更多