web-dev-qa-db-ja.com

Omniauth Facebookエラー-Faraday :: Error :: ConnectionFailed

(参考:railscast#241のTwitter Omniauthをフォローしています。Twitterを正常に使用し、現在Facebookにアクセスしています)

Omniauthを使用してFacebookにログインするとすぐに、次のエラーが表示されます。

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

実際には私のコードにはあまり何もありません、私が持っているのは、request.envの中にあるものを見るためにto_yamlを使用したいsessionControllerです

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

ファラデーエラーを解決するにはどうすればよいですか?

45
user1372829

Ruby=信頼するルート証明書が見つからないため、このエラーが発生しています。

Windowsの修正: https://Gist.github.com/86755

Apple/Linuxの修正: http://martinottenwaelter.fr/2010/12/Ruby19-and-the-ssl-error/ <-このサイトは現在ダウンしています。

上記のサイトによるApple/Linuxの修正は次のとおりです:

解決策は、Firefoxで使用されるのと同じルート証明書を含むcurl-ca-bundleポートをインストールすることです。

Sudo port install curl-ca-bundle

httpsオブジェクトに使用するように指示します。

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

コードをUbuntuで実行する場合は、代わりにデフォルトの証明書の場所/ etc/ssl/certsを使用してca_path属性を設定する必要があります。

最終的に、それが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('/')
29
Neil Hoff

このソリューションを使用して、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
63

Andreiの答えは、Mac OSX 10.8.3ではうまくいきませんでした。 Opensslを再インストールしてRuby 2.0をインストールしてから、常にこのエラーが発生しました。Andreiの回答と 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

その後、問題は修正されました。同じ問題に出くわした他の人を助けることを願っています。

21
jtblin

これは私のために働いた(Mac OS Xで):

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

代替ソリューション:

[Ruby and Ruby on Rails]を手動でインストールするWin7ユーザーです。

私は同じ問題を抱えていますが、この質問の答えでは解決できません。ちなみに、最後に、私は次のURLによって問題を解決しました

FacebookリダイレクトURL Ruby on Rails open ssl errorhttps://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates

3
scalopus

Windows 7の場合:上記のNeil Hoffのソリューションリンク(Windows用の修正: https://Gist.github.com/86755 )は、私にとっては機能しませんでした。

動作するものは次のとおりです。

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のコマンドラインにcurlがない場合は、こちらから入手してください。 http://www.confusedbycode.com/curl/#downloads

元のソリューションはここから-クレジット: https://github.com/chef/chef-dk/issues/106

ダン.

1
Dung

Andreiの答えは私のために働いたが、Ruby 1.9.3をインストールしようとすると巨大な障害に遭遇した。 Xcodeの設定を開き、[ダウンロード]タブからコマンドラインツールをインストールするまで。

0
sean_j_roberts

認証済み gemをご覧ください。説明:

Net/httpsがOpenSSL :: SSL :: VERIFY_PEERを使用してSSL証明書を確認し、OpenSSLが見つからない場合に証明書バンドルを提供するようにします

0
phil pirozhkov