3

我正在探索将加密数据存储到 S3 的选项。我的后端是用 Java 构建的,我已经在使用 JetS3t 库进行一些简单的 S3 存储操作。所以,我的问题是:如何使用 JetS3t 和S3 的服务器端加密和客户提供的密钥 (SSE-C)在 S3 上以加密格式存储文件?

我试图查看 JetS3t 的程序员指南,但在这方面没有找到任何具体的内容。

4

1 回答 1

2

根据此处的文档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 SDK,这样做很容易,并且在其文档中提供了示例。但要使用JetS3t这样做,您可以执行以下操作:

假设s3Object是您尝试放在 S3 上的对象,请为上述每个具有适当值的标头调用以下内容。

  • s3Object.addMetadata("<header>", "<header_value>")
于 2016-12-07T10:22:12.540 回答