TLS 握手失败。 HTTPS 请求到 HAproxy 到 http 然后再次加密以将请求转发到 ssl 服务器

TLS handshake fail. HTTPS request to HAproxy to http and then encrypt it again to forward request to ssl server

需要帮助!!! .我有一个 https 请求,需要拦截它、读取值并将相同的 ssl 请求转发到目的地。 crtkeyCA 我都带齐了。我知道 Haproxy ACL 不适用于 L4 层,但我正在尝试找到一种解决方法来解密消息、读取消息、再次加密并转发。读取消息的原因是使用 ACL 我需要读取龋齿请求中的路径差异并将请求相应地路由到不同的服务器。我正在尝试拦截客户端对服务器的请求,默认情况下请求是 SSL 并且服务器期待 SSL 请求

ssl crt: 使用新的 crt-key 对创建了一个新用户,并使用服务器的证书签名请求对服务器中的 CA 进行身份验证

场景是我有一个传入的 SSL 请求,我使用服务器证书将其捕获到 haproxy 的前端,同时将该请求转发到测试网络服务器,我能够看到它已从 HTTPS 更改为 HTTP .现在,当我尝试重新加密时,原始目的地无法接受请求,因为它不是 SSL,我尝试在后端添加证书但没有用。请检查我当前的 Haproxy 配置,并在可能的情况下提供帮助。我不是网络通信/加密/ HaProxy 方面的专家。

frontend test
    bind IP:6443 ssl crt <location>
    option httplog
    mode http
    default_backend testback
backend testback
    mode http
    balance roundrobin
    option http-check
    server <host> IP:6443 check fall 3 rise 2 ssl verify required ca-file <loc> crt <loc>

To verify my certicates are valid and connecting: openssl s_client -connect :6443 -cert myuser.crt -key myuser.key -CAfile ca.crt Output:

SSL handshake has read 1619 bytes and written 2239 bytes
Verification: OK

所以我认为证书没有问题,使用 Ha 代理进行连接时出现问题

Error: Unable to connect to the server: x509: certificate specifies an incompatible key usage

Ha proxy error: 2021-08-12T14:45:36.930478+02:00 parasilo-27 haproxy[21562]: :34672 [12/Aug/2021:14:45:36.927] server/1: SSL handshake failure 2021-08-12T14:45:37+02:00 localhost haproxy[21562]: :34674 [12/Aug/2021:14:45:37.438] server/1: SSL handshake failure

总结一下评论里分析的内容,如问。也许有一天它会对某人有用。
Haproxy 的配置结果是正确的,但生成的证书有错误 extended key usage(X509v3 扩展名)。 命令列表 extended key usage:

openssl x509 -in /path/to/cert.pem -noout -ext extendedKeyUsage

网上买的,经常显示X509v3 Extended Key Usage: TLS Web Server Authentication, TLS Web Client Authentication。原始发帖者使用自签名、自生成的证书,他在 haproxy 前端使用的证书只有 TLS Web Client Authentication,如果完全使用此扩展,前端需要 TLS Web Server Authentication
这导致错误消息:

Error: kubectl get po: Unable to connect to the server: x509: certificate specifies an incompatible key usage

因此 haproxy 记录 SSL handshake failure 没有任何更多细节,这是它的习惯。

在 haproxy 的前端部分向证书添加 TLS Web Server Authentication 并在 haproxy 的后端部分向证书添加 TLS Web Client Authentication 后,原始发帖人报告成功。