【问题标题】:How do I turn on SSL certificate verifiaction in Ruby after turning it off? What will happen if I leave it off?关闭后如何在Ruby中打开SSL证书验证?如果我关闭它会发生什么?
【发布时间】:2016-10-11 16:59:37
【问题描述】:

我正在运行 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

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

【问题讨论】:

标签: ruby ssl rubygems ssl-certificate


【解决方案1】:

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

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

对于开发中的某些事情,我会说关闭 SSL 进行测试很好,但对于 ruby​​gems,您实际上是在下载要在计算机上运行的代码,所以这样做会让我感到不舒服,尤其是当它不应该太难修复时。

【讨论】:

  • 感谢您的快速回复。我已尝试您发送的第二个链接并按照这些步骤操作,但该页面上指向新 ssl 证书的链接已损坏。我尝试在其他地方寻找新证书,但我发现的证书似乎与我在 ssl_certs 文件中已有的证书相同。
  • 您的第一个链接引导我查找 Windows 证书更新,我找到了解决方案。谢谢!
  • 很高兴你把它修好了! @Otelo 您可以发布用于解决问题的步骤。它可能会在未来帮助其他人。确保包括您的操作系统。
【解决方案2】:

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

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

How to solve "certificate verify failed" on Windows?

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

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

另外,我之前运行的是 ruby​​gems 2.4.something,但按照https://gist.github.com/luislavena/f064211759ee0f806c88 上的说明降级到 2.2.3

我想知道新证书是否适用于 ruby​​gems 2.4 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    • 2023-03-17
    • 1970-01-01
    • 2020-10-26
    • 2013-10-20
    相关资源
    最近更新 更多