6

Devise/OmniAuth と Koala を使用して Rails 3 アプリを構築していますが、次の SSL エラーが発生します。

OpenSSL::SSL::SSLError in Users/omniauth callbacksController#facebook
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

このエラーの原因となるコードは次のとおりです。

@graph = Koala::Facebook::GraphAPI.new(@token)
@friends = @graph.get_connections("me", "friends")

OmniAuth で Devise を使用して認証を実行していますが、これは機能します。次に、返された facebook トークンを取得し、上記のように Koala で使用しようとします。それがこのエラーの原因です。

Devise & OmniAuth で最初に同じエラーが発生したことは、おそらく注目に値します。このエラーに関するトピックがいくつかありますが、config/initialisers/devise.rb を次のように設定することで解決できました。

config.omniauth :facebook, APPID, APPKEY, {:client_options => {:ssl => {:ca_file =>  "/opt/local/share/curl/curl-ca-bundle.crt"}}} 

ローカルの ca_file を取得する場所を認識できるように、Koala に同様の構成を提供する必要があると推測しています。ただし、ドキュメントでその方法を示すものは見つかりません。これを行う方法、または一般的にエラーを回避する方法についてのアイデアはありますか?

私の開発環境はOSXです。

4

3 に答える 3

5

Koala リポジトリからhttps://github.com/arsduo/koala

これは、このオプションをグローバルに設定する Koala イニシャライザーで設定できます。

/config/initializers/koala.rb

Koala.http_service.http_options = {
  :ssl => { :ca_path => "/etc/ssl/certs" }
}
于 2011-10-24T20:34:18.127 に答える
1

このスレッドで見つけたように、環境ファイル (または宝石を使用しているクラス) で次のオプションを設定できます。

Koala.http_service.ca_file = '/path/to/some/ca-certificate.crt'
于 2011-08-24T21:32:37.310 に答える
0

私はこの解決策が役に立ちました:これを環境設定ファイルに入れてください

(コアラ::HTTPService.http_options[:ssl] ||= {})[:ca_path] = '/path/to/ca/folder' (コアラ::HTTPService.http_options[:ssl] ||= {})[ :ca_file] = '/パス/to/ca/ファイル'

入力することでパスを取得できます

openssl バージョン -a

結果からパスを抽出する

ソース:
https://github.com/arsduo/koala/issues/130
https://github.com/technoweenie/faraday/wiki/Setting-up-SSL-certificates

于 2012-11-05T09:58:50.713 に答える