当我在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。
如何解决?
答案 0 :(得分:307)
<强>更新强>
既然我已经因为这个答案而开采了足够的业力,每个人都应该知道这应该是固定的。
re:再次通过Ownatik bundle install fails with SSL certificate verification error
gem update --system
我的回答仍然正确,如果最终不适合你,请留下以供参考。
老实说,最好的临时解决方案是
[...]在gemfile中使用非ssl版本的rubygems作为临时解决方法。
通过用户Ownatik
他们的意思是在rails应用程序目录中Gemfile
的顶部更改
source 'https://rubygems.org'
到
source 'http://rubygems.org'
请注意,第二个版本是http而不是http s
答案 1 :(得分:223)
将ssl gem源替换为非ssl作为临时解决方案:
答案 2 :(得分:161)
原因是旧的rubygems。您需要先使用非ssl源更新系统部件:
gem update --system --source http://rubygems.org/
(使用非ssl连接临时更新系统部分)。
现在您已准备好使用gem update
。
答案 3 :(得分:114)
如果您使用的是mac并使用最新版本的RVM(~1.20),则以下命令对我有效。
rvm osx-ssl-certs update
答案 4 :(得分:55)
现在应该修复此问题。更新rubygems(gem update --system
),确保openssl是您操作系统上的最新版本,或者尝试这些提示仍然无效:http://railsapps.github.com/openssl-certificate-verify-failed.html
答案 5 :(得分:49)
临时解决方案(由Ownatik提及):
在您的主路径中创建或修改名为.gemrc的文件,包括行:ssl_verify_mode: 0
这将阻止捆绑器在尝试安装时检查宝石的SSL证书。
对于* nix设备,&#39;家庭路径&#39;表示~/.gemrc
。如果您愿意,也可以创建/etc/gemrc
。对于Windows XP,&#39;主路径&#39;表示c:\Documents and Settings\All Users\Application Data\gemrc
。对于Windows 7,C:\ProgramData\gemrc
答案 6 :(得分:16)
在windows7上,您可以从here下载cacert.pem文件,并将environementvariable SSL_CERT_FILE设置为存储证书的路径,例如
SET SSL_CERT_FILE="C:\users\<username>\cacert.pem"
或者您可以在脚本中设置变量,例如ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
替换&lt;用户名&gt;用你自己的用户名。
答案 7 :(得分:15)
如果您正在使用RVM,那么这个问题的真正解决方案是:
gem update --system
rvm osx-ssl-certs update all
答案 8 :(得分:7)
对于那些通过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并失败 攻击比仅仅关闭安全性要好得多。
答案 9 :(得分:6)
这已经修复
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
答案 10 :(得分:6)
您可以从curl的网站http://curl.haxx.se/ca/cacert.pem
下载CA证书列表然后设置SSL_CERT_FILE环境变量以告诉Ruby使用它。例如,在Linux中:
$ SSL_CERT_FILE=~/cacert.pem bundle install
答案 11 :(得分:5)
此处给出的关于.pem文件的简单复制粘贴说明
https://gist.github.com/luislavena/f064211759ee0f806c88
证书验证失败
如果你已经阅读过前面的章节,你会知道这意味着什么(如果你没有,那就羞辱你了。)
我们需要下载AddTrustExternalCARoot-2048.pem。 打开命令提示符并输入:
C:&gt;宝石哪个rubygems C:/Ruby21/lib/ruby/2.1.0/rubygems.rb 现在,让我们找到该目录。在同一窗口中,输入路径部分直到文件扩展名,但使用反斜杠:
C:&gt;启动C:\ Ruby21 \ lib \ ruby \ 2.1.0 \ rubygems 这将在我们指示的目录中打开一个资源管理器窗口。
第3步:复制新的信任证书
现在,找到ssl_certs目录并复制我们从上一步中获得的.pem文件。
它将与其他文件一起列出,例如GeoTrustGlobalCA.pem。
答案 12 :(得分:4)
同样的问题,但在这里有不同的宝石:
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
答案 13 :(得分:4)
答案 14 :(得分:4)
最简单的解决方案:
rvm pkg install openssl
rvm reinstall all --force
瞧!
答案 15 :(得分:3)
我在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中使用bundle install
运行source 'https://rubygems.org'
时会发生这种情况。
这是Ubuntu 12.04上OpenSSL的问题。请参阅Rubygems issue #319。
要解决此问题,请在Ubuntu 12.04上运行apt-get update && apt-get upgrade
以升级您的OpenSSL。
答案 16 :(得分:3)
我能够跟踪这一事实,即rvm
下载的二进制文件与OS X的OpenSSL不一致,后者已经过时且不再被操作系统使用。
我的解决方案是在通过rvm
安装Ruby时强制编译:
rvm reinstall --disable-binary 2.2
答案 17 :(得分:3)
我对Windows的永久修复:
C:\ruby\ssl_certs\GlobalSignRootCA.pem
创建名为“ SSL_CERT_FILE ”的系统变量,设置为C:\ruby\ssl_certs\GlobalSignRootCA.pem
。
再试一次: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
答案 18 :(得分:3)
致@ Alexander.Iljushkin:
gem update --system --source http://rubygems.org/
之后,捆绑包仍然失败,解决方法是:
gem install bundler
答案 19 :(得分:2)
我遇到了类似的错误。以下是我解决这个问题的方法:在路径目录中,检查Gemfile。将gemfile中的源编辑为http而不是https并保存。这可能会在没有SSL证书问题的情况下安装捆绑包.l
答案 20 :(得分:2)
对于Windows机器,请使用
检查您的gem版本--theirs
然后按照以下步骤更新您的宝石:
请将文件下载到以后可以指向的目录中(例如,硬盘驱动器的根目录C:)
现在,使用命令提示符:
gem --version
现在,捆绑安装将成功,不会出现SSL证书验证错误。
更详细的说明是here
答案 21 :(得分:1)
这对我有用:
gem install --local [path to downloaded gem file]
update_rubygems
gem --version
答案 22 :(得分:1)
现在,使用命令提示符:
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
答案 23 :(得分:1)
我刚刚遇到这个问题,并按照here概述的步骤进行了操作。您可能没有指向正确的OpenSSL证书。跑完后:
rvm osx-ssl-certs status all
rvm osx-ssl-certs update all
和
export SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt
捆绑完了!
答案 24 :(得分:1)
我不得不重新安装openssl:
brew uninstall --force openssl
brew install openssl
答案 25 :(得分:0)
要注意,如果您从内部证书颁发机构信任SSL证书的源中获取gem(或者您通过具有SSL检查的公司Web代理连接到外部源),请将SSL_CERT_FILE env变量指向你的证书链。这很可能只需要将您的根证书从证书存储区(macOS上的系统密钥链)导出到shell的可访问位置,即:
export SSL_CERT_FILE=~/RootCert.pem
答案 26 :(得分:0)
rails-assets
如果您使用https://rails-assets.org/
来管理资产,则没有任何答案可以帮助您。即使转换为http
也不会有帮助。
最简单的解决方法是使用此源http://insecure.rails-assets.org
。这已在他们的homepage中提及。
答案 27 :(得分:0)
在遗留的Windows系统和ruby 1.9版本上唯一对我有用的是从中下载cacert文件 http://guides.rubygems.org/ssl-certificate-update/
然后在运行bundle install
之前运行以下命令bundle config --global ssl_ca_cert /path/to/file.pem