【发布时间】:2021-11-16 16:51:46
【问题描述】:
我的应用程序使用关闭 API (https://developer.close.com/) 来存储用户数据。我们的测试环境现在在尝试写入时出现 SSL 错误:
Faraday::SSLError (SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (certificate has expired))
原因可能是什么?我阅读错误消息的第一个假设是关闭证书可能已过期。但这似乎不太可能 - 服务通常维护良好,我们在生产中没有任何问题。
我考虑的下一件事是我们服务器上的证书存储可能已过时。这不会让我感到惊讶,因为服务器运行的是 Ubuntu 14 和 other people are experiencing problems there。但是我们有多台配置相同的机器,只有一台给我们带来了麻烦。这可能是根本原因吗?
【问题讨论】:
-
LetsEncrypt 兼容性链(该服务器使用的,和许多其他的一样)会导致“过期”,具体取决于所使用的 OpenSSL 版本(Trusty 提供 1.0.1f,但 API 可能不同)和证书存储,if 默认取决于 部分 ca-certificates 包(标准 repo 中的最后一个版本似乎是 20170717~14.04.2),但也取决于是否运行 @987654324 @ 删除了 expired DST 根目录(我已经看到了它的报告)。这两个不同的因素中的一个或两个都可以称为“过时”;哪个适合你的?
-
@dave_thompson_085 在损坏的机器上,我们有 openssl 1.0.1f 并且 DST 根目录没有被删除。运行 update-ca-certificates 也没有删除它。手动删除它解决了我的问题。