【问题标题】:OpenUri and OpenSSL unable to get local issuer certificateOpenUri 和 OpenSSL 无法获取本地颁发者证书
【发布时间】:2016-01-11 11:15:56
【问题描述】:

我正在使用 OpenUri 从 HTTPS 服务器读取 JSON 文件。几天前它工作正常,但今天早上我得到了:

OpenSSL::SSL::SSLError: SSL_connect returned=1 errno=0 state=error: certificate verify failed
The server presented a certificate that could not be verified:
error code 20: unable to get local issuer certificate

我认为服务器刚刚更新了它的 SSL 证书,所以我想知道这是否相关?否则我的系统是否丢失了根证书?

我正在运行 Mac OS 10.11.2、Ruby 2.3.0 和 OpenSSL 1.0.2e,与 Homebrew 一起安装,我使用 RVM。

【问题讨论】:

  • 如果服务器发生变化,要么是您没有所需的新根 CA,要么是服务器未能提供完整的证书链。也可能是您有一个新的 OpenSSL,但该 ruby​​ 与 Mac 的旧版本(即 0.9.8)相关联。细节太少,无法在这里为您提供更多帮助,但如果服务器是公开的,您可以将 URL 添加到您的问题中,以便查看。
  • 感谢@SteffenUllrich 我已经不得不重建 ruby​​ 以链接到新的 OpenSLL。如果您想了解更多,服务器是 kimonolabs.com。

标签: ruby ssl homebrew open-uri


【解决方案1】:

服务器是kimonolabs.com

服务器不发送建立信任链所需的中间证书。因此验证失败。在这些情况下,浏览器通常会使用早期连接到其他站点的缓存中间证书,或者尝试从 Web 下载丢失的证书。但其他客户端不这样做,因此验证失败。

另见the report from SSLLabs

此服务器的证书链不完整。等级上限为 B。

因此,问题需要在服务器端解决。

【讨论】:

  • 谢谢,没想到会破坏它。希望他们能尽快解决这个问题。
猜你喜欢
  • 1970-01-01
  • 2014-12-03
  • 2016-04-20
  • 2018-05-15
  • 2012-07-17
  • 1970-01-01
  • 2020-09-18
  • 2017-08-31
相关资源
最近更新 更多