2012-06-26 102 views
110

我正在使用Amazon S3存储桶上传和下载使用我的.NET应用程序的数据。现在我的问题是:我想使用SSL访问我的S3存储桶。是否可以为Amazon S3存储桶实施SSL?如何为Amazon S3存储桶配置SSL

在此先感谢。

+0

可能帮助:[在Amazon S3静态网站上实现SSL](https://knightlab.northwestern.edu/2015/05/21/implementing-ssl-on-amazon-s3-static-websites) – vsync

回答

125

您可以通过SSL访问您的文件是这样的:

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

如果你使用你的水桶一个定义域,你可以与自己的SSL证书使用S3和CloudFront的(或产生通过一个免费的亚马逊证书管理器):http://aws.amazon.com/cloudfront/custom-ssl-domains/

+32

这并不完全真正。您可以使用不带圆点的存储桶名称:https://this-is-my-awesome-bucket.s3.amazonaws.com亚马逊有一个通配符证书。由于您不能使用点,您不能让CNAME域指向您的存储桶。 – Docunext

+1

@Docunext:这一个解决了我的问题,我试了几个小时。感谢那! – hereandnow78

+4

小心包含句点的存储桶名称! SSL不能在iOS设备上运行,但在Chrome中可以正常工作。请参阅http://stackoverflow.com/questions/3048236/amazon-s3-https-ssl-is-it-possible –

26

自定义域的SSL证书今天刚刚添加/证书/月$ 600。注册您的邀请之下: http://aws.amazon.com/cloudfront/custom-ssl-domains/

更新:SNI客户无需支付额外费用提供证书are now available。比$ 600 /月便宜很多,而且XP几乎被杀死了,它在大多数使用情况下都能很好地工作。

@skalee AWS有一个机制来实现海报要求的“为Amazon S3存储桶实施SSL”,它被称为CloudFront。我正在阅读“实施”作为“使用我的SSL证书”,而不是“仅在HTTP URL上输入S,我确信OP可能推测出这样的结果

由于CloudFront的成本与S3完全相同/ GB),但有一吨左右的SSL附加功能,让您在不增加额外成本的增加自己的SNI证书,它是你的域“实施SSL”。

+57

CloudFront不是S3。 – skalee

+4

@skalee正确,但如果您想通过具有自定义SSL证书的域访问它,则可以按照OP请求来设置自定义CNAME SSL证书,并通过CF访问它。 –

+1

目前,我设置了两个CNAME:static-s3和static-cf,第一个指向我的S3,第二个指向CF.首先不能支持SSL,其次可以,但它是CF而不是S3,正如skalee指出的那样。这是我认为我们现在可以做的最好的。 – Danger

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证书中规定的*.s3.amazonaws.com, s3.amazonaws.com)。

没有测试,但我相信它会工作。然而,我看到几个陷阱。

第一个是很明显的,额外的请求得到这个重定向。我怀疑你可以使用你的域名注册商提供的重定向服务器 - 你必须以某种方式上传适当的证书 - 所以你必须使用你自己的服务器。

第二个是,你可以在网页源代码中您的域名网址,但例如当用户打开单独的选项卡的PIC,然后地址栏会显示目标URL。

+0

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

8

我发现,您可以通过云服务耀斑做到这一点很容易。

建立一个存储桶,在存储桶上启用webhosting,并通过Cloudflare将所需的CNAME指向该端点...并支付当然的服务费用......但是$ 5- $ 20 VS $ 600更容易受到影响。

这里充分细节: https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/

+0

这不适合我。 '您尝试访问的存储桶必须使用指定的端点进行寻址。请将所有未来请求发送到此端点。 subdomain.mydomain。COM s3.amazonaws.com ' – Jay

+0

这里试试我的向导:https://www.engaging.io/easy-way-to-configure-ssl-for-amazon-s3-bucket-via-cloudflare/ –

2

这是不可能的S3直接,但是从你斗,你可以创建一个云锋分布。然后转到证书管理器并申请证书。亚马逊免费提供。您已成功确认认证,将其分配到您的Cloud Front分配。还请记住设置规则以将http重定向到https。

我在亚马逊S3上托管几个静态网站,就像我的个人网站:Developer,因为他们拥有Cloud Front发行版,所以我已将其分配给了SSL证书。

+0

,你是如何分配域名的? – netshark1000

+0

首先转到证书管理器并请求新证书。如有必要,在那里添加您的域名,并在其中包含子域名。如果要将子域名放在那里,并不会造成任何伤害,那么只需将example.com和* .example.com放在那里即可。 –

0

如前所述,您无法为S3存储桶创建免费证书。但是,您可以创建Cloud Front分发,然后为Cloud Front分配证书。您为您的域请求证书,然后将其分配到Cloud Front设置中的Cloud Front分配。我用这个方法通过像https://laina-apu.fi/ SSL服务静态网站以及提供静态文件,如https://casino-professor.com/en/(取其中图像正在服的样子。从一个子域)

对于静态网站创建亚马逊是去的地方。使用SSL获取静态网站确实很实惠。

相关问题