Ошибка SSL при использовании Koala с Devise & OmniAuth в приложении Rails 3 - PullRequest
6 голосов
/ 25 мая 2011

Я создаю приложение Rails 3, используя Devise / OmniAuth и Koala, и получаю следующую ошибку 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")

Я использую Devise с OmniAuth для выполнения аутентификации, которая работает.Затем я беру возвращенный токен 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.Я не могу найти никаких указаний о том, как это сделать в документации, хотя.Любые идеи о том, как это сделать, или как избежать ошибки в целом?

Моя среда разработки OSX.

Ответы [ 3 ]

5 голосов
/ 25 октября 2011

Из репо Коала https://github.com/arsduo/koala

Вы можете установить это в инициализаторе Koala, который установит эту опцию глобально

/ конфигурации / Инициализаторы / koala.rb

Koala.http_service.http_options = {
  :ssl => { :ca_path => "/etc/ssl/certs" }
}
1 голос
/ 25 августа 2011

Как я обнаружил в этой теме , вы можете установить свои параметры в файле среды (или в классе, где вы используете гем) следующую опцию:

Koala.http_service.ca_file = '/path/to/some/ca-certificate.crt'
0 голосов
/ 05 ноября 2012

Мне показалось полезным это решение: поместите его в файл конфигурации вашей среды

(Koala :: HTTPService.http_options [: ssl] || = {}) [: ca_path] = '/ path/ to / ca / ​​folder '(Koala :: HTTPService.http_options [: ssl] || = {}) [: ca_file] =' / path / to / ca / ​​file '

вы можетечтобы получить путь, введите

openssl version -a

и извлеките путь из результата

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

...