在 Rails 3 应用程序中使用 Koala with Devise & OmniAuth 时出现 SSL 错误



我正在使用Devise/OmniAuth构建一个Rails 3应用程序,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来执行身份验证,这很有效。然后,我拿着返回的脸书代币,并尝试将其与考拉一起使用,如上所示。这就是导致这个错误的原因。

可能值得注意的是,我在Devise&OmniAuth最初。有几个关于这个错误的主题,我能够解决它,通过设置我的config/initializers/device.rb,

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

我猜我需要为Koala提供类似的配置,以便它知道在哪里检索本地ca_file。不过,我在文档中找不到任何关于如何做到这一点的指示。关于如何做到这一点,或者如何避免一般错误,有什么想法吗?

我的开发环境是OSX。

来自考拉回购https://github.com/arsduo/koala

您可以在Koala初始化器中设置此项,该初始化器将全局设置此选项

/config/initializers/coala.rb

Koala.http_service.http_options = {
  :ssl => { :ca_path => "/etc/ssl/certs" }
}

正如我在这个线程上发现的那样,您可以在环境文件中(或在使用gem的类中)设置以下选项:

Koala.http_service.ca_file = '/path/to/some/ca-certificate.crt'

我发现这个解决方案很有用:把它放在你的环境配置文件中

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

你可以通过键入来获得路径

openssl版本-

并从结果中提取路径

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

相关内容

  • 没有找到相关文章

最新更新