Meta:
Meu objetivo é configurar um servidor web Apache em uma caixa Centos, com validação de certificado SSL e cliente similar ao seguinte host virtual Apache ( ):
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /path/to/myserver.pem
SSLCertificateKeyFile /path/to/myserver.key
SSLCACertificateFile /path/to/ca.pem
SSLCACertificatePath /path/to
SSLVerifyClient require
<Location />
SSLRequireSSL
SSLOptions +FakeBasicAuth
AuthName "FakeBasicAuth"
AuthType Basic
AuthUserFile /path/to/httpd.passwd
require valid-user
</Location>
ScriptAliasMatch ^(.*) /path/to/hgwebdir.cgi$1
</VirtualHost>
Solução atual:
A partir de agora, tenho uma solução Apache funcional baseada em um certificado de CA autoassinado que é usado para criar uma CA intermediária que é usada novamente para criar um certificado de servidor da Web ( link ).
A CA, a CA intermediária e os certificados do servidor da Web são usados em um arquivo host virtual do Apache para configurar a comunicação SSL. Quando não uso o SSLVerifyClient, a solução funciona conforme o esperado, tanto no próprio servidor da Web quanto na caixa do Windows em que o certificado de CA foi adicionado. Nenhuma tela irritante e tudo é bom.
Problema:
Mas assim que eu adiciono o SSLVerifyClient eu recebo o 'ssl_error_handshake_failure_alert'
no Firefox na caixa do windows e 'sslv3 alert handshake failure'
no servidor centos usando o comando 'openssl s_client -connect [ip]:[port]'
.
Essa falha é certa, porque estou perdendo o certificado de cliente, mas como esses certificados de cliente devem ser criados e usados? Não consigo ver onde esse certificado de cliente se encaixa.
Eu tentei jogar com o Pageant de massa, mas parece que isso é apenas para o protocolo ssh e não seguro http. Eu estou procurando uma solução http segura, onde o certificado de cliente é instalado na caixa do windows, permitindo que os desenvolvedores acessem o servidor web.