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

如何解决?


当前回答

原因是古老的红宝石。您需要先使用非ssl源更新系统部分:

Gem update——system——source http://rubygems.org/(使用非ssl连接临时更新系统部分)。

现在您已经准备好使用gem更新了。

其他回答

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

rvm osx-ssl-certs update

对我来说,在遗留的windows系统和ruby 1.9版本上唯一有效的方法是从 http://guides.rubygems.org/ssl-certificate-update/

然后在运行bundle install之前运行下面的命令

bundle config --global ssl_ca_cert /path/to/file.pem

简单的复制粘贴指令这里给出关于.pem文件

https://gist.github.com/luislavena/f064211759ee0f806c88

证书验证失败

If you've read the previous sections, you will know what this means (and shame > on you if you have not). We need to download AddTrustExternalCARoot-2048.pem. Open a Command Prompt and type in: C:>gem which rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.rb Now, let's locate that directory. From within the same window, enter the path part up to the file extension, but using backslashes instead: C:>start C:\Ruby21\lib\ruby\2.1.0\rubygems This will open a Explorer window inside the directory we indicated. Step 3: Copy new trust certificate Now, locate ssl_certs directory and copy the .pem file we obtained from previous step inside. It will be listed with other files like GeoTrustGlobalCA.pem.

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

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

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

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