在我们的服务器上,我们使用 haproxy 来检查客户端证书。我们通过组合 G1 和 EV 中间证书以及 G1 和 EV 根证书来构建 ca-bundle 文件。我们还有一个没有中间证书的服务器证书。
现在我们遇到了问题。当用户使用客户端证书调用服务器时,它工作正常。但问题是当返回服务器证书时,此证书还包含中间证书和根证书。我们应该只返回带有中间证书的证书,而不是根证书。
为了启用 ssl,我们使用这个 haproxy 配置选项:
frontend https
mode http
bind *:443 accept-proxy ssl verify optional crt-ignore-err all crt <SERVER-CERT>.pem-key ca-file <COMBINDED-CERTS>.ca-bundle crl-file <CRL-FILE>.crl
default_backend ssl-proxy
# rest of the configuration
我们已尝试从 CA 捆绑包中删除根证书,这导致根证书未添加到服务器证书,但从 CA 捆绑包中删除时无法检查客户端证书。此选项不可用。
现在的问题是为什么会发生这种情况以及如何更改根证书不会添加到服务器证书中。
答案 0 :(得分:0)
我相信您正在寻找的是 ca-verify-file
,它是在 HAProxy 2.2 中引入的。
ca-验证文件
<块引用>此设置指定一个 PEM 文件,从中加载用于验证客户端证书的 CA 证书。它指定不能包含在服务器问候消息中发送的 CA 名称中的 CA 证书。通常,“ca-file”必须使用中间证书定义,“ca-verify-file”必须使用证书来结束链,就像根 CA 一样。