【发布时间】:2017-12-13 12:13:58
【问题描述】:
当我将 AWS 证书与我的 Elastic Beanstalk 应用程序关联并使用 https 访问域时,我收到“无法访问此站点,mydomain.com 拒绝连接。”我可以使用 http 访问该网站。
我使用 AWS 的 ACM 创建了一个安全证书。我将我的域名 example.com 以及作为子域的其他名称添加到证书中。在我的应用程序环境“负载平衡”部分中,我进行了设置:
我为我的环境设置了名为 awseb-e-abc123-stack-* 的 SecurityGroup,如下所示:
还有一个名为awseb-e-abc123-stack-AWSEBLoadBalancerSecurityGroup-*的安全组,如下。它与上面的组有相同的名称标签,与我的环境名称相同:
不过,“AWSEBLoadBalancerSecurityGroup”安全组的条目似乎没有任何作用,因为删除所有条目仍然允许 HTTP 流量工作。
在.elasticbeanstalk\securelistener.config,我有以下内容
option_settings:
aws:elb:listener:443:
SSLCertificateId: <my certificate's ARN>
ListenerProtocol: HTTPS
InstancePort: 80
不过,如果我在这个文件中添加语法错误,部署仍然成功。
这是curl -vL https://<my domain>的输出:
* Rebuilt URL to: https://<my domain>/
* Trying <my elastic IP>...
* connect to <my elastic IP> port 443 failed: Connection refused
* Failed to connect to <my domain> port 443: Connection refused
* Closing connection 0
curl: (7) Failed to connect to <my domain> port 443: Connection refused
我使用单独的域名注册器来设置我的域名,并设置我的域的 DNS A 记录 IP 地址等于我的弹性 IP。
[编辑]
我在上面提到过,更改负载均衡器安全组的规则没有任何作用。这是因为我的 EC2 实例的安全组指向实例的安全组,而不是负载均衡器的安全组。当我将 EC2 的安全组指向负载均衡器的安全组时,就会执行安全组的规则。我通过从负载均衡器安全组中删除所有规则来验证这一点,并看到没有接受任何请求。但是,如果我将 HTTP 和 HTTPS 规则添加回负载均衡器安全组,但从实例安全组中删除所有规则,则所有 HTTP 请求都会通过。这不是预期的行为,因为负载均衡器应该将流量转发到实例。似乎正在发生的事情是 (1) 实例和负载均衡器安全组与实例和负载均衡器完全不相关,并且 (2) 没有流量流向负载均衡器。
我还有什么遗漏的吗?
[编辑 2]
我误读了 gkrizek 的评论。如果我使用负载均衡器的公共 DNS,我可以使用 HTTP 或 HTTPS 进行连接。我可以使用 telnet 连接到这两个版本。因此,我没有创建将 testdomain.com 设置为我的弹性 IP 的 A 记录,而是为负载均衡器创建了一个 sub.testdomain.com CNAME 记录集。现在我可以浏览到http://sub.testdomain.com 和https://sub.testdoamin.com。两个问题:
- 是否可以在 CNAME 记录中使用负载平衡器的公共 DNS?我不能使用 *.elasticbeanstalk.com 网址,因为它可能会改变,所以我想知道这里是否也适用同样的情况
- 如何保护
https://testdomain.com(无子域)。好像用这种方法,不可能有https://testdomain.com,因为我不能用域名创建A记录。
【问题讨论】:
-
您是否在负载均衡器处终止 https,并继续使用 http 请求?当你发出像
curl -vL --insecure $url这样的 curl 请求时会发生什么? -
默认情况下 AWS 不是在负载均衡器上终止 HTTPS 吗?我如何确定是否是这种情况?
-
我不确定是否有默认值(如果有可能会终止)。您可以通过确保流向实例的流量未加密(即实例可以理解它正在接收的内容)或通过检查负载均衡器是否以“http”而不是“https”向实例发送信息来进行检查.
-
如何检查到实例的流量是否未加密?
-
您是否尝试在浏览器中加载负载均衡器的 DNS 名称?另外,您可以尝试在端口 443 上远程登录到负载均衡器的 DNS 吗?这至少会从等式中消除您的自定义域/证书的 DNS 问题。
标签: amazon-web-services ssl amazon-elastic-beanstalk aws-security-group amazon-acm