在 Ruby 中关闭后如何打开 SSL 证书验证?如果我把它关掉会怎样?

How do I turn on SSL certificate verifiaction in Ruby after turning it off? What will happen if I leave it off?

我是 运行 Ruby 2.2.5 和 RubyGems 2.2.3

我是编程新手,一直在学习 RubyGems 以及如何更新它们。每当我尝试从 Rubygems 服务器执行任何操作时,我都会收到此错误:

    ERROR:  Could not find a valid gem 'rspec' (>= 0), 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/latest_specs.4.8.gz)

我注意到很多人都遇到过这个问题,并通过关闭 SSL 验证来使用解决方法。

    require 'openssl'
    OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

此解决方法有多危险,我该如何重新启用它?

使用 SSL 的关键在于您知道代码来自可信来源,并且没有人试图破解您的连接并向您发送恶意代码。虽然不太可能有人试图对您这样做,但为什么要冒险呢?

有多种方法可以更新您的证书以使 ruby​​gems 正常工作。快速 google 搜索给了我这两个链接:

对于一些开发中的东西,我会说关闭 SSL 进行测试没问题,但对于 ruby​​gems,你实际上是在下载你将要 运行 在你的计算机上的代码,所以它会让我做起来不舒服,尤其是当它不应该太难修复的时候。

根据 Josh 的回答,我已经尝试使用以下说明: https://gist.github.com/luislavena/f064211759ee0f806c88

但是他们提供的新信任证书的 link 已损坏。然而,Josh 的第一个 link 让我在 Windows 上查找 Ruby 的证书更新,最终我找到了这个 link

How to solve "certificate verify failed" on Windows?

这个解决了我的问题。谢谢大家

编辑:唯一的区别是因为我没有在 rails 上安装 ruby 我将新证书保存在 c:\ruby22\cacert.pem

此外,我之前是 运行 rubygems 2.4.something 但根据 https://gist.github.com/luislavena/f064211759ee0f806c88

上的说明降级到 2.2.3

我想知道新证书是否适用于 rubygems 的 2.4 版本。