AWS - 当我们使用证书时,我们的网站抛出 502

AWS - 当我们使用证书时,我们的网站抛出 502

我们遇到一个问题,当使用有效证书时,我们无法通过 HTTPS 访问我们的网站。

我们有一个在 Route53 上注册的域名和一个证书。

我们有一个负载均衡器:

our-production-elb-1234567.eu-west-2.elb.amazonaws.com

我们有两个目标群体,目标由 ECS 管理:

our-production-target-group-https
our-production-target-group-http

我们在负载均衡器上有两个监听器:

HTTP : 80, forwarding to our-production-target-group-http
HTTPS : 443, forwarding to our-production-target-group-https

我们有一个应用于 https 侦听器的证书:

ouractualdomain.com
*.ouractualdomain.com

我已经在实际实例上运行了日志,http 请求可以顺利通过,而 https 请求根本没有显示。

当我使用真实证书作为 https 侦听器时,出现 502 错误。如果我使用自签名证书,它可以正常工作,但在 chrome 中会出现安全警告。

有人知道会发生什么吗?

谢谢!

答案1

云锋 如果域名不匹配,则 SSL/TLS 握手失败,CloudFront 返回 HTTP 状态代码 502(错误网关)并将 X-Cache 标头设置为来自 CloudFront 的错误。

要确定证书中的域名是否与分发或主机标头中的源域名匹配,您可以使用在线 SSL 检查器或 OpenSSL。如果域名不匹配,您有两个选择:

  1. 获取包含适用域名的新 SSL/TLS 证书。
  2. 更改分发配置,以便 CloudFront 不再尝试使用 SSL 连接您的源。

负载均衡器 HTTP 502(错误网关)错误可能由于以下原因之一而发生:

  1. 在 EC2 实例上运行的 Web 服务器或关联的后端应用程序服务器返回了一条无法被您的 Classic Load Balancer 解析的消息。

  2. Web 服务器或相关的后端应用程序服务器返回其自己的 502 错误消息。

要查找这些 502 错误的来源:

  1. 在 Classic Load Balancer 上启用 ELB 访问日志,以查看每个请求的后端和 Elastic Load Balancing (ELB) 响应代码。访问日志条目包含两个字段:elb_status_code 和 backend_status_code。使用这些代码来确定 502 错误的来源。
  2. 查看负载均衡器 CloudWatch 指标以查看后端生成的 502 错误,这些错误显示在 HTTPCode_Backend_5XX 指标下。ELB 生成的 502 错误显示在 HTTPCode_ELB_5XX 指标下。

如果后端响应是 ELB 502 错误的根源,则问题可能是由以下原因引起的:

  1. 每个标头之间包含多个 CRLF 的响应。
  2. 响应包含一个包含非整数的 Content-Length 标头。
  3. 响应主体中的字节数多于 Content-Length 标头的值。

答案2

我根本无法让它工作,所以我将设置load balancer https listener为指向http target group端口 80 上的。然后在我的旧应用程序上,我在网站标题中设置了这个元标记,以自动将任何 http 请求升级到 https。

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

相关内容