Ruby on rails 找不到有效的gem:证书验证失败

Ruby on rails 找不到有效的gem:证书验证失败,ruby-on-rails,ruby,ssh,openssl,net-ssh,Ruby On Rails,Ruby,Ssh,Openssl,Net Ssh,我正在尝试建立到远程服务器的ssh隧道,如下所述: 但我只是想下载这些宝石就挂断了。我补充说: # file: Gemfile ... gem 'net-ssh-gateway', '~> 1.2.0' 但是,当我执行bundle安装(甚至只是在命令行上执行gem install net ssh)时,我会得到: 根据NetSSH()的自述文件,我检查了Ruby的OpenSSL绑定——它们看起来不错: $ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_V

我正在尝试建立到远程服务器的ssh隧道,如下所述:

但我只是想下载这些宝石就挂断了。我补充说:

# file: Gemfile
...
gem 'net-ssh-gateway', '~> 1.2.0'
但是,当我执行
bundle安装
(甚至只是在命令行上执行
gem install net ssh
)时,我会得到:

根据NetSSH()的自述文件,我检查了Ruby的OpenSSL绑定——它们看起来不错:

$ ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION'
OpenSSL 1.0.1j 15 Oct 2014
我不确定这是否相关,但当我尝试下载.pem文件以获得GEM文件的高安全性下载时:

$ curl -O https://raw.github.com/net-ssh/net-ssh/master/gem-public_cert.pem
。。。它没有下载.pem文件,访问URL直接导致“找不到”

其他资料:

$ 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

所以现在,我被困住了。有人认识到这个问题吗

尽管@the Tin Man给出了有用的答案,但我的问题是我没有在OpenSSL可以找到的地方设置证书

以下建议:

拙劣的变通办法 可以通过将Gemfile的第一行从

source 'https://rubygems.org'
到非https表单:

source 'http://rubygems.org'
然后执行常规的
捆绑安装
。之后,您应该恢复文件的第一行以使用https表单。这通常被认为是一种安全风险

此外,您还没有真正解决缺少有效证书的真正问题,如果您的应用程序调用使用OpenSSL(例如net ssh),您将遇到麻烦

更好的解决办法 看。对于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
,没有错误。

在我遇到证书问题时,这对我很有帮助:

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
嘿,每个人都遵循链接,这样你就不必每次都手动安装


这说明问题来自rubygems对ssl证书的更改。NVM这个链接解释得最好:p

Ruby gems.org前几天有DNS问题。我已经能够访问它并更新gems,因此它是可以访问的,但是很多其他人都无法访问它。在我的例子中,在第一行中,我不得不在末尾加一个斜杠:
gem sources-rhttps://rubygems.org/
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