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

时间:2016-10-11 16:59:37

标签: ruby ssl rubygems ssl-certificate

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

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

2 个答案:

答案 0 :(得分:1)

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

有许多方法可以更新证书以使rubygems正常工作。快速谷歌搜索给了我这两个链接:

对于开发中的一些内容,我会说关闭SSL进行测试是件好事,但对于rubygems,你实际上是在下载代码,而这些代码将会在你的计算机上运行,​​所以它会让我感到不舒服,特别是当它不应该太难修复时。

答案 1 :(得分:0)

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

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

How to solve "certificate verify failed" on Windows?

这个解决了我的问题。谢谢你们

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

此外,我之前运行的是rubygems 2.4.something,但根据https://gist.github.com/luislavena/f064211759ee0f806c88上的说明降级为2.2.3

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