【问题标题】:JetS3t and Server Side Encryption with Customer-Provided Keys使用客户提供的密钥进行 JetS3t 和服务器端加密
【发布时间】:2016-05-27 07:54:11
【问题描述】:
【问题讨论】:
标签:
java
amazon-web-services
encryption
amazon-s3
jets3t
【解决方案1】:
根据http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html 此处的文档,您需要在请求中添加以下标头:
-
x-amz-server-side-encryption-customer-algorithm 使用此标头指定加密算法。标头值必须是“AES256”。
-
x-amz-server-side-encryption-customer-key 使用此标头为 Amazon S3 提供 256 位、base64 编码的加密密钥,用于加密或解密您的数据。
-
x-amz-server-side-encryption-customer-key-MD5 使用此标头根据 RFC 1321 提供加密密钥的 base64 编码的 128 位 MD5 摘要。Amazon S3 使用此标头进行消息完整性检查,以确保加密密钥的传输没有错误。
如果您使用 Amazon Java 开发工具包,这样做很容易,并且在其文档中提供了示例。但要使用 JetS3t,您可以执行以下操作:
假设 s3Object 是您尝试放在 S3 上的对象,请为上述每个具有适当值的标头调用以下代码。
s3Object.addMetadata("<header>", "<header_value>")