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 有关。我阅读了有关该问题的两种可能解决方案:
- 删除过期的证书并安装新的。
- 在我的 machine
上更新 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 根证书,现在一切正常。
我在写一本 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 有关。我阅读了有关该问题的两种可能解决方案:
- 删除过期的证书并安装新的。
- 在我的 machine 上更新 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 根证书,现在一切正常。