我使用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'
请建议. .
你在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版本)。
我试着用brew安装curl-ca-bundle,但这个包已经没有可用的了:
$ brew install curl-ca-bundle
Error: No available formula for curl-ca-bundle
Searching formulae...
Searching taps...
对我来说,Mac上的解决方案是:
$ cd /usr/local/etc/openssl/certs/
$ sudo curl -O http://curl.haxx.se/ca/cacert.pem
在~/中添加这一行。Bash_profile(或~/.)ZSHRC for zsh):
export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
然后更新你的终端:
$ source ~/.bash_profile