我正在探索将加密数据存储到 S3 的选项。我的后端是用 Java 构建的,我已经在使用 JetS3t 库进行一些简单的 S3 存储操作。所以,我的问题是:如何将 JetS3t 与 S3's Server Side Encryption with customer-provided keys (SSE-C) 一起使用在 S3 上以加密格式存储文件?
我试图查看 JetS3t 的程序员指南,但在这方面没有找到任何具体内容。
最佳答案
根据此处的文档 http://docs.aws.amazon.com/AmazonS3/latest/dev/ServerSideEncryptionCustomerKeys.html ,您需要在请求中添加以下 header :
-
x-amz-server-side-encryption-customer-algorithm
使用此 header 指定加密算法。 header 值必须是“AES256”。 -
x-amz-server-side-encryption-customer-key
使用此 header 为 Amazon S3 提供 256 位、base64 编码的加密 key ,以用于加密或解密您的数据。 -
x-amz-server-side-encryption-customer-key-MD5
使用此 header 根据 RFC 1321 提供加密 key 的 base64 编码的 128 位 MD5 摘要。Amazon S3 使用此 header 进行消息完整性检查以确保加密 key 传输无误。
如果您使用 Amazon Java SDK,这样做很容易,并且在其文档中提供了示例。但要使用 JetS3t 执行此操作,您可以执行以下操作:
假设s3Object
是您尝试放在 S3 上的对象,请使用适当的值为上述每个 header 调用以下命令。
-
s3Object.addMetadata("<header>", "<header_value>")
关于java - JetS3t 和使用客户提供的 key 的服务器端加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35425734/