当我将AWS证书与我的弹性Beanstalk应用程序关联,并使用https访问域时,我会收到“此网站无法访问,mydomain.com拒绝连接”的消息。 我可以使用http访问该站点。
我使用AWS的ACM创建了一个安全证书。 我将我的域名example.com以及其他子域名添加到证书中。 在我的应用程序环境的“负载平衡”部分中,我设置了以下内容: 我设置了名为
我将会翻译以下内容:
我使用了一个独立的域名注册商来设置我的域名,并将我的域名的DNS A记录IP地址设置为我的弹性IP。
[编辑]
我之前提到更改负载均衡器安全组规则没有任何作用。这是因为我的EC2实例的安全组指向实例的安全组,而不是负载均衡器的安全组。当我将EC2的安全组指向负载均衡器的安全组时,安全组的规则得以执行。我通过删除负载均衡器安全组中的所有规则并查看是否接受请求来验证这一点。然而,如果我将HTTP和HTTPS规则添加回负载均衡器安全组但从实例安全组中删除所有规则,则所有HTTP请求都会经过。这不是预期的行为,因为负载均衡器应该将流量转发到实例。似乎发生的是(1)实例和负载均衡器安全组与实例和负载均衡器根本没有关系,(2)没有流量到达负载均衡器。
我还有什么遗漏吗?
[编辑2]
我使用AWS的ACM创建了一个安全证书。 我将我的域名example.com以及其他子域名添加到证书中。 在我的应用程序环境的“负载平衡”部分中,我设置了以下内容: 我设置了名为
awseb-e-abc123-stack-*
的安全组,用于我的环境,如下所示:
另外还有一个名为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://<我的域名>
的输出:
* 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连接到两个版本。所以,我创建了一个sub.testdomain.com的CNAME记录集到负载均衡器,而不是创建一个将testdomain.com设置为我的弹性IP的A记录。现在我能够浏览http://sub.testdomain.com
和https://sub.testdoamin.com
。两个问题:
- 在CNAME记录中使用负载均衡器的公共DNS是否可以?我不能使用*.elasticbeanstalk.com URL,因为它可能会更改,所以我想知道这里是否适用相同的情况。
- 如何保护
https://testdomain.com
(无子域名)?似乎使用这种方法,无法拥有https://testdomain.com
,因为我不能创建具有域名的A记录。
curl -vL --insecure $url
这样的 curl 请求时会发生什么? - Jordan Stewartcurl -vL
命令应该将 URL 解析到特定的 AWS 负载均衡器。然后,负载均衡器应该将其转发给实例。您能否确认您正在使用的 URL 指向 AWS 负载均衡器,或将请求转发到 AWS 负载均衡器?在您的 curl 输出中,您提供的 URL 解析为“我的弹性 IP”。通常情况下,弹性 IP 地址与 EC2 实例相关联,并且看起来实例的 443 端口未打开。 - Jordan Stewart