如何使用签名URL获取Amazon s3加密对象?

时间:2015-08-18 16:30:07

标签: php amazon-web-services encryption amazon-s3

我为s3对象创建了一个签名网址。

使用客户提供的加密密钥'服务器端加密来存储对象。

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

  

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

我需要以某种方式让我的客户端发送" x-amz-server-side-encryption-customer-algorithm"和" x-amz-server-side-encryption-customer-key"到达URL之前的标题。

我知道如何实现这一目标?

1 个答案:

答案 0 :(得分:1)

在对URL进行签名时,应在服务器端使用“ x-amz服务器端加密客户算法”和“ x-amz服务器端加密客户密钥”需要在请求中添加任何标头。

我不知道PHP语法,但是在Java SDK中,它的工作方式如下:

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

OR

 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方法时,您不应做任何空间操作。

有关更多信息,请参阅本指南:Generating Amazon S3 Pre-signed URLs with SSE

Raz