当我在Centos 5.5上为我的Rails 3项目运行捆绑安装时,它失败了,出现了一个错误:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.

当我尝试手动安装gem(通过gem install multi_json -v '1.3.2')它工作。同样的问题也发生在其他宝石上。我使用RVM (1.12.3), ruby 1.9.2, bundle 1.1.3。

如何解决?


当前回答

最简单的解决方案:

rvm pkg install openssl
rvm reinstall all --force

拖鞋!

其他回答

在Ubuntu 12.04上,我得到了一个稍微不同的错误,尽管可能相关:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.

当我在Gemfile中使用源文件“https://rubygems.org”运行bundle install时,就会发生这种情况。

这是Ubuntu 12.04上OpenSSL的一个问题。参见Rubygems第319期。

要解决这个问题,请在Ubuntu 12.04上运行apt-get update && apt-get upgrade来升级您的OpenSSL。

将ssl gem源替换为非ssl作为临时解决方案:

宝石来源-r https://rubygems.org/ 宝石来源- http://rubygems.org/

我能够追踪到rvm下载的二进制文件在OS X的OpenSSL中不能很好地发挥作用,这是旧的,不再被OS使用。

我的解决方案是在通过rvm安装Ruby时强制编译:

rvm reinstall --disable-binary 2.2

我对Windows的永久修复:

下载CACert,保存为C:\ruby\ssl_certs\GlobalSignRootCA。Pem来自http://guides.rubygems.org/ssl-certificate-update/ 创建名为“SSL_CERT_FILE”的系统变量,设置为C:\ruby\ssl_certs\GlobalSignRootCA.pem。 重试:gem安装bundle:

C: \宝石来源 ***当前来源*** https://rubygems.org/ C:\gem安装捆绑器 抓取:bundler-1.13.5。宝石(100%) 成功安装bundle -1.13.5 安装1个宝石

如果你使用RVM,这个问题的真正解决方案是:

Update rubygems: gem Update——system RVM osx-ssl-certs update all .使用RVM方式刷新SSL certs

向RailsApps项目的这个技巧致敬!