SSL_connect返回=1 errno=0 state=SSLv3读取服务器证书B:证书验证失败

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

提问人:Vikash 提问时间:12/25/2010 更新时间:2/23/2018 访问量:287289

问:

我正在使用 Authlogic-Connect 进行第三方登录。运行适当的迁移后,Twitter/Google/yahoo 登录似乎工作正常,但 facebook 登录会引发异常:

SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

开发日志显示

OpenSSL::SSL::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed):
  app/controllers/users_controller.rb:37:in `update'

请提出建议。.

Ruby-on-Rails Ruby SSL AuthLogic Facebook-Graph-API

评论

2赞 Zabba 12/25/2010
这是否有助于:stackoverflow.com/q/3977303/382818
0赞 Pavel Nikolov 6/7/2013
这是我迄今为止能够找到的最佳解决方案 stackoverflow.com/a/16983443/11792

答:

31赞 martoche 12/31/2010 #1

Ruby 找不到任何可信任的根证书。

看看这篇博文,了解解决方案:“Ruby 1.9 和 SSL 错误”。

解决方案是安装包含与Firefox相同的根证书的端口:curl-ca-bundle

sudo port install curl-ca-bundle

并告诉对象使用它:https

https.ca_file = '/opt/local/share/curl/curl-ca-bundle.crt'

请注意,如果您希望代码在 Ubuntu 上运行,则需要使用默认证书位置设置属性。ca_path/etc/ssl/certs

评论

8赞 Bob Aman 11/16/2011
这似乎也发生在 Windows 上,在这种情况下,推荐的解决方案将不起作用。
4赞 martoche 12/31/2010 #2

然后,正如这篇博文所建议的,

"如何修复Net::HTTP有风险的默认HTTPS行为"

您可能希望安装允许您为 设置默认值的 Gem。always_verify_ssl_certificatesca_file

140赞 Erik G. 5/12/2011 #3

我在尝试将 JQuery 生成器用于 Rails 3 时遇到了类似的问题

我是这样解决的:

  1. 获取 CURL 证书颁发机构 (CA) 捆绑包。您可以使用以下方法执行此操作:

    • sudo port install curl-ca-bundle[如果您使用的是MacPorts]
    • 或者直接拉下来wget http://curl.haxx.se/ca/cacert.pem
  2. 执行尝试验证 SSL 证书的 ruby 代码:。在您的例子中,您希望将其设置为服务器选取它的位置的环境变量,或者在 environment.rb 文件中添加类似内容的内容。SSL_CERT_FILE=/opt/local/etc/certs/cacert.pem rails generate jquery:installENV['SSL_CERT_FILE'] = /path/to/your/new/cacert.pem

您也可以将 CA 文件(我没有尝试过)安装到操作系统上——这里有冗长的说明——这应该以类似的方式工作,但我个人没有尝试过。

基本上,您遇到的问题是某些 Web 服务使用针对 OpenSSL 无法验证的 CA 签名的证书进行响应。

评论

1赞 Jignesh Gohel 3/27/2012
当我尝试使用 Ruby Net::IMAP 从 ruby 脚本连接到我的 gmail 帐户时,这也对我有用。谢谢。
4赞 andersjanmyr 12/20/2012
是的,这在 ruby-1.9.3 上工作正常。我将其添加到我的 bash 配置中。export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cert.pem
5赞 Lilith River 3/6/2013
我没有 /usr/local/etc/openssl,所以我运行后跟sudo curl http://curl.haxx.se/ca/cacert.pem >> /usr/local/etc/cacert.pemexport SSL_CERT_FILE=/usr/local/etc/cacert.pem
5赞 Dave Sag 9/30/2013
在我的 Mac 上开发时,我刚刚添加到我的应用程序文件中,瞧 - 一切都很高兴。SSL_CERT_FILE=/usr/local/etc/openssl/cert.pem.env
11赞 Trey 10/7/2014
我很欣赏使用 wget 下载 curl 证书的讽刺意味。
15赞 Scott 5/19/2011 #4

这是用于调试目的的另一个选项。

确保永远不要在任何生产环境中使用它,因为它首先会否定使用 SSL 的好处。只有在本地开发环境中执行此操作才有效。

require 'openssl'
OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

评论

26赞 Ry Biesemeyer 4/26/2012
投反对票:是的,这可行,但安装有效的 CA 捆绑包并实际解决问题的障碍非常低,以至于像这样的解决方案——几乎完全使 SSL 的安全性失效——不是一个应该实施的解决方案,除非您处于证书颁发机构完全无法访问的环境中(即使这样, 应创建一个可供两个端点访问的本地 CA)。
11赞 drbrain 5/7/2012
它并没有完全删除SSL保护,而是完全删除了它。永远不要这样做。
15赞 rickyduck 6/1/2012
对于调试来说,这就足够了
1赞 Ivan -Oats- Storck 8/7/2012
这会在 1.9 中产生警告
2赞 Mark Reed 9/10/2014
对于实际互联网上的生产工作来说,这是一个糟糕的解决方案,但“你还不如根本不使用SSL”的说法是不正确的。通过网络加密的流量比明文加密的流量要好。是的,你有中间人攻击的可能性,但这些攻击至少比简单地窃听明文流量更难站稳脚跟。
2赞 Musicalmindz 8/25/2011 #5

以下是我所做的工作,如果您在 Leopard 上遇到特别的问题,它会有所帮助。

我的证书很旧,需要更新。我下载了这个:

http://curl.haxx.se/ca/cacert.pem

然后替换了我在 Leopard 上找到的证书:

/usr/share/curl/curl-ca-bundle.crt

重新加载您正在访问它的任何内容,您应该可以开始了!

130赞 ryanjones 9/24/2011 #6

以下是在 Windows 上修复它的方法: https://gist.github.com/867550(由 Fletcher Nichol 创建)

摘录:

手动方式(镗孔)

http://curl.haxx.se/ca/cacert.pem 下载文件。将此文件保存到 。cacert.pemC:\RailsInstaller\cacert.pem

现在,通过设置 使 ruby 知道您的证书颁发机构捆绑包。若要在当前命令提示符会话中设置此项,请键入:SSL_CERT_FILE

set SSL_CERT_FILE=C:\RailsInstaller\cacert.pem

若要使此设置为永久设置,请在控制面板中添加此设置。

评论

6赞 John 3/14/2012
谢谢。这非常有用,也非常简单。
0赞 Sprachprofi 6/1/2012
上述解决方案对我没有帮助。这是 Windows 的更好指南:stackoverflow.com/questions/5720484/...
0赞 ryanjones 6/1/2012
@Sprachprofi 您链接到的解决方案一次只能用于 1 个 rails 项目(因为您直接指向该证书)。我链接到的要点(由 Fletcher Nichol 创建)将允许它涵盖每个正在寻找证书的项目/宝石。
17赞 Mike Park 1/6/2012 #7

在装有最新 macport 的 Mac OS X Lion 上:

sudo port install curl-ca-bundle  
export SSL_CERT_FILE=/opt/local/share/curl/curl-ca-bundle.crt  

然后,重新运行失败的作业。

请注意,自 Eric G 于 5 月 12 日回答以来,证书文件位置似乎已更改。

评论

0赞 shawnwall 7/9/2012
经过所有的搜索和多次尝试,这是解决问题的唯一方法。谢谢!
1赞 23tux 10/24/2012
很酷,修好了。但是,只要 openssl 与 homebrew 一起安装,您就必须将 .profile 或 .bashrc 文件添加到export SSL_CERT_FILE=/usr/local/etc/openssl/cacert.pem
2赞 Hortitude 3/25/2012 #8

仅仅因为对我有用的说明略有不同,我想我添加了我的 2 美分:

我在 OS X Lion 上使用 macports 和 rvm

我安装了curl-ca-bundle:

sudo port install curl-ca-bundle

然后我将我的 omniauth 配置调整为:

Rails.application.config.middleware.use OmniAuth::Builder do
  provider :google_oauth2, APP_CONFIG['CONSUMER_KEY'], APP_CONFIG['CONSUMER_SECRET'],
           :scope => 'https://www.google.com/m8/feeds https://www.googleapis.com/auth/userinfo.profile',
           :ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
end

评论

0赞 jww 6/22/2015
您可以(并且可能应该)放弃整个 CA Zoo () 并在 中使用 Google Internet Authority G2。这是认证与 Google 的连接所需的唯一方法。ca-bundle.crt:ssl => {:ca_path => "/share/curl/curl-ca-bundle.crt"}
13赞 ramasamy 4/29/2012 #9

好吧,这对我有用

rvm pkg install openssl
rvm reinstall 1.9.2 --with-openssl-dir=$rvm_path/usr

我的 ubuntu 12.04 的 openssl 实现有问题

评论

3赞 Raf 10/26/2012
这有效,但我必须完成这个:、、curl -O http://curl.haxx.se/ca/cacert.pemmv cacert.pem cert.pemmv cert.pem $rvm_path/usr/ssl
0赞 anevaude 3/15/2015
为我工作,Mac OS X Yosemite。谢谢!
20赞 Stewart 5/7/2012 #10

问题是 ruby 找不到要信任的根证书。从 1.9 开始,ruby 会检查这一点。您需要确保系统上有 pem 文件格式的 curl 证书。您还需要确保证书位于 ruby 期望的位置。您可以在以下位置获得此证书...

http://curl.haxx.se/ca/cacert.pem

如果您是 RVM 和 OSX 用户,那么您的证书文件位置将根据您使用的 ruby 版本而有所不同。使用 :ca_path 显式设置路径是一个坏主意,因为您的代码在进入生产环境时将无法移植。在那里,你想在默认位置为ruby提供一个证书(并假设你的开发运营人员知道他们在做什么)。您可以使用 dtruss 来确定系统查找证书文件的位置。

就我而言,系统正在查找证书文件

/Users/stewart.matheson/.rvm/usr/ssl/cert.pem

但是 MACOSX 系统需要证书

/System/Library/OpenSSL/cert.pem

我将下载的证书复制到此路径,它起作用了。HTH型

评论

2赞 Nazar Hussain 8/10/2012
对我来说,在 Ubuntu 12.04 上,有效的证书路径是~/.rvm/usr/ssl/cert.pem
0赞 pingu 10/5/2013
如何使用 dtruss 来确定系统在哪里查找证书?
0赞 Stewart 11/5/2013
@pingu记不住确切的命令,基本上你运行 druss,然后告诉它运行任何你希望它“检查”的 ruby 进程。它的输出非常冗长,但基本上你将能够看到 ruby 正在进行的每个系统调用。其中一个调用将是读取文件调用,它将指向不存在的文件。将证书移动到此处或创建一个链接,您应该可以开始了。
0赞 jww 12/12/2015
Ruby 不应该在 OS X 上查找 OS,OS X 不使用 .系统和用户证书存储在钥匙串中。Ruby 应该与 OS X 上的 KeyChain 集成。cacert.pemcacert.pem
0赞 Stewart 12/12/2015
最好的方法是什么?你能发布一个例子吗?
19赞 Kevin 8/26/2012 #11

新的认证宝石旨在解决这个问题:

https://github.com/stevegraham/certified

评论

0赞 Evmorov 8/1/2014
兼容于 ruby 2.0.0p481 (2014-05-08) [i386-mingw32]
1赞 Isaac Betesh 5/20/2015
Rails 4.1.9、ruby-2.1.5 对我不起作用。我将其添加到 Gemfile 中,明确添加只是为了确定,并且没有任何变化。我错过了什么?bundlerequire "certified"
0赞 jww 12/12/2015
Ruby 不应该在 OS X 上查找 OS,OS X 不使用 .系统和用户证书存储在钥匙串中。Ruby 应该与 OS X 上的 KeyChain 集成。我不清楚为什么任何软件都会为它服从 OpenSSL。cacert.pemcacert.pemcacert.pem
4赞 Rahul 12/8/2012 #12

这对我有用。如果您使用 rvm 和 brew:

rvm remove 1.9.3
brew install openssl
rvm install 1.9.3 --with-openssl-dir=`brew --prefix openssl`
3赞 Alston 5/3/2013 #13

OSX解决方案:

安装最新的 RVM 稳定版

rvm get stable

使用 rvm 命令自动解决证书

rvm osx-ssl-certs update all

评论

1赞 Liron Yahdav 5/25/2013
我试过这个,但它对我不起作用。这是我的解决方案:stackoverflow.com/a/16741712/62
0赞 Chris Peters 8/18/2013
通过 RVM 安装 Ruby 2.0.0 后为我工作。
139赞 htanata 8/21/2013 #14

如果您在 OS X 上使用 RVM,则可能需要运行以下命令:

rvm osx-ssl-certs update all

更多信息请见:http://rvm.io/support/fixing-broken-ssl-certificates

以下是完整的解释: https://github.com/wayneeseguin/rvm/blob/master/help/osx-ssl-certs.md


更新

在 Ruby 2.2 上,您可能需要从源代码重新安装 Ruby 才能解决此问题。方法如下(替换为 Ruby 版本):2.2.3

rvm reinstall 2.2.3 --disable-binary

感谢 https://stackoverflow.com/a/32363597/4353Ian Connor

评论

2赞 Peter P. 11/19/2013
这是一篇更全面的文章,其中包含替代方案: railsapps.github.io/openssl-certificate-verify-failed.html
0赞 yang 4/13/2014
错误:已删除 rvm 更新。请参阅“rvm get”和 rvm“rubygems”CLI API
0赞 htanata 4/15/2014
@user432506 你是怎么得到这个错误的?我正在使用最新的稳定 RVM,它仍然有效。
0赞 inix 3/11/2015
我正在使用 pod install,这种方法效果很好,非常感谢。
4赞 Ian Connor 11/3/2015
这会工作一段时间,然后对我来说失败。对我有用的是运行,但您必须捆绑安装并重新开始。rvm reinstall 2.2.0 --disable-binary
7赞 Pratik Bothra 10/16/2013 #15

对我有用的最直接的答案是这个

sudo apt-get install openssl ca-certificates

瞧!!

评论

1赞 Stephen 6/19/2014
希望我能不止一次地投票,因为你为我节省了很多时间!
1赞 Pratik Bothra 6/19/2014
@Stephen - 我希望你也能:-)。它为我节省了很多时间,所以我想我会把它发布在这里,它也可能对其他人有所帮助。
7赞 Synthesis 10/21/2013 #16

带有 Homebrew 的 OS X 10.8.x:

brew install curl-ca-bundle
brew list curl-ca-bundle
cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem

评论

1赞 Sami Samhuri 11/14/2013
在 10.9 上也适用于我。
1赞 rogeriopradoj 12/31/2013
对我来说还好,OS X 10.9.1。棒!
0赞 sergserg 3/28/2014
当您必须寻找随机解决方案来解决这些愚蠢的问题时,某些东西会严重损坏。所有这些答案都做了一些完全不同的事情,而且它们似乎都在某个时候帮助了人们。跆拳道?
14赞 Fa11enAngel 9/11/2014
curl-ca-bundle 已从 brew 中移除
1赞 PackedUp 4/25/2014 #17

我遇到了好几天的麻烦,并且四处乱窜。事实证明,这个链接对我非常有帮助。它帮助我在 MAC OS X 9 上成功升级了 SSL。

12赞 Quv 7/16/2014 #18

虽然知道这是一个相当蹩脚的解决方案,但我仍然分享这一点,因为似乎很少有人在这里回答使用 Windows,我认为一些 Windows 用户(包括我)会喜欢一种简单直观的方法。

require 'openssl'
puts OpenSSL::X509::DEFAULT_CERT_FILE

这告诉您的 openssl 在哪里查找证书文件。我的名字不是路易斯,但我的名字是.路径可能因每个环境而异(例如 而不是 )。C:/Users/Luis/Code/luislavena/knap-build/var/knapsack/software/x86-windows/openssl/1.0.0l/ssl/cert.pemopenknapsackluislavena

即使通过控制台之后,路径也没有改变,所以......我在本地磁盘中创建了目录,并将证书文件放入其中。set SSL_CERT_FILE=C:\foo\bar\baz\cert.pemC:\Users\Luis\Code\luislavena\knap-build\var\knapsack\software\x86-windows\openssl\1.0.0l\ssl

虽然很蹩脚,但这肯定会奏效。

评论

2赞 Daniel Magliola 12/1/2014
明。很骇人听闻,但这是唯一能解决我问题的方法。
0赞 Wouter 4/10/2017
很好的调试方式...对我来说,用户是“贾斯汀”。谷歌搜索显示这似乎是 RubyInstaller 的已知问题。不幸的是,我自己创建该目录(+ pem 文件)并没有为我解决问题
0赞 abcd_win 12/3/2014 #19

这可能是SSL证书损坏/无效的问题。在 mac 上,您可以使用以下命令更新 SSL 证书:

rvm osx-ssl-certs update all
14赞 Jonathan 2/4/2015 #20

一个衬里在管理员提示中为 Windows 修复了它

choco install wget(首先看到 chocolatey.org)

wget http://curl.haxx.se/ca/cacert.pem -O C:\cacert.pem && setx /M SSL_CERT_FILE "C:\cacert.pem"

或者只是这样做:

gem sources -r https://rubygems.org/
gem sources -a http://rubygems.org/

Milanio的方法:

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

gem install [NAME_OF_GEM]

评论

1赞 milanio 11/6/2016
小改进 - 你只需要更新 ruby,然后你可以重新添加 https 源 - 这对我来说就像一个魅力: 宝石源 -r rubygems.org => 宝石源 -a rubygems.org => 宝石更新 --system => 宝石源 -r rubygems.org => 宝石源 -a rubygems.org => 宝石安装 [NAME_OF_GEM]
0赞 kAmol 11/2/2020
获取 rubygems.org 时出错:返回SSL_connect=1 errno=0 state=error:证书验证失败(无法获取本地颁发者证书)(api.rubygems.org/specs.4.8.gz)
4赞 Dave Brace 5/7/2015 #21

我遇到了这个问题,尽管我是 OSX 上的 RVM 用户,但建议的修复程序不起作用。rvm osx-ssl-certs update all

对我有用的修复程序是重新安装最新版本的openssl:

brew update
brew remove openssl
brew install openssl
2赞 Duccio Giovannelli 5/23/2015 #22

如果您在 /usr/local/etc/openssl 中有一个指向 cert.pem 的符号链接,请尝试这样做:

ruby -ropenssl -e "p OpenSSL::X509::DEFAULT_CERT_FILE" (should be /usr/local/etc/openssl)
cd /usr/local/etc/openssl
wget http://curl.haxx.se/ca/cacert.pem
ln -s cacert.pem 77ee3751.0 (77ee3751.0 is my symbolic link, should depend on the openssl version)
12赞 monteirobrena 6/23/2015 #23

我尝试使用 安装,但该软件包不再可用:curl-ca-bundlebrew

$ brew install curl-ca-bundle
Error: No available formula for curl-ca-bundle 
Searching formulae...
Searching taps...

在 Mac 上对我有用的解决方案是:

 $ cd /usr/local/etc/openssl/certs/
 $ sudo curl -O http://curl.haxx.se/ca/cacert.pem

在 your (或 for zsh) 中添加以下行:~/.bash_profile~/.zshrc

export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem

然后更新您的终端:

$ source ~/.bash_profile

评论

1赞 dnlmzw 7/12/2015
这对我有用 - 但路径是错误的。应该是:export SSL_CERT_FILE=/usr/local/etc/openssl/certs/cacert.pem
2赞 auxbuss 8/13/2015
这是一个很好的解决方案,因为它很简单。此外,通过引用 中添加的证书,它会提醒在需要进一步更新时添加的内容(以及至关重要的位置)。~/.bash_profile
0赞 hummmingbear 1/9/2016
这对我有用。@dnlmzw这条路对我来说很好,但当然这取决于你的设置。谢谢!
0赞 sixty4bit 8/18/2016
尝试将使用自签名证书的私有 gem 服务器 URL 添加到我的 gem 源时对我不起作用。OSX 10.11.6 + rbenv
24赞 paulmorar 7/25/2015 #24

在 OSX 上出现此错误的原因是 rvm 安装的 ruby。

如果你在OSX上遇到这个问题,你可以在这篇博文中找到一个非常广泛的解释:

http://toadle.me/2015/04/16/fixing-failing-ssl-verification-with-rvm.html

简而言之,对于某些版本的 Ruby,RVM 会下载预编译的二进制文件,这些二进制文件会在错误的位置查找证书。通过强制 RVM 下载源代码并在您自己的计算机上编译,可以确保证书位置的配置正确。

执行此操作的命令是:

rvm install 2.2.0 --disable-binary

如果您已经拥有相关版本,可以使用以下命令重新安装它:

rvm reinstall 2.2.0 --disable-binary

(显然,根据需要替换您的 Ruby 版本)。

评论

0赞 Cristian 9/4/2015
这对我有用。您指向的博客文章也很有用,谢谢!
2赞 rylanb 10/25/2015
这在 El Capitan 上对我有用。我内爆了rvm(rvm内爆)。再次安装,然后有一次我也这样做了,因为这些是一些前沿问题。\curl -sSL https://get.rvm.io | bash -s stable --autolibs=homebrewrvm install <ruby-version> --disable-binaryrvm get head
0赞 laimison 6/29/2018
只有这个解决方案对我有用,因为最初我在 El Capitan 上安装了 Ruby 2.0.0,并且由于某种原因,旧版本即使使用正确的 .之后,问题解决了。SSL_CERT_FILErvm install 2.2.0 --disable-binary
4赞 Wraithseeker 10/3/2015 #25

我通过在终端中运行它解决了这个问题。完整的文章可以在这里找到

rvm install 2.2.0 --disable-binary
3赞 Tarun Rathi 11/19/2015 #26

如果你在本地运行 rails 应用程序,那么只需在 application.rb 的底部添加这一行即可。

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

在此之后,您可以毫无问题地使用该应用程序。你可以称它为黑客,但不建议这样做。仅当需要在本地运行时使用

10赞 Henry 2/16/2016 #27

我在做一个Ruby项目时也遇到了同样的问题。我使用的是 Windows 7 64 位。

我通过以下方式解决了这个问题:

  1. http://curl.haxx.se/ca/cacert.pem 下载 cacert.pem 文件。
  2. 将该文件保存到 C:/RubyCertificates/cacert.pem
  3. 然后将我的环境变量“SSL_CERT_FILE”设置为“C:\RubyCertificates\cacert.pem”

来源: https://gist.github.com/fnichol/867550

评论

0赞 Christian Baumann 4/12/2016
由于是 Windows,因此应在环境变量的值中使用 backslahes。
0赞 DonBecker 11/23/2016
这是修复 RubyGems SSL 错误后为我修复“捆绑”的唯一解决方案
1赞 Albert.Qing 3/15/2016 #28

有时在MAC OSX中并不总是rvm的问题,如果您删除.rvm,问题仍然存在(特别是在您从timemachine备份数据时),您可以尝试这种方式。

1.brew update
2.brew install openssl
1赞 user2573222 3/19/2016 #29

添加到我的并运行为我解决了这个问题。gem 'certified', '~> 1.0'Gemfilebundle

0赞 bruckerrlb 3/22/2016 #30

在Ubuntu上安装以下软件包为我解决了这个问题

sudo apt-get install libssl-dev

18赞 Nitish Kumar 3/27/2016 #31

只需在 gemfile 中添加 gem 'certified' 并运行 bundle install。

  1. 宝石认证'
  2. 捆绑安装

评论

0赞 mcmlxxxiii 4/1/2016
确认这对 El Capitan 有帮助。谢谢!
0赞 Szymon Rut 7/22/2017
它与 Rails 和 Debian 完美配合:)非常感谢!
-1赞 Jesse Farmer 5/26/2016 #32

将此添加到您的 gemfile:

gem 'cliver', :git => 'git://github.com/yaauie/cliver', :ref => '5617ce'

1赞 Saurin Parikh 6/20/2016 #33

只需运行可执行文件,此命令将确保您的所有证书都是最新的。certified-update

这适用于我在 Windows 中的 Ruby on Rails 应用程序。

0赞 ndnenkov 6/21/2016 #34

我不得不重新安装 Ruby。如果您使用的是 Ubuntu 和 rbenv,这应该可以解决它:

rbenv uninstall your_version

# install dependencies
sudo apt-get install autoconf bison build-essential libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm3 libgdbm-dev

# install ruby with patch
curl -fsSL https://gist.github.com/mislav/055441129184a1512bb5.txt | \
  rbenv install --patch your_version

有关更多信息,请查看有关此事的 rbenv Wiki

1赞 singh2005 10/19/2016 #35

最新的 rubygem-update-2.6.7 解决了这个问题。http://guides.rubygems.org/ssl-certificate-update/

2赞 suda 11/2/2016 #36

对我有用的是答案的组合,即:

# Reinstall OpenSSL
brew update
brew remove openssl
brew install openssl
# Download CURL CA bundle
cd /usr/local/etc/openssl/certs
wget http://curl.haxx.se/ca/cacert.pem
/usr/local/opt/openssl/bin/c_rehash
# Reinstall Ruby from source
rvm reinstall 2.2.3 --disable-binary
1赞 Uj Corb 2/23/2018 #37

Ruby 2.3.4 有这个问题:

我解决了它,卸载OpenSSL并重新安装它。我跑了:

brew uninstall --ignore-dependencies openssl

然后

brew install openssl

它完成了这项工作。