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


当前回答

对于Illumos / Solaris使用OpenCSW pkgutil:

在“gem Install”之前安装cswcacercertificates

pkgutil -yi CSWcacertificates

如果您使用的ruby套件不是来自OpenCSW,那么您的ruby版本可能希望在另一个地方找到证书文件。在本例中,我只是符号链接了OpenCSW的/etc/opt/csw/ssl/cert.Pem到预期的位置。

看看ruby希望在哪里找到它:

export cf=`ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE'` && echo $cf

然后,如果有差异,链接它:

ln -s /etc/opt/csw/ssl/cert.pem $cf && file $cf

其他回答

Windows用户:

在一台可以访问internet的测试机器上成功安装Ruby 2.2.3 (+ rubygems 2.5.1)后,当我在网络内的生产机器上安装bundler时,我遇到了这个SSL错误。

由于我有网络访问限制,并且没有办法更改SSL访问的设置,并且根据错误消息,我执行了以下步骤,以便能够完成绑定器的安装 (这可能听起来很疯狂,但它确实有效……)

通过一台不受限制地上网的机器,下载了以下文件:

spec.4.8.gz (http://rubygems.global.ssl.fastly.net/spec.4.8.gz) latest_specs.4.8.gz (http://rubygems.global.ssl.fastly.net/latest_specs.4.8.gz) bundler-1.11.2.gemspec。rz (http://rubygems.global.ssl.fastly.net/quick/Marshal.4.8/bundler-1.11.2.gemspec.rz) bundler-1.11.2。宝石(http://rubygems.global.ssl.fastly.net/gems/bundler-1.11.2.gem)

我在内网服务器上添加了这些文件,保留了上面链接的文件夹结构:

INTRANET_HOME美元

Spec.4.8.gz e latest_specs.4.8.gz

美元快速INTRANET_HOME \ \ Marshal.4.8

bundler-1.11.2.gemspec.rz

元INTRANET_HOME \宝石

bundler-1.11.2.gem

然后我添加了我的内部网来访问gem源代码:

gem sources -a http://mydomain.com.br

我已经成功运行了“gem安装绑定器”安装后,它所需要的只是删除我的内部网的gem:

gem sources -r http://mydomain.com.br

我希望这是有用的在任何类似的情况....

这个答案不再有效。因为我现在遇到了旧Windows ruby的问题。我会把答案贴出来:

当我想安装一个activesupport gem时:

gem in activesupport --version 5.1.6

ERROR:  Could not find a valid gem 'activesupport' (= 5.1.6), here is why:
          Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B
: certificate verify failed (https://api.rubygems.org/specs.4.8.gz)

下面的步骤只需要从较新的windows ruby中复制证书。 使用最新的ruby(或至少ruby 2.4.0)并执行以下操作:

从这些目录复制证书(根据您的需要进行调整): C: \ prg_sdk \红宝石\ ruby - 2.4 \ lib \ ruby \测试盒框\ rubygems \ ssl_certs \ rubygems.org C: \ prg_sdk \红宝石\ ruby - 2.4 \ lib \ ruby \测试盒框\ rubygems \ ssl_certs \ index.rubygems.org

到达目的地(再次根据需要调整): C: \ prg_sdk \红宝石\ Ruby231-p112-x64 \ lib \ ruby \ tripwire \ rubygems \ ssl_certs

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

Gem更新绑定器

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

运行gem update——系统为我工作

Try

gem update --system

希望这能解决问题。