【问题标题】:HTTPS for Amazon S3 static website [closed]Amazon S3 静态网站的 HTTPS [关闭]
【发布时间】:2013-03-21 03:06:44
【问题描述】:

我想使用 Amazon S3 和 CloudFront 托管一个仅支持 HTTPS 的静态网站。这是我到目前为止所做的:

  1. 为静态网站托管设置 S3 存储桶并将我的网站文件放入其中
  2. 创建了 CloudFront 分配并将其指向 S3 存储桶
  3. 在我的域的名称服务器中为指向 CloudFront 存储桶的 www 子域添加了 CNAME 记录。

到目前为止,一切顺利 - 我可以使用www.example.com 地址访问我的网站。但是,我希望该站点只能通过 HTTPS 访问,为此我从 GoDaddy 购买了 SSL 证书。

现在的问题是:

  1. 有没有办法在我的 S3 托管网站上安装此第三方 SSL 证书?
  2. 有没有办法通过此设置自动将 http 重定向到 https?

【问题讨论】:

  • 我可以免费做吗?
  • 您可以从亚马逊免费获得 SSL 证书,它会自动更新。 aws.amazon.com/certificate-manager 向下滚动到美元符号图标:)
  • 我投票结束这个问题,因为它不涉及编程
  • 为什么不将问题移至 ServerFault?
  • @nueverest 因为它太旧了,无法迁移。

标签: ssl https amazon-s3 amazon-cloudfront


【解决方案1】:

是的,从今天开始,您可以免费进行此操作。

您现在可以在 CloudFront 上使用 HTTPS 和 CNAME,因为它现在支持使用服务器名称指示 (SNI) 的自定义 SSL 证书:http://aws.typepad.com/aws/2014/03/server-name-indication-sni-and-http-redirection-for-amazon-cloudfront.html

我设法在 S3 上为我的 CloudFront 分布式静态站点设置了免费的 1 类 StartSSL 证书,没有太多麻烦(请参阅:CloudFront error when serving over HTTPS using SNI)。

【讨论】:

  • 反馈:布莱斯费希尔的指南非常好。
  • 这里有一个微妙之处。您可以为 S3 存储桶 if it is not configured for website hosting 设置 HTTPS。请参阅“网站端点不支持 https”的说明。
  • 好的,为了超越“微妙”并用简单的英语描述,这是我的尝试。只需单击几下,即可将具有静态网页内容 (html) 的 S3 存储桶转换为网站。本网站只能使用http。如果你想要 https,你必须使用 AWS 的 Cloudfront 服务并将其配置为 SNI 以免费获得 https。 (一些非常老的或奇怪的浏览器不支持 SNI。) html 和其他资源可以低成本存储在 S3 上。此外,如果您从 AWS 获取域名,则必须使用他们的 Elastic Load Balance 服务。费用为每场演出几美分。
【解决方案2】:

AWS 于 2016 年 1 月 21 日推出 AWS Certificate Manager,这是一项免费服务,可让您颁发 SSL 证书以与 Elastic Load Balancer 和Cloud Front(还有 S3)。

您可以在以下位置了解更多信息: https://aws.amazon.com/certificate-manager/

您可以查看如何使用来自 AWS 的免费 SSL 部署您的 S3 + Cloudfront 网站: https://aws.amazon.com/blogs/aws/new-aws-certificate-manager-deploy-ssltls-based-apps-on-aws/

【讨论】:

  • 我今天早上刚刚为我的网站设置了这个。这是一个托管在 s3 中的静态站点。这超级简单。我只是去了 acm 管理器,请求了一个证书,在我的电子邮件设置中摆弄了几个小时(最终在我等待确认电子邮件时公开了我的 WHOIS 信息),然后将 route53 设置为指向云端端点.很高兴我找到了这条评论。
  • @paranoid 有了这个,我可以将我的 s3 网站托管为仅 https 吗?
  • @PiyushS.Wanare 是的,你可以!
  • 将HTTPS链接放入Route53的CNAME记录中。
  • @paranoid 不确定您所说的“云端端点”是什么意思。我从哪里获得这些信息?
【解决方案3】:

截至今天,Cloudfront 提供自定义 SSL:http://aws.amazon.com/cloudfront/pricing/

请记住,他们每月收费 600 美元。更多详情请参见上面的链接。

【讨论】:

  • 600/月......
  • 如果您想要一个专用 IP 地址,您只需支付 600 美元。如果您乐于使用 SNI(旧版浏览器不支持),则无需支付额外费用
  • 如果你愿意只支持现代浏览器(通过 SNI),现在便宜多了:aws.amazon.com/about-aws/whats-new/2014/03/05/…
  • 现在免费! aws.amazon.com/certificate-manager 向下滚动到美元符号图标。另外,我认为它们会自动更新。设置就像在证书上输入您想要的域并单击随后电子邮件中的验证链接一样简单。
【解决方案4】:

对我来说,我必须将一个简单的 React 网站上传到 S3。 正如 barbolo 所描述的,您需要一个证书才能通过 SSL 访问站点。 如果您要部署的静态站点足够简单,您可以:

  1. 上传到 S3。
  2. 不要不要选择“静态网站托管”
  3. 将所有相对链接(到 css、js 等)转换为绝对链接。

例如从 /css/media.css 你应该将它转换为 https://s3-region-amazonaws.com/bucket-name/css/media.css (对我来说,我只需要更改 index.html 中的链接)

  1. 只公开存储桶的内容。

就是这样。您可以通过https访问索引文件。

简单站点是一个站点,其主 index.html 文件指向一些 css 和 js 页面。

【讨论】:

  • 太棒了。谢谢
  • 如果您的应用以生产为目标,这是个坏主意。
  • sébastien 请与我们分享更多细节,为什么这是个坏主意。我们向不存储桶的对象授予公共读取访问权限。
  • 这是一种很好且最简单的方法,但请记住,对于应用程序中的每个文件,请求都会在 Internet 上传输,这会降低应用程序的性能。在这种情况下,最好使用 CloudFront。
  • @NiteshB.CloudFront 在您需要经常更新您的 S3 对象时很麻烦
【解决方案5】:

除了@wikichen 的回答。

发件人:https://aws.amazon.com/cloudfront/custom-ssl-domains/

默认情况下,您可以在 URL 中使用 CloudFront 分配域名,通过 HTTPS 将内容传送给查看者,例如,https://dxxxxx.cloudfront.net/image.jpg

如果您想使用自己的域名和自己的 SSL 证书通过 HTTPS 传送您的内容,您可以使用我们的自定义 SSL 证书支持功能之一。

【讨论】:

    猜你喜欢
    • 2018-06-28
    • 2019-12-22
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 1970-01-01
    • 2011-07-11
    相关资源
    最近更新 更多