从负载均衡器到后端的加密无法使用 HTTPS 后端工作

问题描述 投票:0回答:2

我在 GCP 中创建了一个负载均衡器,用于使用 HTTPS 将其转发到 HTTPS 后端组。 我已通过在实例上创建证书将实例配置为使用 HTTPS,当我从实例本身进行卷曲时,我得到以下内容

curl https://localhost
curl: (60) SSL certificate problem: unable to get local issuer certificate
More details here: https://curl.haxx.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.


root@instance:/var/log/apache2# curl https://localhost -k
<WebPage content>

我检查了关于 从负载均衡器到后端的加密的 GCP 文档,并已按照所述配置了后端和运行状况检查。

但是健康检查显示UNHEALTHY,健康检查日志显示

healthCheckProbeResult: {
   connectLatency: "0.000651s"    
   detailedHealthState: "TIMEOUT"    
   healthCheckProtocol: "HTTPS"    
   healthState: "UNHEALTHY"    
   ipAddress: "10.8.1.4"    
   previousDetailedHealthState: "UNKNOWN"    
   previousHealthState: "UNHEALTHY"    
   probeCompletionTimestamp: "2021-08-11T07:46:06.973978919Z"    
   probeRequest: "/user"    
   probeResultText: "HTTP response: , Error: Protocol error"    
   probeSourceIp: "35.191.1.154"    
   responseLatency: "0.002054s"    
   targetIp: "<internal IP>"    
   targetPort: 443    
  }

当我只使用HTTP时,通过更改apache和后端配置,站点工作正常。

我无法调试这里的实际问题。

我希望负载均衡器和后端之间进行加密。所以任何其他方法都会受到欢迎。

apache ssl google-cloud-platform
2个回答
0
投票
  1. 健康检查错误为TIMEOUT。这意味着您的后端确实接受了端口 443 上的连接。

  2. 你的问题没有详细说明Apache/Nginx如何?已配置。

  3. 检查您是否已在 Web 服务器中配置端口 443 侦听器。

  4. 检查您是否已启用端口 443 的 VPC 防火墙规则。

  5. 默认 VPC 防火墙规则 default-all-https 允许端口 443 上的流量。您可以选择将名为 https-server网络标记应用到虚拟机实例。

如果后端 Web 服务正在运行并侦听端口 443,以下命令将为 HTTPS 端口 443 启用默认防火墙规则。

https-server 网络标签应用到 Compute Engine 虚拟机实例:

gcloud compute instances add-tags [INSTANCE_NAME] \
--zone [INSTANCE_ZONE] \
--tags="https-server"

列出您的 Compute Engine 虚拟机实例并查看标签:

gcloud compute instances list --format="table(name,status,tags.list())"

注意:以上步骤有利于调试。但是,这将允许整个互联网连接到您的后端。更好的解决方案是创建一条防火墙规则,仅允许来自负载均衡器和运行状况检查服务的流量。允许的地址是:

  • 130.211.0.0/22
  • 35.191.0.0/16

以下命令将创建一条 VPC 防火墙规则,允许所有实例接收来自 Google Cloud Load Balancer 和运行状况检查服务的流量。可以微调此规则以分配给特定实例:

gcloud compute firewall-rules create "lb-rule" --allow=tcp:80,tcp:443 \
--source-ranges="10.0.0.0/22,10.0.0.0/14" \
--source-ranges="130.211.0.0/22,35.191.0.0/16" \
--description="Allow traffic from load balancer and health check services"

0
投票

我在另一台使用 IIS 的后端服务器上遇到了类似的问题,发现问题的根本原因是 IIS 证书握手。您需要采取本文档中提到的步骤来解决该问题。

© www.soinside.com 2019 - 2024. All rights reserved.