如何获得带有签名URL的Amazon s3加密对象


How to get Amazon s3 Encrypted object with signed URL?

我已经为s3对象创建了一个签名URL。

对象使用"使用客户提供的加密密钥进行服务器端加密"进行存储。

现在,当我的客户端浏览到签名的URL时,他得到:

对象是使用服务器端加密形式存储的。必须提供正确的参数来检索对象

我需要让我的客户端在到达URL之前发送"x-amz-server-side-encryption-customer-algorithm"answers"x-amz-server-side-encryption-customer-key"报头。

知道怎么才能做到吗?

在服务器端签名URL时应使用"x-amz-server-side-encryption-customer-algorithm"answers"x-amz-server-side-encryption-customer-key",客户端不需要在请求中添加任何标头。

我不知道PHP的语法但是在Java SDK中是这样的

 generatePresignedUrlRequest = new GeneratePresignedUrlRequest(BUCKET_NAME, TOKEN)
 .withSSEAlgorithm(SSEAlgorithm.KMS.getAlgorithm())
 .withKmsCmkId("YOUR_KMS_KEY_ID");

 generatePresignedUrlRequest.addRequestParameter("x-amz-server-side-encryption", "aws:kms");
 generatePresignedUrlRequest.addRequestParameter("x-amz-server-side-encryption-aws-kms-key-id", "YOUR_KMS_KEY_ID");

当为GET方法签名时,你不应该做任何空格。

使用SSE生成Amazon S3预签名url

拉兹