确认Laravel 5.1与AWS S3 Bucket连接强制使用TLS 1.2
Laravel 5.1 + PHP 5.6环境下S3 TLS 1.2配置验证问题
一、你的配置是否生效?
你在filesystems.php中添加的TLS 1.2配置在当前环境下是生效的,理由如下:
- PHP 5.6原生支持TLS 1.2,且
CURL_SSLVERSION_TLSv1_2常量在PHP 5.5及以上版本已存在,PHP 5.6可正常识别该常量。 - AWS SDK for PHP 3.x版本支持通过
options.http.curl传递curl参数,Laravel 5.1的S3驱动会将这些配置传递给底层AWS SDK客户端,强制连接使用TLS 1.2。
注意:你修改的Nginx配置仅控制用户访问Web服务时的TLS版本,和Laravel后端连接S3的TLS版本无关联,后端连接的TLS版本完全由filesystems.php中的配置决定。
二、如何验证连接使用了TLS 1.2?
提供三种可靠验证方式:
1. 启用AWS SDK调试日志
在filesystems.php的S3配置中添加日志参数,记录请求细节:
's3' => [ 'driver' => 's3', 'key' => 'myKey', 'secret' => 'MySecret', 'region' => 'eu-central-1', 'bucket' => 'myBucketName', 'options' => [ 'http' => [ 'verify' => true, 'curl' => [ CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2, CURLOPT_VERBOSE => true, CURLOPT_STDERR => fopen(storage_path('logs/s3_debug.log'), 'w'), ], ], ], ],
执行文件上传操作后,打开storage/logs/s3_debug.log,查找包含SSL connection using TLSv1.2的日志条目,即可确认TLS版本。
2. 服务器端curl命令测试
在服务器上执行以下curl命令(替换为你的桶名及测试文件路径),查看输出中的SSL协议信息:
curl -v https://your-bucket-name.s3.eu-central-1.amazonaws.com/OmegaCloud/test-file --tlsv1.2
若返回内容中出现SSL connection using TLSv1.2,则说明连接使用了目标TLS版本。
3. 查看AWS CloudTrail日志
登录AWS控制台,进入CloudTrail服务,筛选目标S3存储桶的访问事件,查看事件的TlsDetails字段,该字段会明确显示请求使用的TLS版本。
内容的提问来源于stack exchange,提问作者Elio Chamy
相关产品推荐
相关产品推荐

