Autenticación con certificados electrónicos en tu sitio web

Hoy lanzamos el “Módulo de Autenticación Tractis para Apache”, un plug-in que te permite configurar tu servidor web Apache para, utilizando un canal seguro TLS, autenticar a tus usuarios que utilicen certificados electrónicos.

Como anunciamos hace algún tiempo, estamos abriendo progresivamente a terceros los mismos servicios sobre los que hemos construído Tractis.

Tractis ofrece desde hace tiempo autenticación mediante el uso de certificados digitales. De momento, solamente soportamos el DNIe español aunque esto cambiará drásticamente en breve. Hoy abrimos esta funcionalidad a nuestros usuarios. A partir de ahora, podreis autenticar con certificados electrónicos a los usuarios de vuestro sitio web o aplicación.

El como ofrecer este servicio fué un punto clave en el diseño de la solución que hoy os presento. Las guías de diseño fueron ofrecer una solución simple de instalar, configurar y mantener y que, al mismo tiempo, se adaptara a la mayor parte de las infraestructuras existentes.

A partir de esto, decidimos comenzar ofreciendo el login con certificados electrónicos a las aplicaciones web basadas en Apache.

Un poco de trasfondo antes de empezar

Ahora mismo ofrecer login con DNIe en tu sitio web o aplicación es “posible” empleando el módulo mod_ssl de Apache y configurando que aceptas como Autoridades de Certificación las CAs de la Dirección General de la Policía. Sin embargo, el problema viene del hecho de que mod_ssl funciona con CRLs, que son listas donde se incluyen los certificados que ya no son válidos por haber sido revocados o estar suspendidos. Lamentablemente, el servicio de validación de estado de certificados del DNIe solo funciona mediante OCSP, que es un protocolo de consulta en línea más seguro que CRL pero que aún no está soportado en mod_ssl (al menos no de modo oficial) con lo cual la puesta en marcha se complica.

No validar el estado de los certificados no es una opción. Si no validas, tu sitio está vendido si alguno de tus usuarios pierde el control de su certificado.

Si consigues solucionar el tema del OCSP, ya sabes si el certificado de tu usuario es válido o no pero aún te queda diversión por delante a la hora de poder mapear ese certificado a tu usuario.

El como mapeas la identidad del usuario a su certificado depende del certificado en sí y de como la Autoridad de Certificación optó por plasmar los atributos del usuario en los certificados que emite. En el caso del DNIe no es demasiado difícil ya que se incluye nombre y número de DNI dentro del campo del nombre del sujeto. Aún así, debes analizar este campo y extraer los datos de un nombre en formato X.500… y eso tienes que hacértelo tú.

El problema: La cardinalidad de los problemas

Como bien dice el título del apartado, los problemas crecen cuando crece el número de problemas que tienes. En este escenario la cosa es clara: si tienes un perfil de certificado (como por ejemplo si permites sólo autenticación con DNIe) tienes el problema descrito arriba. Sin embargo, si quieres dar soporte a más certificados, la magnitud de “tu problema” crece linealmente con el número de certificados a soportar.

Así, para cada certificado nuevo, debes configurar el módulo de validación para verificar que los certificados de esa Autoridad de Certificación “X” están soportados añadiendo las CAs raíz, intermedias, CRLs que tú debes refrescar (y rezar para que no funcione solo con OCSP como antes comentaba), probar que todas las piezas encajen… Además, sigues necesitando conocer datos de esa persona como su nombre o ID para poder mapear el certificado a tus usuarios. La tarea no es tan simple porque cada Autoridad de Certificación coloca gran parte de estos atributos de la manera que mejor le place.

Todo el proceso te obliga a estudiar políticas de certificación, configurar módulos de validación e implementar analizadores de campos de certificados. Muy probablemente sean tareas que se encuentran muy lejos de todo a lo que tú te dedicas.

La pregunta es directa: “pero… ¿realmente tengo que hacer todo esto yo para poder ofrecer autenticación con certificados en mi servicio?…“. La respuesta es clara : “por supuesto que no, dejanos a nosotros el problema“.

La propuesta de Tractis

Os proponemos que todo el trabajo de validar el certificado (con todas sus vertientes posibles) así como el extraer los atributos del mismo se lo dejeis a Tractis.

Para ello hemos desarrollado un backend de autenticación y gestión de la identidad que se encarga de todas las tareas descritas.

Al utilizar el “Módulo de Autenticación Tractis para Apache”, trasladas toda la complejidad del proceso de validación y extracción de atributos al back-end Tractis, eliminas la necesidad de realizar costosos desarrollos, estudios minuciosos de perfiles de certificados y contínuas actualizaciones de datos (CAs, CRLs, certificados emisores del OCSP, etc).

Nosotros nos encargamos de todo… tu sólo tienes que instalar nuestro conector en tu servidor Apache y olvídarte del resto.

Hemos liberado el código del “Módulo de autenticación Tractis para Apache bajo licencia MIT, la misma licencia que utiliza Ruby on Rails y una de las licencias open source más permisivas que existen. Puedes modificar el código con o sin fines comerciales así como contribuir tus cambios de vuelta a la comunidad o no contribuirlos, lo que prefieras.

Update 2008.11.11: Además de colgarlo en la sección de Ayuda de Tractis, hemos subido el código al repositorio de GitHub. Así será más fácil revisarlo y modificarlo.

Por David García
Guardado en: Anuncios, Tractis, Tractis Identity | 2 comentarios » | 10 de Noviembre de 2008

2 Comentarios en “Autenticación con certificados electrónicos en tu sitio web”

Gravatar de David Calavera

David Calavera
11 de Noviembre de 2008 a las 10:30 am    

Buaaaa, simplemente genial.

De todas formas, ¿podeis subir el código a un repositorio web, tipo github o kenai para poder tenerlo centralizado y echarle un ojo?

Saludos

Gravatar de Ernesto Jiménez

Ernesto Jiménez
11 de Noviembre de 2008 a las 6:55 pm    

Hola David,

Dicho y hecho: http://github.com/tractis/mod_tractis_auth/tree/master

Ya nos dirás qué te parece :)

Un saludo

Más entradas en Negonation Blog