简体   繁体   English

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

[英]Laravel certificate verification errors when sending TLS email

Windows 10, Apache httpd 2.4, PHP 7.1.4, Laravel 5.5 Windows 10、Apache httpd 2.4、PHP 7.1.4、Laravel 5.5
Gmail's less secure is Allowed. Gmail 的安全性较低是允许的。


My.env file:我的.env 文件:

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

Error Message:错误信息:

Connection could not be established with host smtp.gmail.com无法与主机 smtp.gmail.com 建立连接


MAIL_PORT=587
MAIL_ENCRYPTION=tls

Error Message:错误信息:

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed stream_socket_enable_crypto():SSL 操作失败,代码为 1。OpenSSL 错误消息:错误:14090086:SSL 例程:ssl3_get_server_certificate:证书验证失败

How can I resolve the "certificate verify failed" error?如何解决“证书验证失败”错误?

I found the solution. 我找到了解决方案。 No need to change guzzlehttp/guzzle/src/Client.php which is suggested in another question. 无需更改guzzlehttp / guzzle / src / Client.php,这在另一个问题中建议。

Solution: 解:

  1. Download cacert.pem file from https://curl.haxx.se/docs/caextract.html https://curl.haxx.se/docs/caextract.html下载cacert.pem文件
    Put the cacert.pem somewhere you like. 将cacert.pem放在您喜欢的地方。

  2. Edit php.ini 编辑php.ini

two lines: 两行:

curl.cainfo=D:/Servers/php/sslfiles/cacert.pem  
openssl.cafile=D:/Servers/php/sslfiles/cacert.pem 
  1. Restart apache httpd. 重新启动apache httpd。

When you receive ssl certificate verification error, You can set these two variables in.env file:当您收到 ssl 证书验证错误时,您可以在 .env 文件中设置这两个变量:

MAIL_PORT=587
MAIL_ENCRYPTION=tcp

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM