当我在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。

如何解决?


当前回答

这个问题已经解决了

http://guides.rubygems.org/ssl-certificate-update/

现在是RubyGems 2.6。X已经发布,您可以手动更新到此版本。

下载https://rubygems.org/downloads/rubygems-update-2.6.7.gem

请将该文件下载到您稍后可以指向的目录中(例如。你的硬盘根目录C:)

现在,使用命令提示符:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

在此之后,gem——version应该报告新的更新版本。

您现在可以安全地卸载rubygems-update gem:

C:\>gem uninstall rubygems-update -x

其他回答

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

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

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

更新

现在我已经从这个答案中得到了足够的报应,每个人都应该知道这应该被解决。

re:通过Ownatik再次捆绑安装失败,SSL证书验证错误

gem update --system

我的答案仍然是正确的,如果最终不适合你,请参考下面的答案。


老实说,最好的临时解决办法就是

[…在你的gemfile中使用非ssl版本的rubygems作为临时的解决方案。

通过用户Ownatik

它们的意思是在Gemfile的顶部在您的rails应用程序目录更改

源“https://rubygems.org”

to

源“http://rubygems.org”

注意,第二个版本是HTTP而不是HTTPS

我不得不重新安装openssl:

brew uninstall --force openssl
brew install openssl

您可以从curl的网站http://curl.haxx.se/ca/cacert.pem下载CA证书列表

然后设置SSL_CERT_FILE环境变量,告诉Ruby使用它。例如,在Linux中:

$ SSL_CERT_FILE=~/cacert.pem bundle install

(参考:https://gist.github.com/fnichol/867550)

我对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个宝石