如何处理 Laravel 的 SMTP 驱动程序中的自签名 TLS 证书?

新手上路,请多包涵

我正在尝试使用此配置发送电子邮件:

 return [

    'driver'     => 'smtp',

    'host'       => 'mail.mydomain.com',

    'port'       => 26,

    'from'       => ['address' => 'mailer@mydomain.com', 'name' => 'Mailer'],

    'encryption' => 'tls',

    'username'   => env('MAIL_USERNAME'),

    'password'   => env('MAIL_PASSWORD'),

    'sendmail'   => '/usr/sbin/sendmail -bs',

    'pretend'    => false,

];

当我提交表单时收到此错误:

 ErrorException in StreamBuffer.php line 95:
stream_socket_enable_crypto(): SSL operation failed with code 1.
OpenSSL Error messages:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

我找到了这个解决方案,人们似乎已经用同一个库解决了这个问题,但我无法在 Laravel 中解决它。

https://github.com/PHPMailer/PHPMailer/issues/368

原文由 Alan 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 547
2 个回答

那么在那个链接中,您提供的解决方案很简单。

正确的解决方案是修复您的 SSL 配置——这不是 PHP 的错!

如何解决?在 config/mail.php'driver' => env('MAIL_DRIVER', 'smtp'), 应该是 'driver' => env('MAIL_DRIVER', 'mail'), (来源: Danyal Sandeelo

原文由 geggleto 发布,翻译遵循 CC BY-SA 4.0 许可协议

_编者注_:禁用 SSL 验证具有 安全隐患。 如果不验证 SSL/HTTPS 连接的真实性,恶意攻击者可以冒充受信任的端点(例如 GitHub 或其他远程 Git 主机),您将容易受到 中间人攻击

在将其用作解决方案之前,请确保您完全了解安全问题。

在你的 config/mail.php 底部添加这个

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

这将解决您的问题。

原文由 M Arfan 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏