我使用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'

请建议. .


当前回答

在最新macport的Mac OS X Lion上:

sudo port install curl-ca-bundle  
export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt  

然后,重新运行失败的作业。

注意,自从Eric G在5月12日回答后,证书文件的位置似乎发生了变化。

其他回答

你在OSX上得到这个错误的原因是rvm安装的ruby。

如果你在OSX上遇到这个问题,你可以在这篇博客文章中找到一个真正广泛的解释:

http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

简而言之,对于某些版本的Ruby, RVM会下载预编译的二进制文件,这会在错误的位置查找证书。通过强制RVM下载源代码并在您自己的机器上编译,可以确保证书位置的配置是正确的。

这样做的命令是:

rvm install 2.2.0 --disable-binary

如果您已经有问题的版本,您可以重新安装它:

rvm reinstall 2.2.0 --disable-binary

(显然,根据需要替换ruby版本)。

我通过在终端中运行这个解决了这个问题。完整的记录可以在这里找到

rvm install 2.2.0 --disable-binary

如果你在/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)

我不得不重新安装Ruby。如果你使用Ubuntu & rbenv,这应该可以解决这个问题:

rbenv uninstall your_version

# install dependencies
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

# install ruby with patch
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | \
  rbenv install --patch your_version

有关更多信息,请查看rbenv Wiki。

一行程序在Admin提示符中修复了Windows的问题

巧克力安装wget(第一次见chocolatey.org)

wget http://curl.haxx.se/ca/cacert.pem -O C:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem"

或者这样做:

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/

Milanio的方法:

gem sources -r https://rubygems.org
gem sources -a http://rubygems.org 
gem update --system
gem sources -r http://rubygems.org
gem sources -a https://rubygems.org

gem install [NAME_OF_GEM]