我有一个域,例如foo.bar.com,我想使用该域为Amazon S3存储桶中的文件提供服务。根据https://docs.aws.amazon.com/AmazonS3/latest/dev/VirtualHosting.html,存储区名称必须为foo.bar.com,并且CNAME记录的URL foo.bar.com.s3.amazonaws.com才能使foo.bar.com(指向foo.bar.com.s3.amazonaws.com)起作用。

不幸的是,Amazon的SSL证书不支持foo.bar.com.s3.amazonaws.com(我是说,为什么呢?),所以我无法通过SSL提供这样的文件,但会收到SSL警告/错误。我可以使用普通的HTTP,但是由于主站点通过SSL,因此我在Chrome中收到“混合内容”警告。

该问题应如何处理?

最佳答案

在存储桶上同时具有自定义域名和SSL的唯一方法是将CloudFront与S3结合使用。

无论您的存储桶所在的区域如何,都在us-east-1区域的Amazon Certificate Manager(ACM)中为您的域foo.example.com创建SSL证书。 (us-east-1区域是CloudFront和ACM互连的区域。)

创建一个CloudFront分配:


如果您想要S3网站托管功能(包括索引文档和重定向规则),请键入存储桶的网站托管端点主机名作为源域名(不要从列表中选择存储桶),或者
如果要使用CloudFront签名的Cookie或签名的URL,请从下拉列表中选择存储桶。


将新的ACM证书与分发相关联,并添加foo.example.com作为分发的备用域名。

将DNS记录指向分配的dzczcexample.cloudfront.net主机名。

还请注意,与自身使用的S3静态托管不同,此配置不需要存储桶名称与域名匹配,因为CloudFront在将请求发送到存储桶之前会重写请求。

10-07 19:32
查看更多