Ubuntu 14 上的 cURL:所有 Let's Encrypt 证书均已过期(错误 60)

Fin*_*sse 41 https ssl-certificate ubuntu-14.04 letsencrypt

今天,我的 Ubuntu 14 服务器发送到具有 Let's Encrypt 颁发的 SSL 证书的网站的所有 HTTPS 请求突然开始失败。cURL 产生的错误是:

curl: (60) SSL certificate problem: certificate has expired
Run Code Online (Sandbox Code Playgroud)

当我使用以下命令检查网站证书时:

curl: (60) SSL certificate problem: certificate has expired
Run Code Online (Sandbox Code Playgroud)

我看到所有证书链都是最新的。

那么为什么我会收到过期错误呢?如何修复它?

Fin*_*sse 60

原因是“DST Root CA X3”证书昨天已过期。

要修复它,只需禁用服务器上的证书即可。跑步:

sudo dpkg-reconfigure ca-certificates
Run Code Online (Sandbox Code Playgroud)

在第一个屏幕上提示“信任来自证书颁发机构的新证书吗?” 选择“是”。在下一个屏幕上,按键盘上的向下箭头键,直到找到mozilla/DST_Root_CA_X3.crt,按空格键取消选择它( 应该[*]变成[ ]),然后按 Enter。

  • 我提出这个问题是因为重要的是人们要知道问题是**不是** Let's Encrypt 拥有错误或不受支持的证书链。这是客户端的软件损坏,错误地应用了验证证书链的规则。 (36认同)
  • 您应该添加*为什么*这有效的解释。它正在解决过时发行版上旧软件(旧 OpenSSL 版本,也许还有其他 TLS 库)中的一个错误,当它看到可以证明链有效性的过期根证书时,它会立即停止查找并给出错误,而不是而不是继续寻找另一个未过期的根来证明有效性。 (32认同)
  • @R..GitHubSTOPHELPINGICE 谢谢!这是我的想法,但我无法验证这是否属实。当您禁用“DST Root CA X3”证书时,将使用[“ISRG Root X1”证书](https://letsencrypt.org/certs/isrgrootx1.pem)(有效期至 2035 年)。 (3认同)

mik*_*kep 31

编辑文件 /etc/ca-certificates.conf

找到并评论!这样的行

!mozilla/DST_Root_CA_X3.crt

保存文件并使用命令更新证书

sudo update-ca-certificates

  • 完成此操作的“一行”是: `sudo sed -i -e 's=^mozilla/DST_Root_CA_X3.crt=!mozilla/DST_ROOT_CA_X3.crt=' /etc/ca-certificates.conf && sudo update-ca -证书` (2认同)
  • 你把它的大写在这里给我塞满了。仍然给出错误,直到我回去并将 ROOT 更改为 Root。它应该是 ```sudo sed -i -e 's=^mozilla/DST_Root_CA_X3.crt=!mozilla/DST_Root_CA_X3.crt=' /etc/ca-certificates.conf && sudo update-ca-certificates``` (2认同)

Mar*_*ope 7

仅供参考,在 CentOS 之类的(基于 RPM 的)系统上,使用:

yum reinstall ca-certificates

  • @music2myear:我想从技术上来说并不是这样,因为OP专门询问了有关Ubuntu的问题。也就是说,在稍微不同的设置(例如比 OP 更新的操作系统版本、不同的 Linux 发行版等)中解决相同问题的 IME 答案通常被认为是有用且受欢迎的补充。这似乎是一个影响多个 Linux 发行版的问题,使用 Ubuntu 以外的其他版本的人也可能在 Google 上找到此问答。为 CentOS 和其他基于 yum 的系统提供答案对他们很有帮助。 (6认同)
  • 我问Ubuntu是因为我使用Ubuntu。如果同样的问题发生在另一个系统上并且有类似的解决方案,那么它就是这个问题的主题。 (2认同)