Omniauth Facebook的错误 - 法拉第::错误::为connectionFailedO

2019-05-16 14:17发布

(FYI:我跟随的Twitter Omniauth从railscast#241我利用Twitter成功,现在要到脸谱)

当我登录到使用Facebook的Omniauth,我得到这个错误:

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

这是什么意思?

这是我的代码

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :facebook, '<key from fb>', '<another key from fb>'
end

实际上,有没有什么在我的代码,我只有在我想要使用to_yaml,看看有什么request.env内sessionController

class SessionsController < ApplicationController
    def create
        raise request.env["omniauth.auth"].to_yaml
    end
end

如何解决法拉第错误?

Answer 1:

您收到此错误,因为红宝石找不到根证书信任。

修复Windows版: https://gist.github.com/867550

修正了苹果/ Linux的: http://martinottenwaelter.fr/2010/12/ruby19-and-the-ssl-error/ < -这个网站现在已关闭。

这里是按照网站上面的苹果/ Linux的修复:

该解决方案是安装包含由火狐使用的相同的根证书卷曲-CA-束端口:

sudo port install curl-ca-bundle

并告诉你的HTTPS反对使用它:

https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'

请注意,如果你希望你的代码在Ubuntu上运行,你需要设置ca_path属性相反,使用默认证书位置在/ etc / SSL /证书。

最后,这就是将在Mac OS X和Ubuntu的工作:

require 'net/https'
https = Net::HTTP.new('encrypted.google.com', 443)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.ca_path = '/etc/ssl/certs' if File.exists?('/etc/ssl/certs') # Ubuntu
https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt' if File.exists('/opt/local/share/curl/curl-ca-bundle.crt') # Mac OS X
https.request_get('/')


Answer 2:

我已经与这个解决方案解决了这个问题在Mac OS X Lion的10.7.4:

$ rvm remove 1.9.3 (or whatever version of ruby you are using)
$ rvm pkg install openssl
$ rvm install 1.9.3 --with-openssl-dir=$rvm_path/usr

在此之后,您将需要下载缺少的cacert.pem文件:

$ cd $rvm_path/usr/ssl
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
$ sudo mv cacert.pem cert.pem


Answer 3:

安德烈的回答并没有为我在Mac OSX 10.8.3工作。 我已经重新安装OpenSSL的安装Ruby 2.0,前一段时间,从那时起一直得到这个错误。 我固定它感谢安德烈的回答和说明从Rails项目 。

我跑:

$ rvm -v
$ rvm get head
# Installation of latest version of rvm...
$ rvm -v
# rvm 1.19.5 (master)
$ rvm osx-ssl-certs status all
# Certificates for /usr/local/etc/openssl/cert.pem: Old.
# Certificates for /Users/mpapis/.sm/pkg/versions/openssl/0.9.8x/ssl/cert.pem: Old.
$ sudo rvm osx-ssl-certs update all
# Updating certificates...

然后我检查,如果证书是由运行正确地更新rvm osx-ssl-certs status all再次但是/usr/local/etc/openssl/cert.pem仍然没有更新。 我不知道这是否是必要的,但我做了以下内容:

$ cd /usr/local/etc/openssl/
$ curl -O http://curl.haxx.se/ca/cacert.pem
$ mv cacert.pem cert.pem

在此之后,问题得到了解决。 希望可以帮助别人谁运行到同样的问题。



Answer 4:

这个工作对我来说(在Mac OS X):

$ brew install curl-ca-bundle
$ export SSL_CERT_FILE=/usr/local/opt/curl-ca-bundle/share/ca-bundle.crt


Answer 5:

另一种解决方案:

[我Win7的用户,手动安装在导轨上的Ruby和Ruby]

我有同样的问题,但不能由被这个问题给出了答案解决。 顺便说一句,终于,我得到了问题,通过以下网址解决

Facebook的重定向URL在Ruby on Rails的开放SSL错误 https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates



Answer 6:

该RVM网站运行表明rvm osx-ssl-certs update all

RVM网站:如何解决在操作系统坏了证书。



Answer 7:

对于Windows 7:尼尔·霍夫的上述解决方案的链接(修复版: https://gist.github.com/867550 )对我没有工作。

以下是工作原理:

使用CMD.EXE:

curl -o c:\cacert.pem http://curl.haxx.se/ca/cacert.pem
set SSL_CERT_FILE=c:\cacert.pem

使用msysgit的bash:

curl -o /c/cacert.pem http://curl.haxx.se/ca/cacert.pem
export SSL_CERT_FILE=/c/cacert.pem

如果您没有在您的Windows 7卷曲命令行得到它在这里: http://www.confusedbycode.com/curl/#downloads

原来的解决方案就是从这里开始-信用: https://github.com/chef/chef-dk/issues/106

邓恩。



Answer 8:

安德烈的回答为我工作,但我试图重新安装的Ruby 1.9.3时,遇到了一个巨大的障碍。 因为我自从安装1.9.3安装的Xcode的新版本,我无法重新安装,直到我打开了Xcode的首选项,并从下载选项卡安装的命令行工具。



Answer 9:

退房认证的宝石。 描述:

确保网/ HTTPS使用的OpenSSL :: SSL :: VERIFY_PEER验证SSL证书,并提供证书捆绑的情况下,OpenSSL的不能找到一个



文章来源: Omniauth Facebook Error - Faraday::Error::ConnectionFailed