Activar validación de clientes con SSL en apache

En una ocasión, un cliente nos solicitó que activásemos una validación de usuarios mediante certificados para una parte de un sitio web del cliente. Concretamente, el cliente deseaba utilizar los certificados de la Fabrica Nacional de Moneda y Timbre (FNMT).

Pues bien, la configuración es relativamente sencilla. Primero de todo, debemos obtener los certificados de la FNMT (o la CA en cuestión), ya sea un único .crt o un .pem

Seguidamente, en la configuración de nuestro VirtualHost para HTTPS, añadiremos una configuración similar a esta:

 

Procedo a explicar. Primeramente, añadimos la CA a nuestro virtualhost, para que Apache pueda contrastar la validez de los certificados con ella. Seguidamente, con SSLVerifyClient none, indicamos a Apache que establezca la validación en None para evitar que se valide todo el sitio web.  Después, hemos activado la validación SSL por cliente en tres ubicaciones diferentes (con Location) a través de la directiva SSLVerifyClient require, por lo que el resto de la web será libre para todo el mundo, pero cuando algún usuario intente acceder a alguna de dichas ubicaciones, se solicitará el certificado.

Como añadido, en caso de que delante de Apache tengamos un Proxy reverso como Nginx, será necesario que Nginx sepa que debe pasar en las cabeceras el certificado a Apache, de lo contrario no funcionará.

Para ello, con añadir la siguiente directiva en la configuración de Nginx, no debería haber problema.

 

Deja un comentario

Tu email nunca se publicará.