本地主机和“stream_socket_enable_crypto():SSL 操作失败,代码为 1”

2022-08-31 00:10:47

我使用gmail发送电子邮件,一切都很完美,但突然停止工作。它向我展示了这一点

ErrorException in StreamBuffer.php line 94:

stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages:
error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed

in StreamBuffer.php line 94
at HandleExceptions->handleError('2', 'stream_socket_enable_crypto(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed', 'C:\xampp\htdocs\coparmex\vendor\swiftmailer\swiftmailer\lib\classes\Swift\Transport\StreamBuffer.php', '94', array())
at stream_socket_enable_crypto(resource, true, '9') in StreamBuffer.php line 94
at Swift_Transport_StreamBuffer->startTLS() in EsmtpTransport.php line 313
at Swift_Transport_EsmtpTransport->_doHeloCommand() in AbstractSmtpTransport.php line 118
at Swift_Transport_AbstractSmtpTransport->start() in Mailer.php line 79
at Swift_Mailer->send(object(Swift_Message), array()) in Mailer.php line 385
at Mailer->sendSwiftMessage(object(Swift_Message)) in Mailer.php line 171

这只发生在我的本地主机中,在Web主机中工作正常。我不明白发生了什么:c

这些是我的 gmail 设置

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=gmail
MAIL_PASSWORD=password
MAIL_ENCRYPTION=tls

答案 1

编者按:禁用SSL验证具有安全隐患。如果不验证 SSL/HTTPS 连接的真实性,恶意攻击者可以模拟受信任的终结点(例如 GitHub 或其他远程 Git 主机),并且您将容易受到中间人攻击在将其用作解决方案之前,请确保您完全了解安全问题。

你应该在 /config/mail 中添加以下代码.php ( 在 laravel 5.4 上工作 )

'stream' => [
'ssl' => [
    'allow_self_signed' => true,
    'verify_peer' => false,
    'verify_peer_name' => false,
],
],

因为您永远不应该按照苏丹艾哈迈德的建议更改供应商中的代码


答案 2

这是您的 SSL 证书的错误。您正在尝试在没有正确证书的情况下使用 SSL 连接(加密的安全连接)。

这是因为您从本地主机进行连接,这是不安全的,并且被连接阻止了。您可以通过将本地主机连接更改为基于SSL的连接来避免这种情况。

有关更多详细信息,请参阅此链接


推荐