确保Laravel 5.1使用TLS 1.2和AWS S3 bucket

ffx8fchx  于 2023-05-30  发布在  其他
关注(0)|答案(1)|浏览(161)

AWS s3存储桶需要tls1.2
我收到一封来自AWS的电子邮件,告诉我我的s3存储桶中有一些对象可以使用低于tls 1.2的tls版本访问,我必须更新我的客户端。我有一个遗留的laravel 5.1项目,运行在nginx/php5.6 fpm上,安装了aws-sdk 3.9.11,我使用s3::storage和s3->put让用户上传文件。
我检查了我的nginx配置,删除了tls1.0和1.1,只保留了tls1.2,但我不知道我是否需要改变一些东西来强制从我的laravel到s3桶的s3连接使用tls1.2
我还将这些配置添加到我的laravel项目app/filesystems.php中

's3' => [
            'driver' => 's3',
            'key' => 'myKey',
            'secret' => 'MySecret',
            'region' => 'eu-central-1',
            'bucket' => 'myBucketName',
            'options' => [
                'http' => [
                    'verify' => true,
                    'curl' => [
                        CURLOPT_SSLVERSION => CURL_SSLVERSION_TLSv1_2,
                    ],
                ],
            ],
        ],

这是我的上传控制器,我在这里添加文件到s3

function uploadCustomersCsv() {
    $maxsize = 1000000;

        $s3 = \Storage::disk(\Config::get('filesystems.default'));
        $destdir = 'OmegaCloud/'. \Session::get('custid') .'/'. 'importTemplates/uploads';
        if (!$s3->exists($destdir)) {
            $s3->makeDirectory($destdir);
        }
        if (Request::hasFile('image')) {
            $file = Request::file('image');
            $size = $file->getSize();
            $mime = $file->getMimeType();
            $ext = $file->getClientOriginalExtension();
            $type = Array(1 => 'csv');
            if (!(in_array($ext, $type))) {
                return response()->json(array(
                            'error' => 'Unsupported invoice file'
                ));
            }
            $destname = Str::slug(str_replace(".$ext", '', $file->getClientOriginalName()));
            $destfull = $destdir . '/' . $destname . '.' . $ext;
            $filecounter = 1;
            $duplicate = null;
            while ($s3->exists($destfull)) {
                $duplicate = $destname . '_' . $filecounter++;
                $destfull = $destdir . '/' . $duplicate . '.' . $ext;
            }
            if ($duplicate !== null) {
                $destname = $duplicate;
            }
           
            if ($s3->put($destdir .'/'. $destname .'.'. $ext, file_get_contents($file), 'public')) {
                return response()->json(array(
                            'path' => 'mys3path/' .$destdir .'/'. $destname .'.'. $ext,
                            'meta' => array(
                                'size' => $size,
                                'mime' => $mime,
                                'filename' => $destname .'.'. $ext
                            )
                ));
            } else {
                return response()->json('failed to move file' . $destfull, 501);
            }
        } else {
            return response()->json('NoFileException', 501);
        }
    }

在文件系统中的s3数组中添加这些选项以强制tls1.2,我想问它是否适用于我的php5.6和laravel 5.1,或者至少如何知道它现在是否使用tls1.2
谢谢你

osh3o9ms

osh3o9ms1#

我收到了来自AWS的确切电子邮件。他们提供了一些连接日志。经过调查,这是因为我的最终用户正在使用旧版本的Windows 10和TLSv 1。而不是我的服务器或Laravel
我使用AWS给我的连接日志中的user-agent字符串检查了这一点。
有关更多信息,您可以观看此AWS流:
https://www.twitch.tv/videos/1783721977
它们解释了可以使用旧TLSv 1的客户端程序。
希望这能帮上忙。

相关问题