
Estoy intentando configurar un servidor Apache con la certificación de cliente habilitada. Para que los clientes pudieran acceder al contenido con un certificado de cliente válido.
Digamos que tengo el servidor ejecutándose como
https://myserver/myservice/
También necesito proporcionar una interfaz a mis clientes para obtener sus certificados de cliente proporcionando cierta información de autenticación para
https://myserver/myservice/register
Una vez verificada la información de carga, devuelve un certificado de cliente.
Si entiendo correctamente, esta ruta debería excluirse del mecanismo de certificación del cliente, simplemente porque se utiliza para generar certificados. Entonces la pregunta es, ¿cómo puedo especificar la configuración httpd para lograr esto?
Mi configuración actual es así:
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>
Con esta configuración, puedo obtener el certificado de cliente de
http://myserver/myservice/register
luego acceda al servicio usándolo. Sin embargo, no logré configurarlo en https para poder cerrar el puerto 80.
Respuesta1
Ahora tengo la solución, simplemente usando o excluyendo la ruta de la 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>