我在做迈克尔·哈特尔的教程。当我试图在我的gemset中安装rails 3.2.14时,我得到以下问题:

$ gem install rails -v 3.2.14 错误:无法找到一个有效的宝石'rails'(= 3.2.14),这是为什么: 无法从https://rubygems.org/下载数据- SSL_connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败(https://s3.amazonaws.com/production.s3.rubygems.org/specs.4.8.gz)

在谷歌搜索之后,我发现我可以使用rubygems的非ssl源代码,所以我运行:

sudo gem sources -a http://rubygems.org

然后,当我再次尝试安装rails时,它成功了。然而,我仍然有上面的问题,但作为一个警告:

警告:无法从'https://rubygems.org/': SSL_connect returned=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败(https://s3.amazonaws.com/production.s3.rubygems.org/specs.4.8.gz)

如何完全删除此警告/错误?

我正在使用以下:

rvm 1.22.15 Ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.3.0] OSX 10.8.5


当前回答

在我的例子中,Ubuntu CA证书过期了。我通过运行:

 sudo update-ca-certificates

其他回答

windows用户

转到链接 http://rubygems.org/pages/download

下载最新的zip文件(在我的例子中是2.4.5) 解压缩它 运行“ruby setup”。Rb "在解压缩文件夹 现在运行gem install命令

在Windows上,您必须使用HTTP源更新gem,然后更改回使用HTTPS。

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/

编辑:警告我不确定这是否安全。有人知道ruby包是签名的吗?公认的答案似乎是一个更好的解决方案。

适用于Windows用户(或其他用户)

Rubygems.org有一个指南,不仅解释了如何解决这个问题,而且还解释了为什么这么多人有这个问题:SSL证书更新 出现问题的原因是rubygems.org切换到更安全的SSL证书(使用256位加密的SHA-2)。rubygems命令行工具将引用绑定到正确的证书。因此,rubygems本身不能使用旧版本的rubygems进行更新。Rubygems必须首先手动更新。

首先找出你有什么红宝石:

rubygems –v

这取决于你是否有1.8。2.0 x。X或2.2。x,您将需要下载一个名为“rubygems-update-X.Y.Z”的更新gem。,其中X.Y.Z是您需要的版本。 1.8运行。X:下载:https://github.com/rubygems/rubygems/releases/tag/v1.8.30 2.0运行。X:下载:https://github.com/rubygems/rubygems/releases/tag/v2.0.15 2.2运行。X:下载:https://github.com/rubygems/rubygems/releases/tag/v2.2.3

安装更新gem:

gem install –-local full_path_to_the_gem_file

运行update gem:

update_rubygems --no-ri --no-rdoc

检查rubygems是否更新:

rubygems –v

卸载更新gem:

gem uninstall rubygems-update -x

在这一点上,你可能没问题。但是,您可能没有新证书的最新公钥文件。这样做:

下载最新的证书(当前为AddTrustExternalCARoot-2048.pem) 从https://rubygems.org/pages/download。 所有的证书也位于:https://github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs

找出把它放在哪里:

gem which rubygems

将这个文件放在这个位置的“rubygems\ssl_certs”目录中。

根据rubygems提交,证书被移动到更特定的目录。因此,目前证书(AddTrustExternalCARoot-2048.pem)预计位于以下路径lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

我有同样的问题,而试图安装黄瓜宝石。然而,我注意到捆绑宝石已经安装在ruby 2.0。 我创建了一个Gemfile。Rb项目文件夹和所需的宝石,并遵循以下步骤

导航到项目文件夹 类型包安装

所有需要的宝石安装。

最新发现……

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

最重要的是……下载 https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem

想想该把它放在哪里

C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

然后复制../2.1.0/rubygems/ssl_certs/中的.pem文件,然后继续您的工作。