我在做迈克尔·哈特尔的教程。当我试图在我的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


当前回答

windows用户

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

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

其他回答

RubyGems(命令行工具)的特殊情况是,它需要在其代码中捆绑信任证书,即使在基本操作系统无法验证服务器的身份时,信任证书也允许RubyGems与服务器建立连接。

直到几个月前,这个证书都是由一个CA提供的,但是更新的证书是由另一个CA提供的。

因此,现有的RubyGems安装必须在证书切换之前进行更新,并留出足够的时间让更改传播(以及人们进行更新)。

任何人都可以通过下面链接中给出的简单步骤找到自己的解决方案

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

尝试使用宝石的源网站,如rubygems.org。使用http而不是https。这种方法不涉及任何工作,如安装证书和所有的。

的例子,

gem install typhoeus --source http://rubygems.org

这是可行的,但有一个警告。

gem已经安装,但是文档没有安装,因为存在证书错误。这是我得到的错误

Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull 
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0 
state=SSLv3 read server certificate B: certificate verify failed 
(https://rubygems.org/latest_specs.4.8.gz)

作为一名Windows 10用户,我遵循了Dheerendra的答案,有一天它对我起了作用。第二天,我又遇到了这个问题,他的修复不起作用。对我来说,修复是更新捆绑器:

Gem更新绑定器

我相信我的bundler版本是几个月前的。

对于Windows,我使用了https://gist.github.com/fnichol/867550。 我不得不手动下载“cacert”。pem”文件。(请访问https://curl.se/docs/caextract.html。) 把它放在任何不会被删除的文件夹中。

确保你把它添加到你的系统环境变量!!

我通过控制面板(选择用户帐户)做到了这一点(在Windows 10中),其中有一个选项“更改我的环境变量”。创建一个新变量,并将值设置为路径和文件名!

var name    SSL_CERT_FILE

var value   C:\{your_dir}\cacert.pem

这将确保它保持可见/可用的每次你需要它(即,每一个命令窗口,你打开)!

对于RVM和OSX用户

确保你使用最新的rvm:

rvm get stable

然后你可以做两件事:

更新的证书: RVM osx-ssl-certs更新全部 rubygems更新: RVM rubygems最新版本


用于非RVM用户

查找证书路径:

cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

生成证书:

security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"

整个代码:https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs


非操作程序

确保更新包ca-certificates。(在旧系统上它可能不可用——不要使用一个不再接收安全更新的旧系统)

Windows注意

windows的Ruby安装程序是由Luis Lavena准备的,证书的路径将显示类似C:/Users/Luis/…查看https://github.com/oneclick/rubyinstaller/issues/249了解更多详细信息,这个答案是https://stackoverflow.com/a/27298259/497756。