AWS S3、CloudFront和SSL

3
我尝试使用AWS S3和CloudFront为我们的Web平台设置静态托管解决方案。需要使用https,并且需要通过自定义子域访问。
这是我的S3存储桶:enter image description here 这些是CloudFront的设置:enter image description hereenter image description here 证书设置看起来没问题:enter image description here 最后,我的DNS记录如下:CNAME:"static" -> "d1fd407fp9coo4.cloudfront.net." 编辑:使用默认域名提供商进行DNS,而不是Route 53。
目标是通过https在static.dmaglobal.com/logo-frontpage.png上提供资源。它没有问题地加载(http://static.dmaglobal.com/logo-frontpage.png),但https版本(https://static.dmaglobal.com/logo-frontpage.png)会出现SSL错误,指出当前证书为*.s3.eu-west-2.amazonaws.com而不是*.dmaglobal.com。我不明白这个不匹配来自哪里,因为它似乎已经为我们的自定义域正确设置了证书。
有人能够提供如何处理此问题的指针吗?

你创建 CloudFront 分发已经多久了?我几周前创建了一个完全相同的设置,但它一直重定向到 S3 而不是通过 CloudFront 提供文件(因此提供 S3 SSL 证书而不是您在 CloudFront 上配置的证书)。显然,这是新 CloudFront 分发的已知问题,需要等待几个小时才能正确地从 S3 提供文件。我的在几个小时后开始按预期工作。 - Mark B
可能是2小时前创建的,直到准备好之前花了一些时间 - 它在“进行中”状态下花费了大约一小时左右,然后才变为“准备就绪”。 - kvitso
是的,我也有同样的经历。我会再等几个小时,看它是否开始提供文件而不是重定向到S3。这是我在遇到相同问题时参考的AWS论坛帖子:https://forums.aws.amazon.com/message.jspa?messageID=677452 如果几个小时后问题仍未解决,您可能需要向AWS支持团队提交工单。 - Mark B
我刚刚注意到 https://dnschecker.org/#CNAME/static.dmaglobal.com 仍然直接解析到 S3 存储桶的 URL,而不是 CloudFront。我最初将域名直接添加到 S3 存储桶中,后来意识到需要使用 CloudFront 通过 https 访问时才进行了更改。所以也许我只需要等待该更改完全传播。 - kvitso
2个回答

0

正如您所注意到的,您的DNS记录仍然解析为S3。

您应该创建一个指向Cloudfront分发的ALIAS记录,而不是CNAME。在静态记录中选择A类型记录,选中“是”以启用别名,并在下拉菜单中选择Cloudfront分发。

原因是:ALIAS记录是免费的,并且解析速度更快。


1
OP没有说他正在使用Route53作为DNS。一个CNAME记录应该可以正常工作。根据TTL,更改传播可能需要更长的时间,但这就是它的一切。不确定为什么您会声明别名记录是免费的。您需要支付Route53中托管区域的费用。您不需要为该托管区域中的任何记录支付任何额外费用,无论它们是哪种类型的记录。 - Mark B
@MarkB 当针对Route 53别名记录进行查询时,如果该别名指向服务目标(S3、CloudFront、ELB),则免费,否则将产生费用。 - Michael - sqlbot
仅为了明确起见,我在这种情况下不使用Route 53。一旦正确的CNAME值被传播,我将在此问题上发布更新。 - kvitso
是的,在Route53和别名的情况下,您只需支付0.5美元的托管区域费用,但对于其他类型的记录,您需要按查询付费。如果您接收数百万的流量,这可能会产生高昂的成本。我忽略了一些客户可能仍在使用本地DNS解决方案的事实。 - Çağatay Gürtürk

0
回答我的问题:最终,正确的CNAME值还没有完全传播(因为它最初指向S3,而我不知道需要CloudFront来实现SSL)。一旦这样做了,原帖中的设置就完美地工作了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接