2

我的环境,

% 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'

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

 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)

我怎么解决这个问题?

提前致谢。

4

3 回答 3

6

如果您使用 brew 和 rvm,请使用以下命令:

rvm remove 1.9.3
brew install openssl
rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl`
于 2012-12-07T18:21:34.107 回答
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

希望这会有所帮助,文森特

于 2013-02-07T08:47:14.000 回答
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

抱歉,我无法帮助您解决问题的omniauth方面。祝你好运!

于 2012-09-24T16:13:30.407 回答