当我将AWS证书与Elastic Beanstalk应用关联并使用https访问域时,我收到'本网站无法到达,mydomain.com拒绝连接。 “我可以使用http访问该网站。使用Elastic Beanstalk的AWS SSL证书:无法访问HTTPS站点
我使用AWS的ACM创建了安全证书。我将我的域名example.com和其他名称作为子域添加到证书中。在我的应用程序的环境“加载平衡”部分我设置了:
我设置了SecurityGroup我的环境命名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://<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)时会发生什么? –
默认情况下AWS不默认终止负载平衡器上的HTTPS?我如何确定是否是这种情况? – user2233706
我不确定是否有违约(如果有可能会终止)。您可以通过确保去往实例的流量未加密(即实例可以理解它正在接收的内容),或通过检查负载均衡器将信息作为“http”而不是“https”发送到实例来进行检查, 。 –