2012-09-24 90 views
2

我的環境,的OpenSSL :: SSL :: SSLError所以SSL_connect返回= 1個錯誤號= 0狀態= SSLv3的讀取服務器證書B:證書驗證失敗

% 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 <[email protected]>, Michal Papis <[email protected]> [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) 

我該如何解決這個問題?

在此先感謝。

回答

6

如果使用BREW和RVM,使用以下命令:

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

非常感謝!!!我可以用這個解決方案解決我的問題。 –

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一面。祝你好運!

+0

感謝您的重複。 %openssl verify -CAfile cacert.pem cert.pem cert.pem:好吧 和我試過第二個命令,但我不明白「testclient.key」在哪裏。 –

2

有一堆的解決方案,可能爲你工作在這裏:

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

如果還不行工作,拉胡爾的答案几乎爲我工作,除了我不得不強制在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 

希望這會有幫助, Vincent

相關問題