OpenSSL :: SSL :: SSLError SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书验证失败

时间:2012-09-24 09:59:22

标签: ruby-on-rails curl openssl omniauth homebrew

我的环境,

% openssl version
OpenSSL 0.9.8r 8 Feb 2011
% curl --version
curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz
% rails -v
Rails 3.0.3
% ruby -v
ruby 1.9.2p320 (2012-04-20 revision 35421) [x86_64-darwin12.2.0]
% rvm --version
rvm 1.15.0 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

omniauth version is '0.2.6'

然后我通过facebook使用omniauth登录并收到以下错误。

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

我试图解决这个问题。

在〜/ .zshrc中添加一行

 export CURL_CA_BUNDLE='/System/Library/OpenSSL/certs/cert.pem'

我正在使用自制软件。和curl-config --ca显示空行。

 % curl-config --ca 
 (empty output)

我该如何解决这个问题?

提前致谢。

3 个答案:

答案 0 :(得分:6)

如果您使用brew和rvm,请使用以下内容:

rvm remove 1.9.3
brew install openssl
rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl`

答案 1 :(得分:2)

这里有一堆可能对您有用的解决方案:

http://railsapps.github.com/openssl-certificate-verify-failed.html

如果它仍然不起作用,Rahul的答案几乎对我有用,除了我必须强制下载rvm SSL文件夹中的证书:

rvm pkg install openssl
rvm install 1.9.3-p374 –with-openssl-dir=$rvm_path/usr
cd $rvm_path/usr/ssl
curl -O http://curl.haxx.se/ca/cacert.pem
mv cacert.pem cert.pem

希望这有帮助, 文森特

答案 2 :(得分:1)

两件可能有帮助的事情。首先,您可以在命令行中使用openssl来测试您的证书是否正确链接在一起。例如:

openssl verify -CAfile your-bundle.crt your.crt

这可能涉及将Facebook的公钥添加到您的捆绑包中,但如果没有您正在使用的证书的更多详细信息,很难说。其次,您在导出CURL_CA_BUNDLE时走的是正确的道路。一旦链正确,那么另一个选择是使用curl和一些命令行选项。例如:

curl --verbose --head https://example.com:443/ --cert ./testclient.crt --key testclient.key --cacert test-bundle.crt

对不起,我无法帮助解决你问题的一般情况。祝你好运!