Elastic Beanstalk - 侦听器无法同时使用安全协议和不安全协议与 InstancePort 80 通信

Elastic Beanstalk - Listeners can't talk to InstancePort 80 with secure and insecure protocols at the same time

提问人:S.B. 提问时间:8/25/2023 更新时间:8/25/2023 访问量:38

问:

我正在尝试将 SSL 证书(来自 AWS Certificate Manager)添加到我的 elastic beanstalk 实例。

按照说明:

当我按照以下说明操作时,我会收到: 更新名为 awseb-e-7-AWSEBLoa-1B1GTXIBDDIFV 的负载均衡器失败 原因:侦听器无法同时使用安全和不安全的协议与 InstancePort 80 通信(服务:AmazonElasticLoadBalancing;状态代码:409;错误代码:InvalidConfigurationRequest;请求 ID:d0fc694a-3d06-485c-a60a-0fd625ba95a9;代理:null)

我已按照此处的 AWS 说明进行操作 (https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/configuring-https-elb.html):

在“修改负载均衡器”页上,该过程因与您的环境关联的负载均衡器类型而异。

  • Classic Load Balancer
  • 选择 Add listener (添加侦听器)。
  • 在 Classic Load Balancer 侦听器对话框中,配置 以下设置:
  • 对于侦听器端口,键入传入流量端口,通常为 443。
  • 对于 Listener protocol (侦听器协议),选择 HTTPS。
  • 对于 Instance port (实例端口),键入 80。
  • 对于 Instance protocol (实例协议),选择 HTTP (HTTP)。
  • 对于 SSL certificate (SSL 证书),选择您的证书。
  • 选择 Add (添加)

禁用现有端口 80 侦听器:

当我禁用端口 80 侦听器时,在我收到的同时添加新侦听器: 更新名为:awseb-e-7-AWSEBLoa-1B1GTXIBDDIFV 的负载均衡器失败原因:找不到密钥的服务器证书:arn:aws:acm:us-east-1:730082756200:certificate/a875f89b-ea03-4904-bcb4-3295750cf3b8(服务:AmazonElasticLoadBalancing;状态码:400;错误代码:CertificateNotFound;请求 ID:9717eb12-f72d-46cc-88bd-59f1cae7fad7;代理:null)

该证书位于 AWS Certificate Manager 上的“待验证”中,与 Elastic Beanstalk 位于同一 us-east-1 区域。

其他背景

我的网站 mysubdomain.mysite.io 托管在 lightsail 上,并且配置了自己的 SSL。

我的 subsubdomain.mysubdomain.mysite.io 托管在ELB上是这个问题的主题。

亚马逊网络服务 Elasticsearch SSL 亚马逊 elastic-beanstalk aws-证书管理器

评论


答:

0赞 S.B. 8/25/2023 #1

以下是我如何解决问题的分步演练:

SSL证书

待验证:AWS Certificate Manager 中的 SSL 证书最初处于“待验证”状态。

DNS 验证:为了验证 SSL 证书,我按照 AWS Certificate Manager 的说明在 DNS 设置中添加了 CNAME 记录。 验证成功:添加所需的 CNAME 记录后,证书状态切换为“成功”,表示已准备好使用。

弹性负载均衡器 (ELB) 初始侦听器配置:我尝试在端口 443 上为 HTTPS 流量向 ELB 添加侦听器,并通过 HTTP 转发到端口 80 上的实例。 错误:在此过程中我遇到了错误: 第一个错误:不能在同一个 InstancePort 80 上拥有安全和不安全的协议。 第二个错误:找不到密钥的证书。

成功添加侦听器:成功验证SSL证书后,我能够毫无问题地为端口443添加侦听器。

DNS 区域:我的域(mysubdomain.mysite.io)已在 AWS LightSail 中配置了 DNS 区域。

添加 CNAME 记录:我在 LightSail 中添加了一条 CNAME 记录,以将 subsubdomain.mysubdomain.mysite.io 映射到我的 Elastic Beanstalk URL (my-elb.eba-cf63dng7.us-east-1.elasticbeanstalk.com)。

DNS 传播:使用 nslookup,我确认 DNS 已传播,并且子域现在正确地指向我的 ELB 的 IP。

最终检查

连接解析:最初,我的域没有解析,但在 DNS 传播和正确的 DNS 设置后开始解析。