我有一个双向 TLS 设置,HAProxy 终止传入的 SSL 连接。我需要在后端执行客户端证书验证,而不是在 haproxy 端,因为我们有一个动态信任库,我不能只设置一个 ca 文件并将所有验证逻辑委托给 haproxy。常规设置工作正常(haproxy 针对 CA 证书验证客户端证书):
bind *:443 ssl crt /etc/certs/haproxy.pem verify required ca-file /etc/certs/ca.crt
http-request redirect scheme https unless { ssl_fc }
http-request set-header X-SSL-ClientCert %{+Q}[ssl_c_der,base64]
后端X-SSL-ClientCert
正确接收,但这还不够。如果verify required ca-file /etc/certs/ca.crt
去掉 haproxy 上的验证跳过验证,X-SSL-ClientCert
在后端读取时为空,即 HAProxy 不再使用客户端证书设置标头。有想法该怎么解决这个吗?