TLS 证书失败,PHP 到 Gmail


bin/cradle auth-verify-mail auth_id=1 auth_slug=taku.haider1987@gmail.com auth_updated=123456 host=localhost
PHP Warning:  stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in C:HeroesvendorswiftmailerswiftmailerlibclassesSwiftTransportStreamBuffer.php on line 95

https://cradlephp.github.io/

我正在使用 php 的 cradle -> openssl -> swiftmailer 连接到 gmail。

我在发送 smtp.gmail.com:587 时收到上述身份验证错误

Openssl应该能够处理TLS。我仔细检查了用户名/密码,端口通过路由器转发,防火墙有例外,不同的端口,绕过DNS并尝试通过cacert.pem

我将不胜感激。

您在这里遇到的问题是,当您通过 TLS 进行连接时,您的 TLS 客户端没有用于签署 Gmail 证书的公开根证书的副本,因此无法对其进行验证。

您的 CA 证书捆绑包很可能已过期。Gmail将几年前使用的CA更改为许多旧操作系统不支持的CA。这通常在软件包更新中得到修复(apt full-upgrade或服务器操作系统使用的任何等效项也是如此(,但有时并非如此。

另一种解释是,您要求客户端连接到Gmail,但连接被拦截并重定向到托管服务提供商的邮件服务器(这很常见(,这显然不提供与smtp.gmail.com匹配的证书,因此验证失败。

如果没有从SMTP对话的其余部分看到更多调试输出,我无法判断其中哪个是问题所在。

虽然我知道你正在使用SwiftMailer,但PHPMailer文档对这个问题以及如何解决它有广泛的描述,同样的措施也适用于SwiftMailer。

最新更新