【发布时间】:2016-09-11 21:24:40
【问题描述】:
我在我的 django 应用程序中使用S3BotoStorage 作为我的DEFAULT_FILE_STORAGE。因此,我上传到我的应用程序的所有文件都上传到 S3 存储桶。
我想使用 SSE-C 加密我的文件,所以我遵循 AWS 提供的文档here。我将以下行添加到我的settings.py
# settings.py
AWS_S3_ENCRYPTION = True
key = ...
key_md5 = ...
AWS_HEADERS = {
'x-amz-server-side-encryption-customer-algorithm': 'AES256',
'x-amz-server-side-encryption-customer-key': key,
'x-amz-server-side-encryption-customer-key-MD5': key_md5,
}
但是一旦我添加了这些标题,我就会开始收到以下错误。
[Error 104] Connection Reset by Peer
文件上传在没有标题的情况下工作正常。
我不明白为什么会这样?
如果需要更多详细信息,请告诉我。
【问题讨论】:
-
由于您使用第三方调用 API,您应该检查并使用 codebase 参数,因为它会覆盖并忽略它不理解的内容。并在源代码中搜索“加密”:github.com/jschneier/django-storages/blob/master/storages/…,看来您只需要启用一个参数。
-
@mootmoot 感谢您指出这一点,但我已经启用了您正在谈论的那个参数。我已经更新了问题描述。
-
请说明您是要使用自己的 OWN 加密密钥还是使用 S3 加密?
-
我想通过客户提供的加密密钥 (SSE-C) 机制使用 S3 的服务器端加密。这是文档的链接。 docs.aws.amazon.com/AmazonS3/latest/dev/…
-
快速浏览一下 boto2 S3 API(S3BotoStorage 正在使用),它不支持自定义加密。您可能需要修补 S3BotoStorage 或编写自己的代码以使用支持它的 boto3。
标签: python django encryption amazon-s3 boto3