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