L
ast
message
I
sent
had
formatting, I'm sorry.
Hi,
In our reverse proxy, we have a virtual host serving more than one Location.
Both locations require client certificate. SSLCACertificateFile includes
all root CAs trusted by both locations.
So, in Location2 I would like to allow access only to certificates where
the chain is:
CLIENT_CERT
\_ INTERMEDIATE_CERT (Issuer)
\_ ROOT_CA (issuer's Issuer) <-- can I access this with SSLRequire?
QUESTION: is there a way to control access by the root CA that is on top of
the chain?
I tried SSLRequire but it seems I can't access the root cert, only the
client cert and the intermediate (issuer) using SSL_CLIENT_I_DN.
I tried to use CustomLog and show %{SSL_CLIENT_CHAIN_1} and _2 but only the
intermediate is logged in _1, nothing is logged in _2.
It seems the only way to do this is splitting location2 to another virtual
host where I trust only the required root CA using SSLCACertificateFe would
prefer to avoid that, we don't want to change the web service endpoint
(both locations are web services).
Here's what I was trying:
<VirtualHost ws.my.domain>
SSLCACertificateFile bundle.crt
VerifyClient require
SSLVerifyDepth 3
<Location /location1>
...
</Location>
<Location /location2>
VerfiyClient require
SSLRequire %{SSL_CLIENT_CERT_CHAIN_1} == file("root1.pem")
...
</Location>
</VirtualHost>
I appreciate
any help,
Felipe