Eu queria autenticar clientes com certificados emitidos por sub-CAs de uma AC intermediária, ou seja, como segue:
Root-CA
|
Intermediate-CA
________|_____________
| |
SUB-CA 1 SUB-CA 2
_____|_____ ____|____
| | | |
TEST-SRV TEST-CLI PROD-SRV PROD-CLI
Você pode usar a variável SSL_CLIENT_CERT_CHAIN_n para inspecionar a cadeia e, por exemplo, faça o seguinte:
SSLRequireSSL
SSLVerifyClient require
SSLCACertificateFile ".../root-ca.cert.pem"
Require expr %{SSL_CLIENT_CERT_CHAIN_1} == file(".../intermediate.cert.pem")
ou até várias CAs intermediárias de primeiro nível:
Require expr %{SSL_CLIENT_CERT_CHAIN_1} in { file('".../intermediate.cert.pem"), file(".../intermediate2.cert.pem") }