为什么 Elastic Beanstalk 负载均衡器拒绝建立 SSL 连接?

Why is Elastic Beanstalk Load Balancer refusing to estabilish a SSL connection?

最近,我开始搜索安全程序并遇到了 SSL。其实我早就知道SSL了,只是当时觉得太贵了。 幸运的是,昨天我发现亚马逊免费提供 SSL 证书! 但是,我花了一整天的时间尝试设置它,但没有成功。

我在 GoDaddy 注册了一个域,我们假设它是 www.mydomain.com。但是,我的网站托管在 Amazon Web Services (AWS) 上。我还有权编辑 GoDaddy 的 DNS 记录和对我的 AWS 账户的完全访问权。我看过 LetsEncrypt,但我的网站在 ASP.NET (IIS Windows) 中运行,目前它们仅支持 Linux OS.

这是我尝试做的事情:

  1. 从 AWS Certificate Manager 获取 SSL 证书

    我选择通过 DNS 进行设置,这意味着我必须将 CNAME 记录添加到 GoDaddy 域记录中。

    如果你仔细看上面的两张图片,AWS上的CNAME记录在页面的中央。我添加了一条包含值的 CNAME 记录。

  2. 将 HTTPS 添加到负载均衡器侦听器:

  3. 安全组允许 HTTPS

    注意: 入站和出站规则与上述相同。我还设置了负载均衡器和我的 运行 实例以使用此安全组。

  4. 已将记录添加到 Route 53 托管区域

    A型记录指向我的实例IP。

    NS 记录是由亚马逊生成的(我也添加了 GoDaddy 的域名服务器)。

    SOA记录是亚马逊生成的,我没碰过

    CNAME是我加的,又是SSL协议

我不知道还能做什么,或者我的设置有误。

如果我没记错的话,您在 ELB (Classic/Application/NLB) 后面有一个 EC2 实例,请求了已为 *.mydomain.com 成功颁发的 ACM 证书,创建了 HTTPS 侦听器使用 SSL 证书但在端口 443 上连接超时。

问题是 mydomain.com 的 DNS 记录仍然指向 EC2 实例的 IP,它可能没有在端口 443 上侦听(并且根本没有使用 ELB)。

所以,要解决这个问题,你必须使用 ELB's DNS name and use it as CNAME in your DNS record(不确定是在 Route 53 还是 GoDaddy 中,因为我不知道哪个是权威的 NS)。

此外,您可以考虑使用 mydomain.com 和 *.mydomain.com 请求新证书并更新侦听器,因为带有 *.mydomain.com 的 ACM 证书不保护 mydomain.com.