我跟踪了Railscast #235,尝试设置最小的Facebook身份验证。
我首先设置了一个Twitter身份验证,就像Ryan自己做的那样。这一切工作得天衣无缝。
然后,我开始添加一个Facebook登录。但是,在授权应用程序后,重定向到/auth/facebook/callback
失败,并显示以下消息:
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed
我正在使用localhost。我没有在应用程序中设置任何SSL。我做错了什么?
发布于 2011-04-30 14:01:35
我遇到了这个问题,并尝试使用:ca_path参数,但没有成功。在浏览了Github一段时间后,我遇到了一个建议,其中提到了使用:ca_file,并直接指向认证。
Rails.application.config.middleware.use OmniAuth::Builder do
provider :facebook, 'secret_key', 'secret_key',
:client_options => {:ssl => {:ca_file => '/etc/pki/tls/certs/ca-bundle.crt'}}}
end
如果您需要获取系统认证文件(以及您使用的linux)的路径,只需从终端输入即可。这将为您提供一系列关于SSL设置的信息,包括路径(请参阅OPENSSLDIR)。您需要将certs/ca-bundle.crt添加到提供的路径中。
open-ssl version -a
发布于 2011-05-24 23:00:21
如果您要部署到Heroku,您希望指向特定的文件位置。这对我有效(在config/initializers/omniauth.rb中):
Rails.application.config.middleware.use OmniAuth::Builder do
# This cert location is only for Heroku
provider :facebook, APP_ID, APP_SECRET, {:client_options => {:ssl => {:ca_file => "/usr/lib/ssl/certs/ca-certificates.crt"}}}
end
发布于 2011-06-28 20:49:08
我用CA包解决了这个问题,它来自:http://certifie.com/ca-bundle/
在我设计的初始化器中:
:client_options => { :ssl => { :ca_file => "#{Rails.root}/config/ca-bundle.crt" } } }
https://stackoverflow.com/questions/3977303
复制相似问题