“gem install foundation”中的证书validation失败

安装nodejs,ruby和git plus bower后尝试安装Foundation。

我一直收到以下错误,我不知道如何解决它:

无法找到有效的gem“基础”(> = 0),原因如下:无法从https://rubygems.org/下载数据 – SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书validation失败( https://api.rubygems.org/latest_specs.4.8.gz )

有任何想法吗?

试试这个(快速但不安全)

gem sources --remove https://rubygems.org/ gem sources -a http://rubygems.org/ 

注意:通过HTTP下载将是未加密的

如果你正在使用RVM (强烈推荐),你可以运行

 rvm osx-ssl-certs update all 

否则,您可以按照http://guides.rubygems.org/ssl-certificate-update/上的说明进行操作。 虽然update_rubygems补丁没有为我做任何事情,但手动安装.pem文件可能会有效。

没有RVM链接表明你可以尝试……

 gem install bundler 

要么

 gem update --system 

看看这个问题,详细解释了这个问题:

https://gist.github.com/luislavena/f064211759ee0f806c88

请阅读背景信息,并按照rubygems.org的官方指南了解如何解决此问题。

TL; DR:

  1. 下载rubygems-update-2.6.7.gem (新版本发布时链接将过时)
  2. gem install --local $USER\Downloads\rubygems-update-2.6.7.gem
    (Try %userprofile% instead of $USER if using Windows)
  3. update_rubygems --no-ri --no-rdoc
  4. gem uninstall rubygems-update -x

取自Sébastien给出的参考文献

Basicaly,您下载最新证书并将其放在$RUBYHOME/lib/ruby/2.1.0/rubygems/ssl_certs 。 (请注意,您可能安装了不同版本的rubygems而不是2.1.0 ,因此请适当调整路径)。

Rubygems应该在您下次调用gem命令时使用证书。

在linux或docker容器中,以下命令将解决问题:

curl https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/index.rubygems.org/GlobalSignRootCA.pem > $(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')

上面的命令将获取rubygems在连接到其网站时所期望的CA证书,并将其安装在ruby期望证书生效的位置。

感谢Gabe Evans有用的博客文章 ,详细介绍了在一行代码中解决问题的智能方法。

我修改了Gabe的解决方案,以使用rubygems 网站上指定的CA证书。 可以在那里找到为什么出现这个问题的进一步讨论。

此解决方案的好处是它使用https来获取rubygems的更新证书。 由于它从github获取此证书,因此即使使用SHA1证书也可以使用。 它也很方便,因为它使用ruby,通过拉入openssl库将cert放置在需要的位置。