S3上是否可以使用HTTPS而无需CloudFront?

56
我们目前希望通过AWS S3来托管我们所有的资产,并且我们也想通过https来提供所有服务。我知道我可以使用Amazon证书管理器(ACM)与CloudFront来提供https服务。问题是,我们处于医疗行业,法律禁止我们在欧盟境外托管任何内容。对于S3,我可以选择一个位置(对我们来说是法兰克福),但是对于Cloudfront,我只有这个选项:输入图像描述因此,我想我可以使用 Letsencrypt 生成自己的证书。但我认为我仍然需要使用ACM,而ACM仅适用于CloudFront,这意味着我仍然无法使用它。是否有人知道如果我可以以某种方式设置S3来使用https但没有 Cloudfront?
4个回答

36

很遗憾,您无法在S3中使用自定义域名的SSL证书。您可以使用Amazon SSL证书与S3域一起使用,例如:https://my-example-bucket.s3-website-us-east-1.amazonaws.com

如果您想要使用自定义域名的SSL,并且无法使用CloudFront,则需要考虑在S3之前放置其他代理,例如您自己的Nginx服务器或其他代理。


1
@kramer65 如果有符合您业务需求的CDN,您也可以考虑其他CDN而不是CloudFront。 - Mark B
18
我理解的是否正确,截至2018年6月,https://my-example-bucket.s3-website-us-east-1.amazonaws.com不再可用?看起来现在只能使用http? - paul
3
@Annjawn,所有这些都在原始问题中得到了解决。原始问题指出他们不想使用CloudFront。 - Mark B
3
在 https://docs.aws.amazon.com/general/latest/gr/rande.html 的“Amazon Simple Storage Service Website Endpoints”部分下有一条注释,指出“网站端点不支持https。”因此,这些 s3-website 端点不再支持 HTTPS。 - Raymond Tau
1
声明“Amazon S3 网站端点不支持 HTTPS。”已移至 https://docs.aws.amazon.com/AmazonS3/latest/userguide/WebsiteEndpoints.html。 - magicbacon
显示剩余4条评论

5
在AWS的API Gateway中,您可以创建一个代理资源/{proxy+},将其映射到s3-website
请确保映射到s3-website而不是单独的s3,这样当访问PATH/TO/DIR时,会返回PATH/TO/DIR/index.html,并且其他可能需要的内容也能正常工作。
API Gateway通过HTTPS提供服务,可以选择使用您自己的域名。
然而,这并不是很好的选择,因为您必须手动添加所有允许的HTTP返回代码,并且在请求中有10MB的有效负载限制,因为该服务旨在用于REST API。

1
API网关并没有比CloudFront更便宜。除了是 hacky 解决方案外,您无法通过 http 连接到 API 网关。由于大多数浏览器默认使用 http,如果没有指定协议,这会导致不良体验。CloudFront 可以将 http 重定向到 https。如果您正在为 API 使用 API 网关,则非常好。但对于 HTML 网站,请使用 CloudFront 或非 AWS 服务。 - Tim Ludwinski

1
以下是一个有用的资源时间表。 S3和CloudFront都可在欧盟使用。 您可以通过CloudFront展示S3。
我了解在领土范围内托管的要求。您可以通过欧盟地区的S3实现该要求。 CloudFront不是托管服务,而是使用高性能租赁线路和可管理的端点缓存的CDN(内容交付网络)。您正在考虑的问题是价格选项,而不是托管位置。如果您想在欧盟提供内容,则需要“价格类别100”或“价格类别全部”。
使用CloudFront时,您可以控制可以访问您材料的IP范围以及前端和后端流量的加密。查看一些设计模式。
有一些出色的白皮书和设计模式可用于设置安全的CloudFront。我认为您会发现您可以做您想要的,并且完全符合法律要求。

http://docs.aws.amazon.com/general/latest/gr/rande.html#s3_region https://aws.amazon.com/compliance/eu-data-protection/

还可以查看AWS文档“使用https-cloudfront-to-s3-origin”和“custom-ssl-domains”

P.S.确保将存储桶权限设置为仅通过CloudFront通道可用。

RL


1

CloudFront有一个针对国家进行白名单/黑名单的功能。我建议您在使用您列出的三个CDN选项时,尝试使用欧盟国家的白名单。但是,我不确定验证其他国家(例如美国)被拒绝的最简单方法是什么。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接