AWS 负载均衡器需要 CNAME 作为 DNS 指针。 www.domain 被覆盖,但根域不被 SSL 证书覆盖

Posted

技术标签:

【中文标题】AWS 负载均衡器需要 CNAME 作为 DNS 指针。 www.domain 被覆盖,但根域不被 SSL 证书覆盖【英文标题】:AWS load balancer requires CNAME for DNS pointer. www.domain is covered, but root domain is not covered by SSL certificate 【发布时间】:2020-02-13 05:16:18 【问题描述】:

我在 AWS 上继承了一个应用程序。负载均衡器必须是分布式的,因为 DNS 名称指向

www.crowd88.com.    756 IN  CNAME   crowd88-prod-elb-1388110015.ap-southeast-2.elb.amazonaws.com.

现在,我无法将根域设置为 CNAME。这没有任何意义,而且 DNS 服务器无论如何也不会让你这样做,而且负载均衡器的 IP 是动态的,所以如果我随时将其设置为负载均衡器的 IP,当该 IP 更改时,https://crowd88.com 就会消失无处。此外,由于 SSL 证书专门用于 www.crowd88.com,https://crowd88.com 无论如何都不会重定向,因为该域不受信任,因此浏览器不会遵循来自该域的重定向指令。

最后我可以通过使用良好的 SSL 证书(例如 this one)来修复。但是,我仍然不明白如何将根域指向动态变化的 IP。

我目前的解决方案是创建一个 digitalocean apache 服务器,每月 5 美元,带有一个免费的letsencrypt 证书,它只是将https://crowd88.com 重定向到https://www.crowd88.com,但亚马逊必须有一些解决这个问题的方法。我只是在他们的文档中找不到任何内容,AWS 对此帐户不提供任何支持。

【问题讨论】:

我觉得如果您使用他们的 Route 53 DNS,所有问题都会消失 如果上述 Route 53 DNS 是一个解决方案,欢迎提出一些关于将 DNS 记录从 godaddy 导出到 Route 53 的建议,因为要导出的 DNS 记录很多,任何输入错误的内容都可能阻止电子邮件或杀死谷歌分析。 【参考方案1】:

我有类似的要求,其中 rot 域位于 godaddy 中,子域位于 aws 中。我已经从证书管理器创建了一个 SSL/TLS 证书并分配给负载均衡器,并且 godaddy 有单独的根域 SSL 证书。对于您的问题,可以使用 AWS 中证书管理器中的 SSL/TLS 证书来解决,您可以使用诸如 www.crowd.*.com 之类的通配符来授予对所有子域的访问权限。 在https://docs.aws.amazon.com/acm/latest/userguide/acm-overview.html查看更多信息

【讨论】:

您的根域是 DNS 中的 cname 记录吗? AWS 要求负载均衡器的 IP 是动态的。我知道我可以使用通配符 ssl 证书,但这不是问题。问题是 AWS 要求 crowd88.com 和 www.crowd88.com 是 CNAMES

以上是关于AWS 负载均衡器需要 CNAME 作为 DNS 指针。 www.domain 被覆盖,但根域不被 SSL 证书覆盖的主要内容,如果未能解决你的问题,请参考以下文章

AWS 使用负载均衡器设置 DNS

使用 AWS 负载均衡器的 A(主机)记录

AWS 通过弹性负载均衡器发送 http 请求

如何使 DNS ARecord 指向 AWS 弹性 beanstalk 负载均衡器?

AWS 弹性负载均衡器 DNS 名称更改和 Route 53 (PHP)

将公共静态 ipv4 地址添加到 AWS 负载均衡器