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

如何解决?


当前回答

如果你在mac上使用最新版本的RVM(~1.20),下面的命令适合我。

rvm osx-ssl-certs update

其他回答

在windows7上可以下载cacert。将环境变量SSL_CERT_FILE设置为您存储证书的路径

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

或者你可以在脚本中这样设置变量ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

将<username>替换为您自己的用户名。

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

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

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

我得到了一个类似的错误。下面是我解决这个问题的方法:在您的路径目录中,检查Gemfile。将gemfile中的源文件编辑为http而不是https并保存它。这可能会在没有SSL证书颁发的情况下安装捆绑程序

您可以从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)

如果你使用的是rails资产

如果您使用https://rails-assets.org/来管理您的资产,没有答案可以帮助您。即使转换为http也无济于事。

最简单的解决方法是使用这个源代码http://insecure.rails-assets.org。他们的主页上已经提到了这一点。