Laravel 邮件发送 Amazon SES 不再支持 TLS 1.0 和 TLS 1.1 连接

问题描述 投票:0回答:1

我在 ubuntu ec2 上使用 laravel 5.1 和 php 5.6.40。我有一个非常大的项目,无法在几个小时或几天内更新。 我检查了我的服务器 openssl 版本,它是 OpenSSL/1.1.1,并且我使用以下命令从我的电脑到我的网站进行了测试 curl --tlsv1.2 https://mywebsite.com 我得到了 html 页面的成功响应 我还使用检查了我的 ubuntu 上的 openssl 版本 openssl s_client -connect mywebsite.com:443 -tls1_2 我还得到了“已连接”回复 我还检查了 swiftMailer 版本,它是 5.4.12 支持 tls1.2 但是 laravel 中的 mail::send 因错误而崩溃 异常“Swift_TransportException” 消息“预期响应代码 250,但收到代码“554”,消息“554 访问被拒绝:Amazon SES 不再支持 TLS 1.0 和 TLS 1.1 连接。 您必须更新您的客户端才能使用 TLS 版本 1.2 或更高版本。

知道如何解决吗?

我尝试了什么都没有,因为如果我检查的所有版本都支持 tls 1.2,我不知道是什么导致了问题 PHP:5.6.40 Openssl:1.1.11

laravel amazon-web-services email ssl amazon-ses
1个回答
0
投票

已解决: 如果您的服务器启用了正确版本的 open ssl、php 和 tls1.2,但在 swiftmailer 中仍然面临此问题

转到 laravel 根目录,然后是vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport

打开streambuffer.php找到startTLS()函数

替换为

公共函数startTLS() { 返回stream_socket_enable_crypto($this->_stream, true, STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT); }

现在 swift 将仅使用 tls 1.2

这是使用 php 5.6 和 laravel 5.1 的解决方案

© www.soinside.com 2019 - 2024. All rights reserved.