1

我在 Macbook(Catalina 10.15.7)上工作,并在我的本地机器上开发了一个 webapp。我使用 mailtrap.io 电子邮件测试服务来检查外发电子邮件。我没有更改任何内容,但几天前,mailtrap 服务返回以下错误消息:

ErrorException stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败 Illuminate\Foundation\Bootstrap\HandleExceptions::handleError vendor/swiftmailer/swiftmailer/lib/classes/Swift/传输/StreamBuffer.php:94

相同的代码和调用在远程服务器上工作正常,所以问题似乎与我的本地 mac 机器有关。

Macbook Catalina DST Root CA X3 过期问题

经过一番谷歌搜索后,似乎这个问题与DST Root CA X3 certificate 的到期有关。我阅读了有关该问题的两种可能的解决方案:

  1. 删除过期的证书并安装新的。
  2. 在我的机器上更新 OpenSSL

方法 #1 我尝试过,但没有帮助。我从 /etc/ssl/cert.pem 文件中删除了 DST Root CA X3 部分,并使用 Keychain Access 应用程序删除了所有 DST Root CA X3 实例。然后我使用 Keychain Access 应用程序安装了 ISRG Root X1 和 ISRG Root X2,将它们设置为始终信任。不幸的是,重新启动后我仍然收到相同的错误消息。

方法#2 第二种方法是在我的机器上更新 OpenSSL。“openssl 版本”命令告诉我我的机器上有 LibreSSL 2.8.3,所以我认为这是我需要更新的。检查 libreSSL 发行说明,似乎已经解决了这个问题。我安装了最新的 LibreSSL (3.3.5) 并将其添加到 PATH 变量中,但我仍然遇到同样的错误。似乎无论谁需要更高版本的 LibreSSL,它都不会使用它。

所以我的问题是:有人可以向我解释一下,上图中的哪个组件应该使用更高版本的 LibreSSL 并进行修复以避免邮件陷阱连接的原始问题?是操作系统、MAMP、Laravel、SwiftMail 组件还是我的 Webapp?基于此,我如何告诉该组件它应该使用 LibreSSL(或者我也可以安装的 OpenSSL)和修复?或者这个问题有更好的解决方案吗?

谢谢,W。

4

1 回答 1

0

最后我发现是我的 PHP 安装使用了过期的证书。从 PHPInfo 我可以确定 PHP 使用 OpenSLL 安装的位置。在此安装下,我必须从 .pem 文件中删除过期的 DST Root CA X3 根证书,现在一切正常。

于 2021-10-10T08:36:29.140 回答