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



需要帮助!!. 我有一个https请求,需要拦截它,读取值并将相同的ssl请求转发到目的地。我带了所有需要的crt,key,CA。我知道Haproxy ACL不与L4层一起工作,但我正试图找到一种解决方法来解密消息,读取消息,再次加密并转发。读取消息的原因是为了使用ACL,它需要读取各种请求中的路径差异,并相应地将请求路由到不同的服务器。我试图拦截客户端对服务器的请求,请求默认是SSL,服务器期望SSL请求

ssl crt:使用新的crt-key对创建一个新用户,并使用服务器的证书签名请求对服务器

中的CA进行身份验证场景是,我有一个传入的SSL请求,我用服务器证书捕获到haproxy的前端,同时将该请求转发到测试web服务器,我能够看到它已经从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>

验证我的证书是否有效并正在连接:Openssl s_client -connect:6443 -cert myuser。CRT -key myuser。key - file ca.crt输出:

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

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

错误:无法连接到服务器:x509:证书指定了不兼容的密钥用法

Ha代理错误:2012-08-12 t14:45:36 .930478+02:00 parasilo-27 haproxy[21562]::34672 [12/Aug/2021:14:45:36.927] server/1: SSL握手失败2012-08-12 t14: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到证书后,Original Poster报告成功。

最新更新