gpt4 book ai didi

php - 使用 PHP 的 CreateSignedURL 失败 AWS SSE-C

转载 作者:搜寻专家 更新时间:2023-10-31 21:50:49 26 4
gpt4 key购买 nike

我一直在使用适用于 PHP 的 AWS SDK V3 将对象放入 S3,并使用客户提供的 key 进行服务器端加密。该文档非常粗略(或者至少我还没有找到它)。

为了使用 S3client 上传对象,我使用了 putobject

        $params['SSECustomerAlgorithm'] = 'AES256';
$params['SSECustomerKey'] = $this->encryptioncustkey;
$params['SSECustomerKeyMD5'] = $this->encryptioncustkeymd5;

$this->encryptioncustkey 是一个普通的客户 key (不是 base64_encoded,因为 SDK 似乎正在这样做)并且 this->encryptioncustkeymd5 = md5($this->encryptioncustkey,true);

put 对象工作正常。但是,问题在于生成 createSignedURL。

$cmd = $client->getCommand('GetObject', array(
'Bucket' => $bucket,
'Key' => $storedPath,
'ResponseContentDisposition' => 'attachment;charset=utf-8;filename="'.utf8_encode($fileName).'"',
'ResponseContentType' => $ctype,
'SSECustomerAlgorithm' => 'AES256',
'SSECustomerKey' => $this->encryptioncustkey,
'SSECustomerKeyMD5' => $this->encryptioncustkey64md5
));

但我收到一个奇怪的响应,表明它缺少“x-amz-server-side-encryption”(ServerSideEncryption),根据文档,SSE-C 不需要它。即使我将其设置为 ServerSideEncryption='AES256' 也没有任何效果。

<Error>
<Code>InvalidArgument</Code>
<Message>
Requests specifying Server Side Encryption with Customer provided keys must provide an appropriate secret key.
</Message>
<ArgumentName>x-amz-server-side-encryption</ArgumentName>
<ArgumentValue>null</ArgumentValue>
<RequestId>A3368F6CE5DD310D</RequestId>
<HostId>
nHavXXz/gFOoJT0tnh+wgFTbTgGdpggRkyb0sDh07H7SomcX7HrcKU1dDzgZimrQwyaVQEqAjdk=
</HostId>
</Error>

最佳答案

我遇到了同样的问题并尝试了所有可能的排列以尝试让它工作。我最终得出结论,不支持此用例。阅读有关该主题的分散而神秘的文档,似乎在 S3 上访问 SSE-C 内容的唯一方法是指定 x-amz-server-side-encryption-customer-algorithm/x-amz-server-side-encryption-customer-key/x-amz-server-side-encryption-customer-key-MD5字段HTTP请求 header ,不在 URL 中。

我最终做的是将有问题的内容存储在 S3 中未加密,并将 ACL 设置为 private(您可以从一开始就这样上传,或使用 copyObject() 来制作具有这些设置的副本)。然后,当我想获取 GET 请求的 ["time-bombed"] 预签名 URL 时,我只使用了与您问题中的命令类似的命令,但省略了 SSE 参数。这对我有用。

关于php - 使用 PHP 的 CreateSignedURL 失败 AWS SSE-C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43149679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com