带有 Apache 代理和许多用户证书的 mTLS?

问题描述 投票:0回答:1

我无法让我的 Apache 代理服务器将用户在浏览器中选择的证书发送到下游服务器。

问题是 SSLProxyMachineCertificateFile。如果我设置此变量,Apache 会忽略我在浏览器中选择的证书并使用此证书。 如果我不设置它,我会收到错误:AH02268:代理客户端证书回调:下游服务器想要客户端证书,但没有配置

我想在 Apache 中为客户端证书设置 CA,并且应该允许来自该 CA 的任何证书并将其传递到下游服务器。

当然有办法做到这一点吗?

虚拟主机设置:

<VirtualHostInstance name='name' certfilename='example.com'>

SecRuleEngine Off

SSLCACertificateFile userCertChain.pem

SSLVerifyClient require
SSLVerifyDepth 10

SSLProxyEngine On
SSLProtocol all -TLSv1.3 -SSLv2 -SSLv3
SSLProxyProtocol all -TLSv1.3 -SSLv2 -SSLv3

#SSLProxyMachineCertificateFile userCertWithKey.pem

SSLProxyMachineCertificateChainFile userCertChain.pem

SSLProxyCACertificateFile downstreamServerFullchain.pem

SSLProxyVerify require
SSLProxyVerifyDepth 10

#SSLProxyCheckPeerName on
SSLProxyCheckPeerCN on

SSLHonorCipherOrder On

ServerName https://example.com:port
ServerAlias *.example.com

LogLevel debug

<Location />
    Require all granted
    ProxyPass https://example.com/
    ProxyPassReverse https://example.com/
</Location>
</VirtualHostInstance>
apache proxy client-certificates mod-security mtls
1个回答
0
投票

这是不可能的,请参阅:https://stackoverflow.com/a/20859810/5633214

因此,在对代理进行客户端身份验证之后,我从客户端证书中提取了一些详细信息,并将它们作为请求标头发送到后端服务器:

SecRule SSL:SSL_CLIENT_S_DN_O ".*" \
       "phase:1,\
       id:'123456',\
       pass,\
       setenv:O=%{SSL.SSL_CLIENT_S_DN_O}"
RequestHeader set Org %{O}e

有关如何设置标头的信息,请参阅 ModSecurity 文档:https://github.com/owasp-modsecurity/ModSecurity/wiki/Reference-Manual-%28v3.x%29#user-content-setenv

Apache 文档了解您可以从证书中获取哪些信息:https://httpd.apache.org/docs/current/mod/mod_ssl.html

© www.soinside.com 2019 - 2024. All rights reserved.