如何为Amazon S3存储桶配置SSL


Answers:


151

您可以通过SSL访问文件,如下所示:

https://s3.amazonaws.com/bucket_name/images/logo.gif

如果将自定义域用于存储桶,则可以将S3和CloudFront与您自己的SSL证书一起使用(或通过Amazon Certificate Manager生成一个免费的证书):http : //aws.amazon.com/cloudfront/custom-ssl-域/


42
并非完全如此。您可以使用不带点的存储桶名称:this-is-my-awesome-bucket.s3.amazonaws.com亚马逊具有通配符证书。由于您不能使用点,因此您无法将CNAME域指向存储桶。
Docunext

4
提防包含句点的存储桶名称!SSL无法在iOS设备上运行,但在Chrome中可以正常运行。见stackoverflow.com/questions/3048236/...
Simon_Weaver

1
Amazon CloudFront将为您完成此任务。
格雷格

3
要具有点符号存储桶名称(以便可以使用Route 53别名)并且要通过REST输入对象,请确保主机名与该区域匹配。例如,我的存储桶在其中,us-west-2因此主机名实际上是主机名,s3-us-west-2.amazonaws.com否则会出现错误。
noetix

1
没有Cloudfront,我们可以实现吗?
阿伦·库玛

28

自定义域SSL证书今天才添加,价格为$ 600 /证书/月。在下面注册您的邀请:http : //aws.amazon.com/cloudfront/custom-ssl-domains/

更新现在免费提供SNI客户提供的证书。它比$ 600 / mo便宜得多,而且XP几乎被淘汰了,它在大多数使用情况下都可以正常工作。

@skalee AWS具有一种实现发布者要求的机制,即“为Amazon s3存储桶实施SSL” CloudFront。我将“实现”读为“使用我的SSL证书”,而不是“仅在HTTP URL上加上一个S,我确定OP可以认为是S。

由于CloudFront的成本与S3($ 0.12 / GB)完全相同,但是围绕SSL具有大量附加功能,并且允许您免费添加自己的SNI证书,因此,这显然是在域上“实施SSL”的解决方案。


64
CloudFront不是S3。
skalee

6
@skalee正确,但是,如果要通过OP中的自定义SSL证书通过域访问它,则可以按照这种方式设置自定义CNAME SSL证书,并通过CF对其进行访问。
约瑟夫·拉斯特

2
目前,我已经设置了两个CNAME:static-s3和static-cf,第一个直接指向我的S3,第二个指向CF。第一个不支持SSL,第二个可以,但它是CF,而不是skalee指出的S3。我认为这是目前为止我们可以做的最好的事情。
危险

2
哇,我想他们必须以某种方式弥补越来越便宜的存储成本。至少它是按比例分配的。如果您每月仅使用SSL证书1个小时,则只需$ 20 ;-)
Simon_Weaver 2014年

1
@ Elegant.Scripting,如果您有专用的SSL证书(而不是SNI证书),则该计算机需要专用的IP,这会产生费用。S3托管数据的世界各地的每个位置大概都需要专用IP。这样加起来。但是我认为主要是因为邮政人员不需要它,他们可以为需要的人提高价格。如果您不需要支持IE6,则可以使用CloudFront下的SNI证书。
Simon_Weaver

11

我发现您可以通过Cloud Flare服务轻松完成此操作。

设置一个存储桶,在该存储桶上启用虚拟主机托管,然后通过Cloudflare将所需的CNAME指向该端点...,当然还要支付服务费用...但是,$ 5- $ 20 VS $ 600很容易让人感到不适。

此处有完整详细信息:https : //www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/


1
这里试试我的向导:engaging.io/...
拉尔夫Vugts

3

如果确实需要,请考虑重定向。

例如,根据要求,assets.my-domain.example.com/path/to/file您可以执行301或302重定向到my-bucket-name.s3.amazonaws.com/path/to/files3.amazonaws.com/my-bucket-name/path/to/file(请记住,在第一种情况下my-bucket-name不能包含任何点,否则它将与*.s3.amazonaws.com, s3.amazonaws.comS3证书中所述不匹配)。

未经测试,但我相信它会工作。但是,我看不到一些陷阱。

第一个很明显,这是获得此重定向的附加请求。而且我怀疑您是否可以使用域名注册商提供的重定向服务器-您必须以某种方式上载适当的证书-因此您必须为此使用自己的服务器。

第二个是您可以在页面源代码中包含带有域名的URL,但是例如,当用户在单独的选项卡中打开图片时,地址栏将显示目标URL。


2
我不确定,但是我认为这可能会导致CORS问题。
xdhmoore

3

无法直接使用S3,但是您可以从存储桶中创建Cloud Front分发。然后转到证书管理器并请求证书。亚马逊免费提供它们。您已经成功确认证书的人员,将其分配给您的Cloud Front发行版。还请记住设置规则以将http重定向到https。

我在Amazon S3上托管了几个静态网站,例如我的个人网站(由于拥有Cloud Front发行版,因此我已为其分配了SSL证书)。


以及您如何分配域名?
netshark1000

首先转到证书管理器并请求新证书。在此处添加您的域,并在必要时还包括子域。将子域放在那里并没有任何伤害,因此最好将example.com和* .example.com放在那里。
Mika Kujapelto

0

如前所述,您无法为S3存储桶创建免费证书。但是,您可以创建Cloud Front分配,然后为Cloud Front分配证书。您为您的域请求证书,然后将其分配给Cloud Front设置中的Cloud Front分配。我已经使用这种方法通过SSL服务静态网站以及服务静态文件。

对于静态网站创建,Amazon是最佳选择。使用SSL获得静态网站确实可以承受。


2
对于每个使用google到达这里的人:请记住也在弗吉尼亚北部地区创建您的AWS证书。否则,您将无法在CF发行版中选择它
KLoozen
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.