为什么服务器证书与 haproxy 中的 CA 捆绑包中的根证书结合在一起

Why is the server certificate combined with the root certificate from the CA bundle in haproxy

在我们的服务器上,我们使用 haproxy 检查客户端证书。我们通过组合 G1 和 EV 中间证书以及 G1 和 EV 根证书来构建一个 ca-bundle 文件。我们还有一个没有中间证书的服务器证书。

现在我们有问题了。当用户使用客户端证书调用服务器时,它工作正常。但问题是当服务器证书被 returned 时,该证书还包含中间证书和根证书。我们应该只 return 我们的证书带有中间证书而不是根证书。

要启用 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 捆绑包中删除时,无法检查客户端证书。此选项不可用。

现在的问题是为什么会这样,如何改变根证书不会添加到服务器证书中。

我相信您正在寻找的是ca-verify-file,它在HAProxy 2.2中被介绍过。

ca-verify-file

This setting designates a PEM file from which to load CA certificates used to verify client's certificate. It designates CA certificates which must not be included in CA names sent in server hello message. Typically, "ca-file" must be defined with intermediate certificates, and "ca-verify-file" with certificates to ending the chain, like root CA.