在一个新的安装一个旧的windows ruby二进制文件,我有一个错误,我不知道如何得到周围
环境:
- windows 10
- ruby 2.3.3p222(2016 - 11 - 21修订版本56859)[i386-mingw32](32位版本)
- 开发套件-开发套件-明w64 - 32 - 4.7.2 - 2013年0224 - 1151-sfx
PS C:\Users\ALilland> gem install bundler --verbose
HEAD http://api.rubygems.org/api/v1/dependencies
200 OK
GET http://api.rubygems.org/api/v1/dependencies?gems=bundler
301 Moved Permanently
ERROR: While executing gem ... (Gem::RemoteFetcher::FetchError)
SSL_connect returned=1 errno=0 state=error: certificate verify failed (https://api.rubygems.org/api/v1/dependencies)
我已经使用这个ruby版本将近8年了,在安装的时候从来没有遇到过这个问题,有什么想法可以解决这个问题吗?
我已经弄乱了机器上的代理设置,并且我现在不认为这是问题所在
在我的mac上,我安装了一个带有rvm的旧ruby 2.4.1
,我可以看到它成功地解析为另一个URI
$ gem install bundler -v 2.3.26 --verbose
HEAD https://rubygems.org/api/v1/dependencies
200 OK
GET https://rubygems.org/api/v1/dependencies?gems=bundler
200 OK
Downloading gem bundler-2.3.26.gem
GET https://rubygems.org/gems/bundler-2.3.26.gem
Fetching bundler-2.3.26.gem
200 OK
...
1条答案
按热度按时间aurhwmvo1#
问题是SSL证书无法验证,这在Bundler documentation:
为什么我看到证书验证失败?
如果您在尝试从RubyGems提取更新时看到以下SSL错误:开放SSL::SSL::SSL错误:SSL_connect返回=1错误号=0状态= SSLv 3读取服务器证书B:证书验证失败
当您的计算机缺少验证www.example.com背后的服务器是否正确所需的文件时,会发生此错误RubyGems.org。
RubyGems的最新版本应该可以解决这个问题,所以我们建议更新到当前版本。要让RubyGems更新到最新版本,请运行gem update --system。如果不起作用,请尝试下面的手动更新过程。
(What我们的意思是更新“应该修复这个问题”吗?2回顾一下下面的这些证书是什么?3和Ruby如何使用CA证书部分来更好地理解潜在的问题。
Ruby如何使用CA证书
www.example.com使用的SSL证书RubyGems.org从新的根证书派生而来的。Ruby(因此RubyGems和Bundler)在联系网站时没有定期更新的CA包。(OS)。在较旧的OS上,此CA捆绑包可能非常旧-大约有十年之久。由于这么旧的CA捆绑包无法验证(new-ish)证书,您可能会看到问题中的错误:证书验证失败。
更复杂的是,18-24个月前的一个不相关的变化导致RubyGems.org发布了一个新的SSL证书。这意味着需要验证连接的“根”证书发生了变化。因此,即使你以前升级过RubyGems/Bundler来修复SSL问题,你也需要再次升级--这次是一个更新的版本,使用更新的证书。
文档中提供了一些高级故障排除步骤,我不打算在此重复,因为它们可能会更改,您应该始终参考最新的说明。
不过,我可以非常宽泛地说:
1.您正在使用的Ruby版本已过期,将不会收到进一步的更新(包括安全更新
1.您使用的Ruby版本可能无法正常工作,即使执行了故障排除步骤也是如此
1.最安全的解决方案可能是升级到Ruby的现代版本
如果以上步骤都无法执行,请考虑使用
:ssl_verify_mode: 0
in.gemrc
。这应该是最后的措施,因为它完全禁用SSL证书验证。