OpenSSL error: certificate verify failed on Mac Catalina

OpenSSL error: certificate verify failed on Mac Catalina

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

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

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

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

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

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

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

所以我的 question:can 有人向我解释一下,上图中的哪个组件应该使用更高版本的 LibreSSL 和修复来避免 mailtrap 连接的原始问题?是 OS、MAMP、Laravel、SwiftMail 组件还是我的 Web 应用程序?基于此,我如何告诉该组件它应该使用 LibreSSL(或者我也可以安装的 OpenSSL)来修复?或者对于这个问题有更好的解决办法吗?

谢谢, W.

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