Rails OpenSSL::SSL::SSLError 如何解决?

redvoilin · 2012年05月16日 · 最后由 xiaocui 回复于 2018年01月26日 · 28953 次阅读

为了获取微博 access_token,需要发送 https 请求,用到了 openssl,在 mac 上没问题,我部署到 centos 上,出现了

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed)

设置了 ca_fileca_path 或者 http.verify_mode = OpenSSL::SSL::VERIFY_NONE 也都不起作用,请问有人知道怎么解决吗?

是因为你的 CentOS 上面的 SSL 证书太旧了,之前 Ruby China 也有这样的问题。 后面我是设置 :

require 'openssl'
module OpenSSL
  module SSL
    remove_const :VERIFY_PEER
  end
end

这样来跳过的


正确的解决方法:

更新 OpenSSL

rvm pkg install openssl
rvm reinstall 2.1.2
匿名 #2 · 2012年05月17日

找到你服务器上的证书, 加上这个就好了

{:client_options => {:ssl => {:ca_path => "/etc/ssl/certs"}}}

开发环境的话

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

@Guest @huacnlee 我想问下,我没有部署到服务器上,就是自己在本地用 omniauth-github,callback 的时候就发生这种问题,应该怎么办啊?

匿名 #4 · 2012年07月24日

#3 楼 @superbatironmans5 看你楼上

你好,我也在做相似的事情,但是在获取 sina 微博的 token 时,在最后一步跳转到回调地址时,拿不到 code 值, 能交流一下您是怎么拿到的么

#1 楼 @huacnlee

ubuntu 14.04
rvm 1.25
ruby 2.1.3

rvm pkg install openssl
rvm reinstall 2.1.3

还是不行. OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server hello A: sslv3 alert handshake failure): 我是使用 rest-client 发送 send-cloud 邮件的时候遇到的. 网上多种方式试了都无效.

我也遇到这个问题 各位解决了么

https://github.com/google/google-api-ruby-client/issues/235 在这里找到了类似的问题,用@dblommesteijn 的方法可行。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册