带有 TLS 的 HAProxy 后端停止工作

带有 TLS 的 HAProxy 后端停止工作

我在使用带有 TLS 的后端的 HAProxy 服务器之一上遇到了问题。启动 HAProxy 时,后端会报告所有服务器都已关闭:

Server web_remote/apache_rem_1 is DOWN, reason: Layer6 invalid response, info: "SSL handshake failure", check duration: 41ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.

后端的配置如下:

backend web_remote
    balance         leastconn
    option          httpchk         HEAD /
    option          redispatch
    retries         3

    default-server  inter 5000 rise 2 fall 5 maxconn 10000 maxqueue 50000

    server apache_rem_1  192.0.2.1:12345           check maxconn 1000 maxqueue 5000 ssl ca-file /etc/ssl/web.pem
    server apache_rem_2  2001:DB8:3:4:5:6:8:12345  check maxconn 1000 maxqueue 5000 ssl ca-file /etc/ssl/web.pem

到目前为止,这个后端运行良好,wget服务器上的快速运行也运行良好,并openssl s_client报告后端的证书有效。

HAProxy/TLS 是否还有其他配置错误?当其他所有信息都报告握手成功时,我该如何调试此问题?

答案1

在尝试使用 HAProxy 进行调试的方法后,我最终放弃并使用 tcpdump 来调试网络流量。

通过将 TLS 密钥和 PCAP 文件导入启用 SSL 的 Wireshark,我很快就发现了错误:HAProxy 不知道根 CA,因此验证失败。原来,一位同事更改了证书,但不知道此 PEM 需要完整的信任链。将正确的根 CA 添加到 .PEM 文件解决了这个问题,服务器恢复正常运行。

答案2

尝试添加check-sslserver以强制健康检查也通过 SSL 运行。

答案3

我遇到了同样的问题。原来我的后端 SSL 服务器不支持 TLSv1.3。因此,为了使其正常工作,我不得不使用force-tlsv12

server server.example.com 10.0.0.1:443 check ssl verify none force-tlsv12

相关内容