带有Elastic Beanstalk的AWS SSL证书:无法访问HTTPS站点

时间:2017-07-09 20:09:02

标签: amazon-web-services ssl amazon-elastic-beanstalk aws-security-group amazon-acm

当我将AWS证书与我的Elastic Beanstalk应用关联并使用https访问域时,我得到'无法访问此站点,mydomain.com拒绝连接。'我可以使用http。

访问该网站

我使用AWS的ACM创建了一个安全证书。我添加了我的域名example.com,以及作为证书子域的其他名称。在我的应用程序环境“加载平衡”部分中,我进行了设置:

enter image description here

我为我的环境设置了名为awseb-e-abc123-stack-*的SecurityGroup,如下所示: enter image description here

还有另一个名为awseb-e-abc123-stack-AWSEBLoadBalancerSecurityGroup-*的安全组,如下所示。它与上面的组具有相同的名称标记,与我的环境名称相同:

enter image description here

但似乎“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.comhttps://sub.testdoamin.com。两个问题:

  • 在CNAME记录中使用负载均衡器的公共DNS是否可以?我不能使用* .elasticbeanstalk.com网址因为它可能会改变,所以我想知道这里是否适用相同的情况
  • 如何保护https://testdomain.com(无子域名)。看起来这种方法似乎不可能有https://testdomain.com因为我无法用域名创建A记录。

1 个答案:

答案 0 :(得分:5)

问题是您必须使用您的域创建CNAME记录,并使用负载均衡器DNS名称作为地址。如果您使用弹性IP,请求将不会转到负载均衡器。

回答我的上一个问题:

  • AWS says这没关系
  • 在AWS允许您将弹性IP分配给负载均衡器
  • 之前,这是不可能的