繁体   English   中英

软件包安装失败,并显示SSL证书验证错误

[英]bundle install fails with SSL certificate verification error

当我在Centos 5.5上为Rails 3项目运行bundle install ,它失败并出现错误:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/multi_json-1.3.2.gem)
An error occured while installing multi_json (1.3.2), and Bundler cannot continue.
Make sure that `gem install multi_json -v '1.3.2'` succeeds before bundling.

当我尝试手动安装gem时(通过gem install multi_json -v '1.3.2' ),它可以工作。 其他几个宝石也会发生相同的问题。 我使用RVM(1.12.3),ruby 1.9.2,bundler 1.1.3。

如何解决?

更新资料

现在,我已经从这个答案中充分挖掘了..err,每个人都应该知道应该已经解决了这个问题。

重新:通过Ownatik再次捆绑安装失败,出现SSL证书验证错误

gem update --system

我的答案仍然是正确的,如果最终对您不起作用,请留在下面以供参考。


老实说,最好的临时解决方案是

[...]在您的gemfile中使用rubygems的非SSL版本作为临时解决方法。

通过用户Ownatik

它们的意思是在Rails应用程序目录更改中Gemfile的顶部

source 'https://rubygems.org'

source 'http://rubygems.org'

需要注意的是第二个版本是http而不是http 小号

将ssl gem源替换为non-ssl作为临时解决方案:

原因是古老的红宝石。 您需要首先使用非SSL源更新系统部件:

gem update --system --source http://rubygems.org/ (使用非SSL连接临时更新系统部件)。

现在您可以使用gem update

如果您使用的是Mac,并且使用的是RVM的最新版本(〜1.20),则以下命令对我有用。

rvm osx-ssl-certs update

现在应该解决此问题。 更新rubygems( gem update --system ),确保openssl是您操作系统上的最新版本,或者尝试以下仍不能使用的提示: http : //railsapps.github.com/openssl-certificate-verify-failed。 html

临时解决方案(由Ownatik暗示):

在您的主路径中创建或修改一个名为.gemrc的文件,包括:ssl_verify_mode: 0

这将防止捆绑程序在尝试安装gem时检查其SSL证书。

对于* nix设备,“主路径”表示~/.gemrc 如果愿意,还可以创建/etc/gemrc 对于Windows XP,“主路径”表示c:\\Documents and Settings\\All Users\\Application Data\\gemrc 对于Windows 7, C:\\ProgramData\\gemrc

在Windows7上,您可以从此处下载cacert.pem文件,并将环境变量SSL_CERT_FILE设置为存储证书的路径,例如

SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"

或者您可以在脚本中设置变量,例如ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"

将<username>替换为您自己的用户名。

如果使用的是RVM,则此问题的真正解决方案是:

  1. 更新rubygems: gem update --system
  2. 使用RVM刷新SSL证书: rvm osx-ssl-certs update all

在RailsApps项目上的提示

对于那些通过RVM安装了ruby并且想要快速修复(不按照Bruno的要求阅读)的人,请尝试以下操作:

rvm remove 1.9.x (or whatever version of ruby you are using)
rvm pkg install openssl
rvm install 1.9.2 --with-openssl-dir=$rvm_path/usr

有关更多详细信息,这是我找到解决方案的链接。

http://railsapps.github.com/openssl-certificate-verify-failed.html

顺便说一句,我不必在Ubuntu上接触我的证书。

最棒的是,这不是解决方法。 它将通过SSL下载gem,如果出现类似中间人攻击的问题,则该失败将失败,这比关闭安全性要好得多。

您可以从curl的网站上下载CA证书列表,网址为http://curl.haxx.se/ca/cacert.pem

然后设置SSL_CERT_FILE环境变量以告诉Ruby使用它。 例如,在Linux中:

$ SSL_CERT_FILE=~/cacert.pem bundle install

(参考: https : //gist.github.com/fnichol/867550

该问题已解决

http://guides.rubygems.org/ssl-certificate-update/

现在RubyGems 2.6.x已发布,您可以手动更新到该版本。

下载https://rubygems.org/downloads/rubygems-update-2.6.7.gem

请将该文件下载到以后可以指向的目录中(例如,硬盘C的根目录:)

现在,使用命令提示符:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

此后,gem --version应该报告新的更新版本。

您现在可以安全地卸载rubygems-update gem:

C:\>gem uninstall rubygems-update -x

此处提供有关.pem文件的简单复制粘贴指令

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

证书验证失败

如果您已经阅读了前面的部分,那么您将了解这意味着什么(如果您没有的话,可耻>)。

我们需要下载AddTrustExternalCARoot-2048.pem 打开命令提示符并键入:

C:> gem其中的rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.rb现在,让我们找到该目录。 在同一窗口中,输入文件扩展名之前的路径部分,但改用反斜杠:

C:>启动C:\\ Ruby21 \\ lib \\ ruby​​ \\ 2.1.0 \\ ruby​​gems这将在我们指定的目录内打开一个Explorer窗口。

步骤3:复制新的信任证书

现在,找到ssl_certs目录并复制从上一步中获得的.pem文件。

它将与其他文件(如GeoTrustGlobalCA.pem)一起列出。

同样的问题,但是这里有不同的宝石:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=SSLv3 
read server certificate B: certificate verify failed 
(https://bb-m.rubygems.org/gems/builder-3.0.0.gem)
An error occured while installing builder (3.0.0), and Bundler cannot continue.
Make sure that `gem install builder -v '3.0.0'` succeeds before bundling.

临时解决方案: gem install builder -v '3.0.0'使继续bundle install成为可能

最简单的解决方案:

rvm pkg install openssl
rvm reinstall all --force

瞧!

这是在Windows上解决此问题的方法:

下载.perm文件,然后在命令提示符下设置SSL_CERT_FILE

https://gist.github.com/fnichol/867550

在Ubuntu 12.04上,我得到了一个稍微不同的错误,尽管可能与之相关:

Gem::RemoteFetcher::FetchError: SSL_connect returned=1 errno=0 state=unknown state: sslv3 alert handshake failure (https://d2chzxaqi4y7f8.cloudfront.net/gems/activesupport-3.2.3.gem)
An error occured while installing activesupport (3.2.3), and Bundler cannot continue.
Make sure that `gem install activesupport -v '3.2.3'` succeeds before bundling.

当我在Gemfile中使用source 'https://rubygems.org'运行bundle install时,就会发生这种情况。

这是Ubuntu 12.04上的OpenSSL问题。 参见Rubygems问题#319

要解决此问题,请在Ubuntu 12.04上运行apt-get update && apt-get upgrade升级OpenSSL。

我可以rvm下载的二进制文件不能在OS X的OpenSSL上很好地使用的事实,因为OpenSSL是旧的并且不再被OS使用。

对我来说,解决方案是在通过rvm安装Ruby时强制编译:

rvm reinstall --disable-binary 2.2

我对Windows的永久修复:

  1. http://guides.rubygems.org/ssl-certificate-update/下载CACert ,另存为C:\\ruby\\ssl_certs\\GlobalSignRootCA.pem

  2. 创建名为“ SSL_CERT_FILE ”的系统变量,并将其设置为C:\\ruby\\ssl_certs\\GlobalSignRootCA.pem

  3. 再试一次: gem install bundler

 C:\\gem sources *** CURRENT SOURCES *** https://rubygems.org/ C:\\gem install bundler Fetching: bundler-1.13.5.gem (100%) Successfully installed bundler-1.13.5 1 gem installed 

感谢@ Alexander.Iljushkin:

gem update --system --source http://rubygems.org/

在那个捆绑器仍然失败之后,解决方案是:

gem install bundler

我遇到了类似的错误。 这是我解决此问题的方法:在您的路径目录中,检查Gemfile。 将gemfile中的源代码编辑为http而不是https并保存。 这可能会安装捆绑程序而没有SSL证书问题。

对于Windows计算机,请使用以下命令检查您的gem版本

gem --version

然后按照以下步骤更新您的gem:

请将该文件下载到以后可以指向的目录中(例如,硬盘C:的根目录)

现在,使用命令提示符:

C:\>gem install --local C:\rubygems-update-1.8.30.gem
C:\>update_rubygems --no-ri --no-rdoc

现在,捆绑安装将成功完成,而不会出现SSL证书验证错误。

更详细的说明在这里

这对我有用:

  • https://rubygems.org/pages/download下载最新的gem
  • 使用gem install --local [path to downloaded gem file]
  • 使用update_rubygems更新gem
  • 使用gem --version检查您是否在最新的gem版本上

我不得不重新安装openssl:

brew uninstall --force openssl
brew install openssl

我刚遇到这个问题,并按照此处概述的步骤进行操作。 您可能没有指向正确的OpenSSL证书。 运行后:

rvm osx-ssl-certs status all
rvm osx-ssl-certs update all

export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt

捆绑完成了!

下载rubygems-update-2.6.7.gem

现在,使用命令提示符:

C:\>gem install --local C:\rubygems-update-2.6.7.gem
C:\>update_rubygems --no-ri --no-rdoc

此后, gem --version应该报告新的更新版本。

您现在可以安全地卸载rubygems-update gem:

C:\>gem uninstall rubygems-update -x
Removing update_rubygems
Successfully uninstalled rubygems-update-2.6.7

请注意,如果您要从内部证书颁发机构信任SSL证书的来源中获取宝石(或者正在通过具有SSL检查的公司Web代理连接到外部来源),请将SSL_CERT_FILE env变量指向证书链。 这很可能只需要将您的根证书从证书存储(macOS上的系统钥匙串)导出到您的Shell可以访问的位置,即:

export SSL_CERT_FILE=~/RootCert.pem

如果您正在使用rails-assets

如果您使用https://rails-assets.org/来管理资产,那么没有答案会帮助您。 即使转换为http也无济于事。

最简单的修复方法是使用此资源http://insecure.rails-assets.org 这已经在他们的主页中提到了。

对我来说,在旧版Windows系统和ruby 1.9版本上唯一起作用的是从http://guides.rubygems.org/ssl-certificate-update/下载cacert文件

然后在运行捆绑安装之前运行以下命令

bundle config --global ssl_ca_cert /path/to/file.pem

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM