我的环境,
% 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)
我该如何解决这个问题?
提前致谢。
答案 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
对不起,我无法帮助解决你问题的一般情况。祝你好运!