我尝试建立到远程服务器的ssh隧道,如下所述:SSH from Heroku into remote server with Mysql Db
但我只是想下载宝石而挂断电话。我补充说:
# file: Gemfile
...
gem 'net-ssh-gateway', '~> 1.2.0'
但是当我在命令行上bundle install
(甚至只是gem install net-ssh
)时,我得到:
ERROR: Could not find a valid gem 'net-ssh' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://api.rubygems.org/latest_specs.4.8.gz)
根据net-ssh的README(https://github.com/net-ssh/net-ssh),我检查了我的OpenSSL绑定Ruby - 看起来没问题:
$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1j 15 Oct 2014
我不确定这是否相关,但当我尝试下载.pem文件以进行gemfile的高安全性下载时:
$ curl -O https://raw.github.com/net-ssh/net-ssh/master/gem-public_cert.pem
...它没有下载.pem文件,直接访问该网址会导致找不到'。
其他信息:
$ rake about
About your application's environment
Ruby version 2.1.4-p265 (x86_64-darwin14.0)
RubyGems version 2.2.2
Rack version 1.5
Rails version 4.1.7
所以现在,我被困了。有人认出这个问题吗?
答案 0 :(得分:12)
这对我的情况有帮助,当我遇到证书问题时:
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
答案 1 :(得分:6)
尽管@the Tin Man提供了有用的答案,我的问题是我没有在OpenSSL可以找到它们的地方设置证书。
以下SSL Error When installing rubygems, Unable to pull data from 'https://rubygems.org/中的建议:
可以通过从
更改Gemfile的第一行来解决这个问题source 'https://rubygems.org'
到非https表单:
source 'http://rubygems.org'
然后执行通常的bundle install
。之后,您应该恢复Gemfile的第一行以使用https表单。这通常被认为是安全风险。
除此之外,您还没有真正解决缺少有效证书的真正问题,如果您的应用程序调用使用OpenSSL(例如net-ssh),您将遇到麻烦。
见SSL Error When installing rubygems, Unable to pull data from 'https://rubygems.org/。对于OS X用户,我们要求Ruby告诉我们它在哪里查找证书文件,然后使用security find-certificate
填充证书文件:
$ cert_file=$(ruby -ropenssl -e 'puts OpenSSL::X509::DEFAULT_CERT_FILE')
$ echo $cert_file
$ security find-certificate -a -p /Library/Keychains/System.keychain > "$cert_file"
$ security find-certificate -a -p /System/Library/Keychains/SystemRootCertificates.keychain >> "$cert_file"
在我这样做之后,我能够在没有错误的情况下致电bundle install
。
答案 2 :(得分:0)
大家都关注this链接,因此您不必每次都手动安装。
这说明问题来自rubygems'改变ssl certasdaasdlashjd等等等等。 NVM链接解释得最好:p