46

(参考: 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

私のコードには実際には何もありません。私が持っているのは、to_yaml を使用して request.env の内容を確認したい sessionController だけです。

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

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

4

9 に答える 9

63

この解決策を使用して、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
于 2012-06-14T20:55:30.057 に答える
29

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

Windows の修正: https://gist.github.com/867550

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 で実行する場合は、代わりに ca_path 属性をデフォルトの証明書の場所 /etc/ssl/certs で設定する必要があることに注意してください。

最終的に、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('/')
于 2012-06-03T16:45:04.203 に答える
21

アンドレイの答えは、Mac OSX 10.8.3 ではうまくいきませんでした。しばらく前にopensslを再インストールしてruby 2.0をインストールしましたが、それ以来、常にこのエラーが発生しました。RailsプロジェクトからのAndreiの回答と指示のおかげで修正しました。

私は走った:

$ 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

その後、問題は修正されました。同じ問題に遭遇した他の誰かを助けることを願っています。

于 2013-04-15T09:25:43.720 に答える
3

代替ソリューション:

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

私は同じ問題を抱えていますが、この質問で与えられた答えでは解決できません。ところで、最終的に、次のURLで問題が解決しました

ruby on rails の Facebook リダイレクト URL を開く ssl エラー https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates

于 2012-11-12T15:50:59.867 に答える
1

Windows 7 の場合: 上記の Neil Hoff のソリューション リンク (Windows の修正: 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 コマンド ラインに curl がない場合は、http: //www.confusedbycode.com/curl/#downloadsから入手してください。

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

ダン。

于 2015-05-07T21:05:28.550 に答える
0

認定宝石をご覧ください。説明:

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

于 2014-01-10T10:36:23.673 に答える
0

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

于 2012-07-09T04:55:01.427 に答える