【问题标题】:TLS certificate failure, php to gmailTLS 证书失败,php 到 gmail
【发布时间】:2019-12-14 23:38:47
【问题描述】:
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 的 cradle -> openssl -> swiftmailer 来连接到 gmail。

发送 smtp.gmail.com:587 时出现上述身份验证错误

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

非常感谢您的建议。

【问题讨论】:

    标签: php openssl gmail swiftmailer cradle


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 2016-06-12
      • 2016-07-28
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 2016-09-01
      相关资源
      最近更新 更多