当我在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 .
怎么解决?
28 回答
如果您使用的是Mac并使用最新版本的RVM(~1.20),则以下命令对我有用 .
现在应该修复此问题 . 更新rubygems(
gem update --system
),确保openssl在您的操作系统上是最新版本,或尝试这些提示仍然无效:http://railsapps.github.com/openssl-certificate-verify-failed.html原因是旧的rubygems . 您需要先使用非ssl源更新系统部件:
gem update --system --source http://rubygems.org/
(使用非ssl连接临时更新系统部件) .现在您已准备好使用
gem update
.Update
既然我已经从这个答案中挖掘出足够的业力,那么每个人都应该知道这应该已经解决了 .
re:再次通过Ownatik bundle install fails with SSL certificate verification error
我的答案仍然是正确的,如果最终不适合你,请留下以供参考 .
老实说,最好的临时解决方案是
通过用户Ownatik
他们的意思是在rails应用程序目录中
Gemfile
的顶部更改source 'https://rubygems.org'
至
source 'http://rubygems.org'
请注意第二个版本是http而不是http s
将ssl gem源替换为非ssl作为临时解决方案:
宝石资源-r https://rubygems.org/
宝石来源-a http://rubygems.org/
临时解决方案(由Ownatik提及):
在主路径中创建或修改名为.gemrc的文件,包括行
:ssl_verify_mode: 0
这将阻止Bundler在尝试安装时检查gem的SSL证书 .
对于* nix设备,'home path'表示
~/.gemrc
. 如果您愿意,也可以创建/etc/gemrc
. 对于Windows XP,'home path'表示c:\Documents and Settings\All Users\Application Data\gemrc
. 对于Windows 7,C:\ProgramData\gemrc
在Windows7上,您可以从here下载cacert.pem文件,并将environementvariable SSL_CERT_FILE设置为存储证书的路径,例如
或者您可以在脚本中设置变量
ENV['SSL_CERT_FILE']="C:/users/<username>/cacert.pem"
用您自己的用户名替换<username> .
如果您使用RVM,这个问题的真正解决方案是:
更新rubygems:
gem update --system
使用RVM刷新SSL证书:
rvm osx-ssl-certs update all
帽子提示this tip on the RailsApps project!
对于那些通过RVM安装了ruby并希望快速修复的人(更喜欢不按照Bruno的请求阅读),试试这个:
有关更多详细信息,请参阅此处找到解决方案的链接 .
http://railsapps.github.com/openssl-certificate-verify-failed.html
顺便说一下,我没有必要在Ubuntu上触摸我的证书 .
这已得到修复
http://guides.rubygems.org/ssl-certificate-update/
现在RubyGems 2.6.x已经发布,您可以手动更新到此版本 .
下载https://rubygems.org/downloads/rubygems-update-2.6.7.gem
请将文件下载到以后可以指向的目录中(例如,硬盘C的根目录:)
现在,使用命令提示符:
在此之后,gem --version应该报告新的更新版本 .
您现在可以安全地卸载rubygems-update gem:
您可以从curl的网站http://curl.haxx.se/ca/cacert.pem下载CA证书列表
然后设置SSL_CERT_FILE环境变量以告诉Ruby使用它 . 例如,在Linux中:
(参考:https://gist.github.com/fnichol/867550)
这里给出的关于.pem文件的简单复制粘贴指令
https://gist.github.com/luislavena/f064211759ee0f806c88
证书验证失败
相同问题,但在这里有不同的宝石:
暂时解决:
gem install builder -v '3.0.0'
使得继续bundle install
成为可能这是您如何在Windows上解决此问题:
下载.perm文件,然后在命令提示符下设置SSL_CERT_FILE
https://gist.github.com/fnichol/867550
我在Ubuntu 12.04上得到了一个稍微不同的错误,尽管可能有相关的错误:
当我在Gemfile中使用
source 'https://rubygems.org'
运行bundle install
时会发生这种情况 .这是OpenSSL在Ubuntu 12.04上的一个问题 . 见Rubygems issue #319 .
要解决此问题,请在Ubuntu 12.04上运行
apt-get update && apt-get upgrade
以升级OpenSSL .最简单的解决方案:
瞧!
我能够追踪到这样一个事实:
rvm
下载的二进制文件与OS X的OpenSSL不一致,后者已经过时并且不再被操作系统使用 .我的解决方案是在通过
rvm
安装Ruby时强制编译:我对Windows的永久修复:
从http://guides.rubygems.org/ssl-certificate-update/下载CACert,另存为
C:\ruby\ssl_certs\GlobalSignRootCA.pem
创建名为“ SSL_CERT_FILE ”的系统变量,设置为
C:\ruby\ssl_certs\GlobalSignRootCA.pem
.再试一次:
gem install bundler
:C:\ gem install bundler
获取:bundler-1.13.5.gem(100%)
已成功安装bundler-1.13.5
安装1个宝石
感谢@ Alexander.Iljushkin:
gem update --system --source http://rubygems.org/
在该捆绑包仍然失败后,解决方案是:
gem install bundler
我收到了类似的错误 . 以下是我解决这个问题的方法:在路径目录中,检查Gemfile . 将gemfile中的源编辑为http而不是https并保存 . 这可能会在没有SSL证书问题的情况下安装捆绑包
对于Windows机器,请检查您的宝石版本
然后更新您的gem如下:
运行1.8.x:download 1.8.30
运行2.0.x:download 2.0.15
运行2.2.x:download 2.2.3
请将文件下载到以后可以指向的目录中(例如,硬盘驱动器的根目录C :)
现在,使用命令提示符:
现在,捆绑安装将成功,没有SSL证书验证错误 .
更详细的说明是here
这对我有用:
在https://rubygems.org/pages/download下载最新宝石
用
gem install --local [path to downloaded gem file]
安装宝石用
update_rubygems
更新宝石使用
gem --version
检查您是否使用最新的宝石版本我不得不重新安装openssl:
我刚刚遇到这个问题并按照here概述的步骤进行了操作 . 您可能没有指向正确的OpenSSL证书 . 运行后:
和
捆绑完了!
下载rubygems-update-2.6.7.gem .
现在,使用命令提示符:
在此之后,
gem --version
应报告新的更新版本 .您现在可以安全地卸载rubygems-update gem:
要注意的是,如果您从内部证书颁发机构信任SSL证书的源中获取gem(或者您通过具有SSL检查的公司Web代理连接到外部源),请将SSL_CERT_FILE env变量指向您的证书链 . 这很可能只需要将您的根证书从证书存储区(macOS上的系统密钥链)导出到您的shell的可访问位置,即:
如果您正在使用rails-assets
如果您使用
https://rails-assets.org/
来管理您的资产,没有答案可以帮助您 . 即使转换为http
也无济于事 .最简单的解决方法是使用此源代码,
http://insecure.rails-assets.org
. 这已在他们的homepage中提到过 .在遗留的Windows系统和ruby 1.9版本上唯一对我有用的是从http://guides.rubygems.org/ssl-certificate-update/下载cacert文件
然后在运行bundle install之前运行以下命令