我们通过 Internet 提供静态内容,并且有一个业务要求,即必须对静态数据进行加密。目前它存储在 AWS S3 中,授权客户端可以通过 HTTP 访问它。我们可以通过 Cloudfront 或 Nginx 代理它以使用 TLS,但只有在必要时才会这样做。解密密钥由前端客户端通过单独的 HTTPS 请求检索。
鉴于静态内容已经加密,我们通过 HTTPS 提供静态内容是否有任何收获?它带来了额外的成本、基础设施和延迟,我想不出有什么好处。
我们通过 Internet 提供静态内容,并且有一个业务要求,即必须对静态数据进行加密。目前它存储在 AWS S3 中,授权客户端可以通过 HTTP 访问它。我们可以通过 Cloudfront 或 Nginx 代理它以使用 TLS,但只有在必要时才会这样做。解密密钥由前端客户端通过单独的 HTTPS 请求检索。
鉴于静态内容已经加密,我们通过 HTTPS 提供静态内容是否有任何收获?它带来了额外的成本、基础设施和延迟,我想不出有什么好处。
无论如何,您都应该通过 HTTPS 提供这些数据。正如 Gh0stFish 指出的那样,您可以简单地使用 S3 存储桶策略来要求这样做。
这有几个原因:
首先,您不需要使用 CloudFront 或 Nginx 代理 - 您只需使用S3 Bucket Policy强制执行 TLS 。
如果不详细了解您的用例究竟是什么,就很难知道在您的情况下是否有任何特定的好处。值得记住的是,TLS 不仅提供机密性,它还提供完整性(即保证数据没有被中间人篡改)——您当前的加密是否也提供了这一点?
根据您的静态内容到底是什么,如果您尝试通过 HTTP 加载它,您也可能会收到浏览器警告,因为浏览器会阻止混合的活动内容,其中包括 JavaScript 文件或 CSS 等静态内容。