如何将 https://example.com 转发到 AWS ELB

如何将 https://example.com 转发到 AWS ELB

我购买了域名 example.com 并将其托管在 AWS Elastic Beanstalk 上。为了支持 HTTPS,我从 AWS 证书管理器为 *.example.com 颁发了通配符证书,并将其分配给 EB 实例和 ELB。由于我在 Godaddy 购买了域名,因此我还在 Godaddy DNS 中添加了 CNAME 通配符 (*) DNS 条目,并在目标值中提供了 ELB AWS 名称。

这样做对子域很有效,我可以点击 https anystring.example.com 并转到我的 EB 环境的索引页。但问题是我无法使用 https example.com(没有子域)转到环境。它找不到域条目。我确实明白原因,但不确定该怎么做才能解决这个问题。

我尝试添加一个新的 CNAME 条目:
名称:@
值:ELB AWS 值
但 Godaddy 给我错误,说该记录已经存在。我在 SO 上搜索并发现,只要某个 @ 条目存在,我就无法添加另一个。

我搜索了更多内容,并做了一些事情来取得进展:1. 我添加了 CNAME www 条目并在目标中分配了 ELB AWS 名称,因此现在我可以访问 https www.example.com 并转到环境索引页。2. 我添加了域名转发(转发 @ 到 https www.example.com),因此只需在 URL 中输入 example.com 即可,并转发到 https www.example.com

但我仍然无法使用 https example.com 进入索引页

有什么建议吗?

答案1

您不能在根域 (example.com) 上使用 CNAME,只能在子域中使用。这是由于 DNS 标准/设计所致。阅读此问题/答案

解决方案是将您的 DNS 移至 AWS Route 53。成本相对较低,而且这是从 DNS 引用 ELB 的更好方法。Route53 为您提供别名记录,让您可以将根域(即没有 www)指向 ELB。

为您的域名设置路由 53,然后将 GoDaddy 指向 Route53 为您提供的名称服务器。此处的说明

为您提供一些资源。-将 ELB 与 EB 结合使用 -http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-elb.html

答案2

“example.com” 和 “.example.com" 在 SSL 验证方面是完全不同的名称,这是因为域语法验证的工作方式以及其中的点的重要性。如果您获取通配符证书(.example.com) 仅对包含单个(且仅单个)位于“example.com”之前的子域的请求有效;对于顶级域无效。这同样适用于嵌套子域,例如 abexample.com 不适合 *.example.com。

为了实现您的目标,您应该购买包含顶级域和 CommonName 字段中的通配符名称的证书。

相关内容