Primeiramente, sugiro que você evite usar SSLCACertificatePath
e SSLCACertificateFile
ao mesmo tempo. SSLCACertificatePath
é usado para apontar para um diretório contendo vários arquivos, um para cada certificado de CA em que você confia. SSLCACertificateFile
é usado para apontar para um único arquivo, sendo a concatenação de todos os certificados de CA nos quais você confia. Não faz sentido apontar SSLCACertificatePath
para um diretório que também possua chaves privadas (embora eu não tenha certeza se isso causaria problemas de qualquer maneira).
O que importa é que o certificado de cliente que você está usando seja emitido por um dos certificados de CA (indicado por qualquer um dos SSLCACertificatePath
ou SSLCACertificateFile
que você esteja usando): o DN do emissor de seu certificado de cliente deve ser o DN do assunto de um dos certificados de CA que você configurou dessa maneira no Apache Httpd (além disso, ele deve realmente ser emitido por essa CA, portanto a assinatura do seu certificado de cliente deve ser verificável pela chave pública do certificado de CA, mas supondo que você tenha criado sua CA e emitido certificados corretamente: você pode querer verificar isso, apenas no caso).
Você pode verificar o conteúdo de um certificado (CA ou não) no formulário PEM (geralmente .pem
ou .crt
) usando:
openssl x509 -text -noout -in filename.pem
(Isso deve exibir informações suficientes sobre o certificado.)
EDITAR:
Apenas para o caso de haver um problema com seus certificados, você pode tentar estes certificados de teste:
(Todas as senhas são testtest
.)
Você pode importar testclient.p12
no seu navegador. cacert.pem
é o certificado de CA no formato PEM e localhost-cert.pem
é um certificado de servidor para localhost
(portanto, destina-se a testes da própria máquina). localhost-key.pem
é a chave privada do certificado do servidor. Você pode desprotegê-lo usando:
openssl rsa -in localhost-key.pem -out localhost-key-unprotected.pem
Talvez seja necessário confiar cacert.pem
temporariamente no seu navegador, mas removê-lo após os testes (porque obviamente testtest
não é muito secreto, portanto qualquer pessoa pode usar essa CA).