
Estou tentando configurar um servidor Apache com certificação de cliente habilitada. Para que os clientes pudessem acessar o conteúdo com um certificado de cliente válido.
Digamos que eu tenha o servidor rodando como
https://myserver/myservice/
Também preciso fornecer uma interface para meus clientes obterem seus certificados de cliente, fornecendo algumas informações de autenticação para
https://myserver/myservice/register
Depois que as informações de upload forem verificadas, ele retornará um certificado de cliente.
Se bem entendi, esse caminho deve ser excluído do mecanismo de certificação do cliente, simplesmente porque é usado para gerar certificados. Então a questão é: como posso especificar a configuração do httpd para conseguir isso?
Minha configuração atual é assim:
ProxyPass /myservice/register http://localhost:4444/register
<Virtualhost *:443>
ServerName myserver
DocumentRoot /path/to/my/server/root
ProxyPass /myservice/ ajp://localhost:8009/myservice/
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /path/to/server.cert
SSLCertificateKeyFile /path/to/server.key
...
SSLVerifyClient require
SSLVerifyDepth 10
SSLCACertificateFile /path/to/ca.buddle.pem
</Virtualhost>
Com esta configuração, posso obter o certificado do cliente de
http://myserver/myservice/register
em seguida, acesse o serviço usando-o. Mesmo assim, não consegui configurá-lo para https, para poder fechar a porta 80.
Responder1
Agora consegui a solução, simplesmente usando ou para excluir o caminho do URL de destino.
<Virtualhost *:443>
ServerName myserver
DocumentRoot /path/to/my/server/root
ProxyPass /myservice/register http://localhost:4444/register
ProxyPass /myservice/ ajp://localhost:8009/myservice/
SSLEngine on
SSLProtocol all -SSLv2
SSLCertificateFile /path/to/server.cert
SSLCertificateKeyFile /path/to/server.key
...
SSLVerifyClient require
SSLVerifyDepth 10
SSLCACertificateFile /path/to/ca.buddle.pem
<LocationMatch ^/myservice/register$>
SSLVerifyClient none
</LocationMatch>
</Virtualhost>