Amazon S3静态网站的HTTPS [关闭]


90

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

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

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

现在,问题是:

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

1
我可以免费吗?
Piyush S. Wanare

您可以免费从Amazon获得SSL证书,它会自动续订。aws.amazon.com/certificate-manager向下滚动到美元符号图标:)
Costa Costa

1
我投票结束这个题为离题的问题,因为它不涉及编程
Zach Saucier

1
为什么不将问题移至ServerFault?
珠穆朗玛峰,

@nueverest,因为它太旧了,无法迁移。
gre_gor

Answers:


63

是的,到目前为止,您可以免费进行此操作。

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

我设法为我的S3上的CloudFront分布式静态站点设置了免费的Class 1 StartSSL证书,没有太多麻烦(请参阅:使用SNI通过HTTPS进行服务时出现CloudFront错误)。



3
反馈:布莱斯·费舍尔的指南很好。
tresf 2015年

6
这里有一个微妙之处。如果未为网站托管配置S3存储桶,可以使用HTTPS 。请参阅“网站端点不支持https”的注释。
skeller88

6
好吧,为了摆脱“微妙之处”并用简单的英语描述,这是我的看法。只需单击几下,即可将具有静态网页内容(html)的S3存储桶转换为网站。该网站只能使用http。如果需要https,则必须使用AWS的Cloudfront服务并将其配置为SNI才能免费获取https。(一些非常古老或奇怪的浏览器不支持SNI。)html和其他资源可以低成本存储在S3上。此外,如果您从AWS获得域名,则必须使用其Elastic Load Balance服务。收费是每场演出几美分。
Mike_Laird '16

5
当它只是无法解决问题时,我发现此答案被授予了正确的答案,这真是令人惊讶:正如@ skeller88所说,s3 https不适用于网站托管。
Abbood

36

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 /


1
我今天早上刚刚为我的网站进行了设置。这是s3中托管的静态站点。这是非常容易的。我只是去了ACM经理,索​​要证书,将我的电子邮件设置搁置了几个小时(最终在等待确认电子邮件的时候公开了我的WHOIS信息),然后设置了route53指向云端终端。很高兴我找到了此评论。
偏执狂

1
@paranoid这样我可以将我的s3网站托管为仅https吗?
Piyush S. Wanare

1
@ PiyushS.Wanare是的,可以!
barbolo 2016年

将HTTPS链接放在Route53的CNAME记录中。
哥斯达黎加

@paranoid不知道您所说的“ cloudfront端点”是什么意思..我从哪里得到这些信息?
abbood

17

从今天起,Cloudfront提供了自定义SSL:http ://aws.amazon.com/cloudfront/pricing/

请记住,他们每月收费600美元。有关以上链接的更多详细信息。


7
600 /月...
Pacerier 2013年

11
如果您要专用的IP地址,则只需支付600美元。如果你乐于使用SNI(这是不老的浏览器支持),没有额外收费
马丁·奥康纳

2
如果你愿意只支持现代浏览器(通过SNI),这是现在便宜得多:aws.amazon.com/about-aws/whats-new/2014/03/05/...
安德鲁Newdigate

现在免费!aws.amazon.com/certificate-manager向下滚动到美元符号图标。另外,我认为它们会自动更新。设置就像在证书上输入您想要的域并单击随后电子邮件中的验证链接一样容易。
哥斯达黎加

3

对我来说,我必须将一个简单的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页面。


太棒了 谢谢
user1874634 '18

如果您的应用以生产为目标,那么这是个坏主意。
塞巴斯蒂安

sébastien,请与我们分享更多详细信息,这是一个坏主意。我们为公众提供对对象的读取访问权限,而不是存储桶。
alexopoulos19年

这是一种很好且最简单的方法,但请记住,对于应用程序中的每个文件,请求都将在Internet上传输,这将降低应用程序的性能。在这种情况下,最好使用CloudFront。
Nitesh B.19年

@ NiteshB.CloudFront在您需要经常更新S3对象时很痛苦
Dustin Sun

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.