Estou investigando sobre isso e funciona com a opção SSL do apache
SSLVerifyClient optional_no_ca
Eu tenho a seguinte configuração de virtualhost.
NameVirtualHost *:443
<VirtualHost *:443>
SSLEngine on
SSLOptions +StdEnvVars
SSLCertificateFile /root/test-https-certificate/test.company.com.crt
SSLCertificateKeyFile /root/test-https-certificate/research.company.com.key
SSLCACertificateFile /root/test-https-certificate/sub.class1.server.ca.pem
SSLCARevocationPath /root/ssl-authentication/crl
SSLCARevocationFile /root/ssl-authentication/crl/crl.pem
SSLCADNRequestFile /root/ssl-authentication/client-cert-issuing-ca.crt
<Directory /var/www/vhosts/test.com/httpsdocs/topsecret>
SSLRequireSSL
SSLVerifyClient optional_no_ca
SSLVerifyDepth 10
</Directory>
DocumentRoot /var/www/vhosts/test.com/httpsdocs/topsecret
ServerName test.company.com
</VirtualHost>
Meu problema agora é que todos os que possuem certificado ou não podem acessar a minha pasta restrita, lendo a documentação sobre o mod_ssl do apache. Encontrei a opção SSLRequire mas como posso implementá-la, quando use-o na minha tag, ele me redireciona para o padrão DocumentRoot do apache.
E outra dúvida .. de um ponto de vista de segurança o que estou fazendo está correto? Ter certificado autoassinado para clientes e um assinado por uma entidade oficial para o servidor?