OpenSSL 证书验证失败:Letsencrypt 根已过期

OpenSSL certificate verify failed: Letsencrypt root expired

我在本地 machine 上开发了一个网络应用程序,并使用 mailtrap.io 电子邮件测试服务来检查外发电子邮件。我没有做任何更改,但几天前 mailtrap 服务返回以下错误消息:

ErrorException stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

Mailtrap 建议如下:

关于尝试向 Mailtrap 发送电子邮件时出现 SSL 错误 你并不孤单。请更新您的 OpenSSL 版本 您可能听说过 Letsencrypt 证书的全球性问题:它的旧根证书已于 9 月 30 日过期。主要影响使用 OpenSSL 1.1.0 之前版本的客户端。最常见的解决方案是更新您的 OpenSSL。如果你不能这样做 read the recipe for v.1.0.2 from OpenSSL.

阅读链接文章并没有真正帮助我解决问题。

在 parellel 中,我发现 this page 解释了如何安装一些新证书以避免类似问题,但没有帮助。

我也按照 的描述删除了过期的证书,但仍然收到相同的错误消息。

我在 mac (Catalina 10.15.7) 上工作,现在我正在考虑以某种方式更新我的 machine 上的 openssl。 openssl 版本告诉我我的 machine.

上有 LibreSSL 2.8.3

我走在正确的轨道上吗?我应该将 LibreSSL 更新到最新版本来解决这个问题吗?我怎么做?有没有什么副作用?有更好的办法解决这个问题吗?

感谢您的任何建议, W.

我终于可以在不升级任何东西的情况下解决这个问题。关键点是从 PHPInfo 中意识到我的 PHP 使用了在我的 MAMP 安装下安装的 openSLL。我不得不从此安装下的 .pem 文件中删除过期的 DST Root CA X3 根证书,现在一切正常。

让我们试试 Linux:

apt-get update
apt install ca-certificates openssl