对 CloudFront 分配中的不同域使用不同的 SSL 证书?

Posted

技术标签:

【中文标题】对 CloudFront 分配中的不同域使用不同的 SSL 证书?【英文标题】:Using a different SSL certificate for different domains in CloudFront distribution? 【发布时间】:2018-07-03 10:11:36 【问题描述】:

我有一个 CloudFront 分配,用于在我的网站上提供静态文件(图像等)。到今天为止,它使用默认的foo.cloudfront.net 域(带有亚马逊免费的内置 SSL 证书)。

我想将此分发版切换到属于我网站一部分的“真实”域(例如media.mysite.com)。一旦我在 CloudFront 中进行此更改(例如,从其默认 CloudFront 证书切换到我自己的 *.mysite.com 证书),这会破坏我通过 https://foo.cloudfront.net 提供的现有文件吗?

如果是这种情况,那么我需要以某种方式将我网站上的所有图像源切换到新域,同时为分发启用自定义 SSL 证书,这会很棘手。

另一方面,阅读 the docs 表明 CloudFront 可能正在做一些工作来确定要使用哪个证书:

CloudFront 使用 IP 地址来识别您的分配并确定将哪个 SSL/TLS 证书返回给查看器。

...可能吗?

有没有人有过这种转换的经验,或者有没有更好的方法来切换域而不必同时更改大量的 URL 引用?

【问题讨论】:

【参考方案1】:

如果我理解这个问题,

    您的 CloudFront URL https://foo.cloudfront.net 将在切换到 media.mysite.com 后工作。

    您需要做的就是将 CNAME foo.cloudfront.net 添加到域 media.mysite.com 并在云端分发设置中将 media.mysite.com 定义为 CNAME。此外,将您的自定义 SSL 证书添加到分发中。

    不,除非您硬编码了对 Cloudfront URL 的某些依赖项,否则它不会破坏您的任何内容,直到 &。比如请求的 Origin 应该是 Cloudfront URL 等。

CloudFront 使用 IP 地址来识别您的分配并确定将哪个 SSL/TLS 证书返回给查看器。

回答 - 仅当您选择了专用 IP 时才会发生这种情况,这意味着您希望为所有用户提供服务,包括不支持 SNI 的客户端。 以下是使用 SNI 而不是专用 IP 时会发生的情况 -

When CloudFront receives the request, it finds the domain name in the request header and responds to the request with the applicable SSL/TLS certificate.

我猜你没有选择专用 IP。

PS - 我昨天做了这个,它很顺利。在边缘位置部署 Cloudfront 需要一些时间,请耐心等待。希望这会有所帮助!

【讨论】:

谢谢 - 我可以确认这有效(例如,当我将其更改为使用我的自定义 SSL 证书时,它在我请求 foo.cloudfront.net 时为 Cloudfront 提供服务,在我访问它时为我自己的证书提供服务通过mysite.com)。

以上是关于对 CloudFront 分配中的不同域使用不同的 SSL 证书?的主要内容,如果未能解决你的问题,请参考以下文章

CloudFront 是不是对 http 和 https 路径使用单个缓存?

使用 ELB 的 Cloudfront 中的 SSL 问题

已与“现有”CloudFront 分配关联的域名

单个域缓存失效 AWS CloudFront

Cloudfront/S3:根据请求标头服务器不同的文件

AWS CloudFront 为不同的主机(前端和后端)设置 cookie