当我将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
。两个问题:
https://testdomain.com
(无子域名)。看起来这种方法似乎不可能有https://testdomain.com
因为我无法用域名创建A记录。答案 0 :(得分:5)
问题是您必须使用您的域创建CNAME记录,并使用负载均衡器DNS名称作为地址。如果您使用弹性IP,请求将不会转到负载均衡器。
回答我的上一个问题: