如何让 haproxy 完全忽略 SSL 握手错误?

如何让 haproxy 完全忽略 SSL 握手错误?

设想:

我有一台带有 iLO 3 的旧 hp dl360 g7。现代浏览器无法访问它,因为它使用了古老的密码。

在我的内部网络上,我希望 haproxy 与其对话并消除 SSL 错误并使用现代浏览器支持的 SSL 提供内容。

我尝试过的:

frontend ilo3
    bind *:3333 ssl crt /etc/letsencrypt/live/mydomain.com/haproxy.pem alpn h2,http/1.1
    mode http
    use_backend ilo3

backend ilo3
    server node1 192.168.2.185 check ssl port 443 verify none

结果:

当我击中时,https://<haproxyip>:3333我得到:

Jun 25 22:28:46 haproxy haproxy[5750]: 192.168.2.229:54666 [25/Jun/2023:22:28:46.816] ilo3/1: SSL handshake failure

我可能没有意识到自己正在做的事情的困难。非常感谢任何教育。

答案1

握手错误不能被简单地忽略并继续连接。这就像要求汽车在发生致命事故后继续行驶一样。

发生握手错误时,当前连接处于客户端和服务器之间没有共同点来继续握手的状态,例如他们找不到共享的密码、没有共享的协议版本,或者另一个站点只是关闭了底层 TCP 连接。

这与证书验证错误不同,在证书验证中,执行验证的一方(即服务器证书的客户端)可能会决定忽略这些验证问题并继续握手(但现在有中间人攻击的风险)。

现代浏览器无法访问它,因为它使用了古老的密码。

这可能也是 nginx 面临的问题。“支持的密码”就像双方使用的语言。如果他们找不到共同的语言来交谈,沟通就会失败。

这种彼此不理解的问题显然不能简单地忽略。相反,haproxy 需要配置为支持上游也支持的密码和协议。根据上游在协议支持方面的缺陷程度,这可能只需调整密碼SSL-最小版本设置。在某些情况下(非常旧的破损堆栈),可能需要的旧协议版本或密码可能不会编译到 haproxy 中,因此需要重新编译 openssl 和 haproxy 以支持这些旧的东西。

相关内容