我使用Authlogic-Connect第三方登录。在运行适当的迁移后,Twitter/谷歌/yahoo登录似乎工作正常,但facebook登录抛出异常:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

开发日志显示

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
  app/controllers/users_controller.rb:37:in `update'

请建议. .


当前回答

以下是如何在Windows上修复它:https://gist.github.com/867550(由Fletcher Nichol创建)

摘录:

手工方式(无聊) 下载cacert。来自http://curl.haxx.se/ca/cacert.pem的Pem文件。将文件保存到C:\RailsInstaller\cacert.pem。 现在,通过设置SSL_CERT_FILE,让ruby知道您的证书颁发机构包。要在当前命令提示符会话中设置此选项,输入: 设置SSL_CERT_FILE = C: \ RailsInstaller \ cacert.pem 要使此设置为永久设置,请在控制面板中添加此设置。

其他回答

如果你在/usr/local/etc/openssl中有一个指向cert.pem的符号链接,尝试这样做:

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" (should be /usr/local/etc/openssl)
cd /usr/local/etc/openssl
wget http://curl.haxx.se/ca/cacert.pem
ln -s cacert.pem 77ee3751.0 (77ee3751.0 is my symbolic link, should depend on the openssl version)

下面是用于调试的另一个选项。

请确保永远不要在任何生产环境中使用它,因为它首先就会抵消使用SSL的好处。只有在您的本地开发环境中才可以这样做。

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

只需运行certification -update可执行文件,该命令将确保您的所有证书都是最新的。

这适用于我在Windows中的Ruby on Rails应用程序。

最新的rubygem-update-2.6.7已经解决了这个问题。http://guides.rubygems.org/ssl-certificate-update/

添加gem 'certified', '~> 1.0'到我的Gemfile和运行bundle解决了我的这个问题。