TLS证书失败,php至gmail

时间:2019-12-14 23:38:47

标签: php openssl gmail swiftmailer cradle

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:\Heroes\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php on line 95

https://cradlephp.github.io/

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

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

Openssl应该能够处理tls。我仔细检查了用户名/密码,端口是通过路由器转发的,防火墙具有异常,不同的端口,绕过dns并尝试传递cacert.pem

我将不胜感激建议。

1 个答案:

答案 0 :(得分:0)

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

您的CA证书包很可能已过期。 Gmail将几年前使用的CA更改为许多较旧的OS不支持的CA。软件包更新通常对此问题进行了修复(apt full-upgrade或服务器操作系统使用的任何等效方法也已修复),但有时并非如此。

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

在看不到其余SMTP对话的更多调试输出的情况下,我无法分辨出是哪个问题。

虽然我知道您使用的是SwiftMailer,但PHPMailer文档具有an extensive description of this problem and how to solve it,同样的措施也适用于SwiftMailer。