2017-03-31 24 views
2

私はAWS SDK V3 for PHPを使用して、顧客提供のキーを使用してサーバー側の暗号化を使用してS3にオブジェクトを配置しています。ドキュメントはかなりスケッチです(少なくとも私はそれを見つけられませんでした)。 S3clientを使用してオブジェクトをアップロードするためのCreateSignedURLの失敗PHPを使用したAWS SSE-C

は、私が

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

でのputObject使用します$ this-> encryptioncustkeyは、プレーン顧客キー(SDKがあることをやっているように見えるので、Base64エンコードされていない)と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 
    )); 

が、私はマニュアルに従って、SSE-Cのために必要とされていない、それは「X-AMZ-サーバー側の暗号化」に欠けていることを示している奇妙な応答(ServerSideEncryption)を取得します。 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> 

答えて

0

私は同じ問題に実行して、それが動作するように取得しようとするすべての可能な順列を試してみました。最後に、このユースケースはサポートされていないと結論付けました。 SSE-CのS3のコンテンツにアクセスする唯一の方法は、URLにないHTTPリクエストヘッダにx-amz-server-side-encryption-customer-algorithm/x-amz-server-side-encryption-customer-key/x-amz-server-side-encryption-customer-key-MD5のフィールドを指定することです。

私は何をやってしまったことは暗号化されていないとprivateに設定されたACLでS3 における問題のコンテンツを格納することである(あなたが行くを取得、またはそれらの設定でコピーを作成するcopyObject()を使用してから、そのようにアップロードできます)。次に、GET要求のために事前署名されたURLを取得したかったので、あなたの質問に似たコマンドを使用しましたが、SSEパラメータは省略しました。それは私のために働いた。

関連する問題