tpw*_*tpw 266 ruby ssl ruby-on-rails rvm
我正在尝试做Michael Hartl教程.当我尝试在我的gemset中安装rails 3.2.14时,我遇到以下问题:
$ gem install rails -v 3.2.14
错误:找不到有效的宝石'rails'(= 3.2.14),原因如下:
无法从https://rubygems.org/下载数据- SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书验证失败(https://s3.amazonaws.com/production.s3.rubygems.org /specs.4.8.gz)
谷歌搜索后,我发现我可以使用非SSL源的rubygems,所以我运行:
sudo gem sources -a http://rubygems.org
Run Code Online (Sandbox Code Playgroud)
然后,当我再次尝试安装rails时,它成功了.但是,我仍然遇到上述问题,但作为警告:
警告:无法从" https://rubygems.org/ " 提取数据:SSL_connect返回= 1 errno = 0状态= SSLv3读取服务器证书B:证书验证失败(https://s3.amazonaws.com/production.s3 .rubygems.org/specs.4.8.gz)
如何完全删除此警告/错误?
我使用以下内容:
mpa*_*pis 379
确保使用最新的rvm:
rvm get stable
Run Code Online (Sandbox Code Playgroud)
然后你可以做两件事:
更新证书:
rvm osx-ssl-certs update all
Run Code Online (Sandbox Code Playgroud)更新rubygems:
rvm rubygems latest
Run Code Online (Sandbox Code Playgroud)查找证书路径:
cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')
Run Code Online (Sandbox Code Playgroud)
生成证书:
security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
Run Code Online (Sandbox Code Playgroud)
整个代码:https://github.com/wayneeseguin/rvm/blob/master/scripts/functions/osx-ssl-certs
确保更新包ca-certificates.(在旧系统上它可能不可用 - 不要使用不再接收安全更新的旧系统)
用于Windows 的Ruby安装程序构建由Luis Lavena准备,证书路径将显示类似于C:/Users/Luis/...检查https://github.com/oneclick/rubyinstaller/issues/249的更多详细信息和此答案/sf/answers/1910878161/进行修复.
bea*_*mes 241
最新发现......
https://gist.github.com/luislavena/f064211759ee0f806c88
找出坚持下去的地方
C:\>gem which rubygems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb
Run Code Online (Sandbox Code Playgroud)
然后只需复制../2.1.0/rubygems/ssl_certs/中的.pem文件,继续关注您的业务.
Dhe*_*rni 174
转到链接http://rubygems.org/pages/download
Edu*_*rdo 53
如果要使用非SSL源,请先尝试删除HTTPS源,然后添加HTTP源:
sudo gem sources -r https://rubygems.org
sudo gem sources -a http://rubygems.org
Run Code Online (Sandbox Code Playgroud)
更新:
正如mpapis所述,这应该仅用作临时解决方法.如果您通过非SSL源访问RubyGems,可能会有一些安全问题.
一旦不再需要变通方法,您应该恢复SSL源:
sudo gem sources -r http://rubygems.org
sudo gem sources -a https://rubygems.org
Run Code Online (Sandbox Code Playgroud)
roo*_*oo2 15
在Windows上,您必须使用HTTP源更新gem然后更改回使用HTTPS.
gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/
gem update --system
gem sources -r http://rubygems.org/
gem sources -a https://rubygems.org/
Run Code Online (Sandbox Code Playgroud)
编辑:警告我不确定这是否安全.有谁知道红宝石包是否签名?接受的答案看起来更好的解决方案.
Joh*_*icz 10
Rubygems.org有一个指南,不仅解释了如何解决这个问题,还解释了为什么这么多人拥有它:SSL证书更新 问题的原因是rubygems.org切换到更安全的SSL证书(SHA-2,使用256位加密).rubygems命令行工具将对正确证书的引用捆绑在一起.因此,使用较旧版本的rubygems无法更新rubygems本身.首先必须手动更新Rubygems.
首先找出你有什么rubygems:
rubygems –v
Run Code Online (Sandbox Code Playgroud)
根据您是否具有1.8.x,2.0.x或2.2.x,您需要下载名为"rubygems-update-XYZgem"的更新gem,其中XYZ是您需要的版本.运行1.8.x:下载:https://github.com/rubygems/rubygems/releases/tag/v1.8.30 运行2.0.x:下载:https://github.com/rubygems/rubygems/releases/tag/v2 .0.15 运行2.2.x:下载:https://github.com/rubygems/rubygems/releases/tag/v2.2.3
安装更新gem:
gem install –-local full_path_to_the_gem_file
Run Code Online (Sandbox Code Playgroud)
运行更新gem:
update_rubygems --no-ri --no-rdoc
Run Code Online (Sandbox Code Playgroud)
检查rubygems是否已更新:
rubygems –v
Run Code Online (Sandbox Code Playgroud)
卸载更新gem:
gem uninstall rubygems-update -x
Run Code Online (Sandbox Code Playgroud)
在这一点上,你可能没问题.但是,您可能没有新证书的最新公钥文件.去做这个:
从https://rubygems.org/pages/download下载最新证书(目前为AddTrustExternalCARoot-2048.pem).所有证书也位于:https: //github.com/rubygems/rubygems/tree/master/lib/rubygems/ssl_certs
找出它的位置:
gem which rubygems
Run Code Online (Sandbox Code Playgroud)
将此文件放在此位置的"rubygems\ssl_certs"目录中.
根据rubygems提交,证书将移动到更具体的目录.因此,目前证书(AddTrustExternalCARoot-2048.pem)应该在以下路径上lib/rubygems/ssl_certs/rubygems.org/AddTrustExternalCARoot-2048.pem
尝试使用源网站获取宝石,即rubygems.org.使用http而不是https.此方法不涉及任何工作,如安装证书等等.
示例 -
gem install typhoeus --source http://rubygems.org
Run Code Online (Sandbox Code Playgroud)
这有效,但有一点需要注意.
已安装gem,但文档不是因为证书错误.这是我得到的错误
Parsing documentation for typhoeus-0.7.0 WARNING: Unable to pull
data from 'https://rubygems.org/': SSL_connect returned=1 errno=0
state=SSLv3 read server certificate B: certificate verify failed
(https://rubygems.org/latest_specs.4.8.gz)
Run Code Online (Sandbox Code Playgroud)
小智 5
今天我在 VirtualBox 上运行的 Ubuntu 虚拟机上发生了这个确切的错误。我尝试了上面显示的大多数解决方案,然后才注意到我已经从一个非常旧的挂起状态恢复了,而且我的时钟已经关闭了很多天。
更新时钟立即解决了我的问题。这是我在案例中使用的命令:
须藤服务 ntp 停止 && 须藤 ntpdate pool.ntp.org && 须藤服务 ntp 开始