Cloudfront、ELB 和 SSL
Posted
技术标签:
【中文标题】Cloudfront、ELB 和 SSL【英文标题】:Cloudfront, ELB and SSL 【发布时间】:2016-05-11 11:02:32 【问题描述】:如果我使用 Cloudfront 坐在 Web 服务器前面,而该服务器本身位于 ELB 后面,以下是否适用?
我使用 Route53 为 CF 域创建域名记录,并将 SSL 证书应用于该域以保护分发
如果 CF 无法从缓存中提供内容,则 SSL 连接将转发到 ELB(将网络服务器作为源服务器)
因此我还需要在 ELB 上使用相同的域名 (FQDN)(通过 Route53 CNAME)并在那里应用相同的证书?
当 CF 通过 ELB 转发请求时,SSL 被终止 那正确吗 ?一个 FQDN 证书是否足以或更好地使用通配符?改用源站域名更好吗?
由于我现在可以使用新的 AWS 证书管理器工具 (ACM) 添加这些证书,有谁知道如果使用 ACM(这使得 CF 成为一项昂贵的 AWS 服务),CF 是否仍需要使用自定义 SSL 证书的成本?
【问题讨论】:
【参考方案1】:如果 CF 无法从缓存中提供内容,则 SSL 连接将转发到 ELB(将网络服务器作为源服务器)
SSL 连接未“转发”。 CloudFront 和 ELB 之间建立了新的 SSL 连接。
用户和 CloudFront 之间的 SSL 连接与 CloudFront 和 ELB 之间的连接完全不同。因此,ELB 和 CloudFront 上使用的域名没有匹配要求。
因此我还需要在 ELB 上使用相同的域名 (FQDN)(通过 Route53 CNAME)并在那里应用相同的证书?
唯一的限制是 ELB 上的 SSL 证书必须与 ELB 上使用的域名匹配。它可以是与 CloudFront 上使用的不同的 SSL 证书和域名。
如果您想使用“自定义 SSL”功能并支持“所有客户端”,而不仅仅是支持 SNI 的那些,那么是的,您仍然必须支付额外费用,即使您正在使用 ACM。
示例 1
您可以为 www.domain.com 和 origin.domain.com 创建 Route 53 记录,并为 *.domain.com 创建 SSL 证书。根据这些,您可以将 www.domain.com 分配给 CloudFront 分配,将 origin.domain.com 分配给您的 ELB,并在两者上使用通配符证书。
示例 2
您可以为 www.domain.com 和 origin.domain.com 创建 Route 53 记录,并为 www.domain.com 和 origin.domain.com 分别创建 SSL 证书。通过这些,您可以使用 www.domain.com 证书将 www.domain.com 分配给 CloudFront 分配,并使用 origin.domain.com 证书将 origin.domain.com 分配给您的 ELB。
示例 3
您可以为 www.domain1.com 和 origin.domain2.com 创建 Route 53 记录,并为 www.domain2.com 和 origin.domain2.com 分别创建 SSL 证书。根据这些,您可以使用 www.domain2.com 证书将 www.domain2.com 分配给 CloudFront 分配,并使用 origin.domain2.com 证书将 origin.domain2.com 分配给您的 ELB。
【讨论】:
太棒了,所以我 100% 清楚我可以为该站点创建一个合适的域名,通过 ACM 创建一个 AWS 证书并为 CF 和 ELB 使用相同的证书?前提是我在 Route53 中创建了正确的 DNS 记录(CName 和 A 记录)。当您谈到对 ELB 域名的限制时,我假设 AWS 给您的 ELB 不是域名而是一个合适的别名? 我已经添加了示例。 对于您在此处指定的每个示例,应该在 CF 分发中配置的原始名称应该是什么?我们可以使用原始名称作为 ELB 默认 DNS 名称,还是应该使用我分配给 ELB 的自定义域名。 我已经使用了示例 2 的配置,并且我能够让 CF URL 和 ALB 正常工作,但是每当我点击我的 wordpress 网站上的更多链接时(我正在使用 CF 和 ALB),我我总是从我的 CF URL 重定向到 ALB URL。我在这里提出了详细的问题 [***.com/questions/69937819/…以上是关于Cloudfront、ELB 和 SSL的主要内容,如果未能解决你的问题,请参考以下文章
使用Cloudfront而不是单个EC2实例的AWS ELB设置有什么意义?
尝试实现 socket.io 通信时收到 GET 400。 Node.js、ELB、Route 53、CloudFront 和 s3