我使用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'
请建议. .
我试着用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
只是因为对我有用的说明略有不同,我想我补充一下我的意见:
我在OS X Lion和使用macports和rvm
我安装了curl-ca-bundle:
sudo port install curl-ca-bundle
然后我调整了我的omniauth配置如下:
Rails.application.config.middleware.use OmniAuth::Builder do
provider :google_oauth2, APP_CONFIG['CONSUMER_KEY'], APP_CONFIG['CONSUMER_SECRET'],
:scope => 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.profile',
:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
end
如果你在OS X上使用RVM,你可能需要运行这个:
rvm osx-ssl-certs update all
更多信息请访问:http://rvm.io/support/fixing-broken-ssl-certificates
完整的解释如下:https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md
更新
在Ruby 2.2上,你可能需要从源代码重新安装Ruby来解决这个问题。以下是如何(将2.2.3替换为Ruby版本):
rvm reinstall 2.2.3 --disable-binary
感谢https://stackoverflow.com/a/32363597/4353和伊恩·康纳。