我们遇到一个问题,当使用有效证书时,我们无法通过 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。如果域名不匹配,您有两个选择:
- 获取包含适用域名的新 SSL/TLS 证书。
- 更改分发配置,以便 CloudFront 不再尝试使用 SSL 连接您的源。
负载均衡器 HTTP 502(错误网关)错误可能由于以下原因之一而发生:
在 EC2 实例上运行的 Web 服务器或关联的后端应用程序服务器返回了一条无法被您的 Classic Load Balancer 解析的消息。
Web 服务器或相关的后端应用程序服务器返回其自己的 502 错误消息。
要查找这些 502 错误的来源:
- 在 Classic Load Balancer 上启用 ELB 访问日志,以查看每个请求的后端和 Elastic Load Balancing (ELB) 响应代码。访问日志条目包含两个字段:elb_status_code 和 backend_status_code。使用这些代码来确定 502 错误的来源。
- 查看负载均衡器 CloudWatch 指标以查看后端生成的 502 错误,这些错误显示在 HTTPCode_Backend_5XX 指标下。ELB 生成的 502 错误显示在 HTTPCode_ELB_5XX 指标下。
如果后端响应是 ELB 502 错误的根源,则问题可能是由以下原因引起的:
- 每个标头之间包含多个 CRLF 的响应。
- 响应包含一个包含非整数的 Content-Length 标头。
- 响应主体中的字节数多于 Content-Length 标头的值。
答案2
我根本无法让它工作,所以我将设置load balancer https listener
为指向http target group
端口 80 上的。然后在我的旧应用程序上,我在网站标题中设置了这个元标记,以自动将任何 http 请求升级到 https。
<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">