发送 TLS 电子邮件时 Laravel 证书验证错误

Posted

技术标签:

【中文标题】发送 TLS 电子邮件时 Laravel 证书验证错误【英文标题】:Laravel certificate verification errors when sending TLS email 【发布时间】:2018-08-24 12:20:12 【问题描述】:

Windows 10、Apache httpd 2.4、php 7.1.4、Laravel 5.5 允许 Gmail 的安全性较低。


我的 .env 文件:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=465
MAIL_USERNAME=account@gmail.com
MAIL_PASSWORD=password
MAIL_ENCRYPTION=ssl

错误信息:

无法与主机 smtp.gmail.com 建立连接


MAIL_PORT=587
MAIL_ENCRYPTION=tls

错误信息:

stream_socket_enable_crypto():SSL 操作失败,代码为 1。 OpenSSL 错误消息: 错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败

如何解决“证书验证失败”错误?

【问题讨论】:

请查看answer 如果像 smtp.gmail.com 这样的知名域的证书验证失败,我怀疑有人劫持了你的 DNS。 laravel : cURL error 60: SSL certificate unable to get local issuer certificate的可能重复 @Webinion 您的回答无效。请查看我编辑的问题。 【参考方案1】:

解决方案:

    下载the cURL cacert.pem file

    把 cacert.pem 放在你喜欢的地方

    编辑php.ini 以引用此文件位置:

curl.cainfo = D:/Servers/php/sslfiles/cacert.pem
openssl.cafile = D:/Servers/php/sslfiles/cacert.pem
    重启网络服务器

【讨论】:

以上是关于发送 TLS 电子邮件时 Laravel 证书验证错误的主要内容,如果未能解决你的问题,请参考以下文章

如何生成用于SSL/TLS的数字证书

强制Chrome在TLS期间发送链中的所有证书

Laravel 5.4 - 单击电子邮件中的验证链接时未传递或发送电子邮件验证令牌令牌。

C#发送邮件异常:根据验证过程,远程证书无效

证书链和TLS Pinning

laravel 8 : 注册后发送邮件验证 laravel