Posts de David García:

Soporte a tablas en contratos

Esta semana hemos añadido las tablas a las estructuras disponibles en la edición de Contratos y Plantillas.

El disponer de tablas aporta cierta potencia a la hora de estructurar contenidos donde queramos establecer una separación visual tabulada simulando un formulario.

De momento hemos querido apostar por unas tablas simples que no aportaran más que la posibilidad de definir matrices bidimensionales. Esto viene dado por la filosofía de nuestro editor WYSIWYM (contrapuesta a WYSIWYG) donde lo importante es el contenido y no la representación.

Con este enfoque, los contenidos de los documentos generados son menos potentes, visualmente hablando, pero evitamos que se puedan añadir efectos visuales que alteren la percepción del lo firmado como cláusulas ocultas usando “display:none”, texto del mismo color que el fondo, etc.

Ejemplo de contrato con tablas

Dentro de las celdas de la tabla podéis añadir texto y por supuesto variables.

Tenéis disponible la opción de “Crear tabla” en la nueva barra de edición de contratos y plantillas.

Por David García
Guardado en: Anuncios, Tractis | Sin comentarios » | 16 de Junio de 2010

Mejorando la usabilidad en la firma

En Tractis trabajamos continuamente para evolucionar los servicios que ofrecemos, intentando que cada vez sean más fáciles e intuitivos en su uso. Mejorar la usabilidad de una web no es fácil ya que requiere estudiar muchos aspectos que ayuden a clarificar los conceptos expuestos, optimizar la navegación … en definitiva mejorar la experiencia del usuario.

Analizando nuestro servicio de contratos online podemos ver que éste tiene un punto “caliente” donde se concentra la mayor complejidad y criticidad del servicio y donde, por ende, debemos poner toda la carne en el asador para optimizar la experiencia de uso: la firma del contrato. Y sobre este punto, el proceso de firma, sobre el que hemos realizado nuestras últimas mejoras.

En el proceso de firma se concentran certificados, firmas, claves, tarjetas inteligentes, lectores, almacenes de claves… conceptos complejos y fuera del alcance del común de los usuarios.

La manera razonable de proceder en un inicio es trasladar cierta parte de la complejidad de este proceso al usuario. El usuario consigue su certificado, el usuario compra su lector, el usuario instala todo, el usuario reza … y si hay suerte el conglomerado aplicación + hardware + controladores funciona.

Este escenario es complejo y desolador. No tanto porque el desarrollador de la aplicación no esté haciendo bien su trabajo, sino porque la tecnología sobre la que se basa la firma digital para usuarios finales esta todavía lejos del plug and play en la gran mayoría de casos.

Primer paso para solucionar un problema, aceptarlo

Como ya hemos comentado anteriormente el punto donde el usuario confluye con las tecnologías de firma suele ser el punto crítico al que nos enfrentamos en terreno de usabilidad en Tractis. Hay muchos factores que pueden frustrar la experiencia del usuario y los más críticos están fuera del control del desarrollador y muchas veces hasta del propio usuario.

El culpable de esto sea quizás que las tecnologías de firma hasta ahora se habían enmarcado sobretodo en poblaciones mas o menos reducidas e instruidas en estas tecnologías como colegios o asociaciones profesionales con lo cual este tipo de tecnologías no habían madurado lo suficiente para ser “vulgarizadas”.

Con “vulgarización” (concepto ciertamente acertado del que no soy creador) nos referimos a ese punto donde la tecnología está tan madura (o en su defecto sus defectos tan asumidos) que cualquier persona sin una formación específica puede hacer uso de ella. Ni que decir tiene que en el caso de la firma digital estamos todavía ciertamente lejos de llegar a ese punto.

Esta situación, donde la barrera de la técnica aún esta demasiado alta, se debe a una conjura de factores como el que el usuario final aún no tenga acceso universal a los lectores o que los desarrolladores de sistemas operativos no incluyan controladores para más que unos pocos lectores de tarjeta inteligente out-of-the-box. También ayuda que cada tipo de certificado tenga sus propios controladores, normalmente cerrados y por supuesto incompatibles con los de la competencia.

Paso a paso

El intentar hacer fácil el proceso de firma, bajando o eliminando barreras que la tecnología te impone no es algo fácil. De hecho incluso hay muchas barreras que para nosotros no lo son pero que molestan a nuestros usuarios. En este caso hay un doble trabajo por delante: hacerlo lo mejor posible y abrir bien las orejas para ver que es realmente lo que molesta al usuario y no le deja firmar.

Así poco a poco con sugerencias tipo: “¡Pero es que a veces se me olvida conectar el lector!“, “¿porque tengo que instalarme los drivers en cada ordenador que quiera usar mi certificado?” o “¿Qué significa que no aceptáis la política del certificado?“” puedes identificar las verdaderas aristas puntiagudas del día a día del uso de la aplicación.

fnmtAhora los mensajes dan información mucho mas detallada

La tercera generación de aplicaciones de firma Tractis

Para intentar eliminar un poco mas la barreras que presentan nuestros servicios al usuario hemos creado la tercera generación de nuestro componente de firma.

Haciendo un poco de historia, en la primera generación de Tractis creamos una aplicación que permitiera firmar contratos en los diferentes sistemas operativos con independencia del soporte del certificado (tarjeta, usb, fichero…).

La segunda generación hizo hincapié en mejorar experiencia de firma y se mejoraron los flujos de interacción con el usuario, se aumentó la información ofrecida en el proceso de firma y la capacidad de actuación del usuario, permitiéndole filtrar los tipos de certificados aceptados para la firma (según país, nivel de seguridad…).

En la tercera generación queremos añadirle inteligencia a nuestra aplicación para que sea consciente del entorno en el cual se ejecuta y pueda ayudar al usuario en el proceso de firma. Esta inteligencia la hemos aplicado en el punto donde actualmente hay mas fricción con el usuario: la firma con tarjetas inteligentes.

El lector y la tarjeta son los dos puntos más importantes. Aquí podemos tener problemas con los drivers o problemas derivados de descuidos del usuario (p.ej: no haber conectado el lector o la tarjeta).

A partir de hoy, nuestra aplicación analizará el ordenador desde el que se está realizando la firma y, atendiendo a si todo esta correcto o hay algún tipo de error en lector o tarjeta, emite un diagnóstico concreto al usuario para que este lo solvente. Se trata de un gran ayuda ya que permite atajar los problemas concretos sin necesidad de hacer que el usuario investigue la causa de éstos.

Asimismo, Tractis también se dará cuenta si se produce una inserción o extracción de tarjeta con lo que puede reaccionar de manera automática a estos eventos añadiendo o quitando certificados de los disponibles sin intervención alguna por parte del usuario.

Ahora podemos detectar lector y tarjetas inteligentesAhora podemos detectar lector y tarjetas inteligentes

Con estas mejoras muchos de los problemas derivados de descuidos o falta de instalación de componentes quedan paliados. Se mejora mucho la experiencia y se reduce la frustración del usuario.

También hemos analizado todos los mensajes que enviamos al usuario y donde le informamos de las condiciones de error o de puede o no puede firmar con ciertos tipos de certificados y hemos visto que, aunque técnicamente eran correctos, eran indescifrables para muchos usuarios.

Así que nos hemos abstraído de la pura técnica y hemos re-estudiado todos los mensajes que hasta ahora dábamos intentando hacerlos mas comprensibles para el usuario medio.

Un poco de magia

Nuestro sueño pasa por que un usuario enchufe su lector, introduzca su tarjeta y , magia mediante, todo el proceso de firma funcione sin ninguna instalación previa de controladores. Por desgracia estamos muy lejos de ello… o, al menos, lo estábamos :) .

Como anunciamos la semana pasada, Tractis ya soporta el eID austriaco para la firma de contratos y en procesos de autenticación. Estos certificados no disponen de un controlador a la usanza sino que deben manejarse hablando directamente con la tarjeta inteligente donde se encuentran hospedados, utilizando lo que se conoce como APDUs o comandos de manejo de la tarjeta inteligente.

El problema de estos APDUs es que cada tarjeta tiene unos comandos diferentes y añadir soporte a un nuevo tipo de certificados acarrea un desarrollo bastante mas complejo que el derivado de la integración empleando controladores del certificado.

La ventaja en cambio cae del lado del usuario ya que hace posible que pueda utilizar su certificado sin necesidad del instalar driver alguno, cosa que nos acerca al soñado objetivo que habíamos comentado.

Nuestra tercera generación de aplicación incorpora el uso directo de certificados en smartcards mediante el uso de comandos APDU a las tecnologías ya disponibles (MSCAPI para Windows, PKCS11 para Linux y Mac y PKCS12 para certificados en fichero).

De momento disponemos de esta funcionalidad para los certificados de la Buergerkarte austriaca (que es el equivalente al DNIe en Austria) pero pronto ampliaremos su uso a los certificados más usados en la plataforma, según dispongamos de las especificaciones técnicas de sus tarjetas y los usuarios así lo pidan.

En Austria ya pueden firmar sin drivers, en España... en breve!En Austria ya pueden firmar sin drivers, en España… ¡en breve!

No se vayan , aún hay mas

Esto no termina aquí. Esta es la tercera generación de aplicación de firma de Tractis pero no es, ni de lejos, la última que nos veréis comentar. Poco a poco, seguiremos evolucionando la experiencia de firma hasta que consigamos que, al final, realizar una firma online, sea tan natural como ha llegado a ser el dar al play y ver un vídeo por Internet.

Por David García
Guardado en: Anuncios, Firma digital, Tractis | 3 comentarios » | 3 de Septiembre de 2009

Tractis Identity: Autenticación con DNI-e en Java

JavaEstamos muy contentos con la gran acogida que está recibiendo Tractis Identity. Tras los plugins de Drupal, Rails y CakePHP, hoy hacemos lo propio con Java.

En el caso de Java estamos hablando de un lenguaje y no de un CMS (Drupal) o de un framework (Rails, CakePHP), así que hemos querido acotar la cosa a un escenario mas concreto. Para ello hemos creado una serie de taglibs para JSP que permitan integrar de manera sencilla los servicios de identidad en una plataforma web basada en J2EE.

De este modo la integración se simplifica al extremo quedando como única dificultad definir dentro de tu página de login

<%@ taglib uri="/taglib.tld"  prefix="tractis" %>
<html>
Pon aquí tu código html....
 <tractis:IdentityVerificationForm/>
</html>

y otra página a donde Tractis redirija el resultado de la verificación. Esta página solamente debe contener el código

<%@ taglib uri="/taglib.tld"  prefix="tractis" %>
<html>
 Pon aquí tu código HTML...
 <tractis:IdentityVerificationCheck/>
</html>

En este último caso este tag automáticamente efectúa las validaciones internas pertinentes contra Tractis y pone en sessión los atributos recuperados.
A partir de ahí la cosa es tan simple como coger los atributos y usarlos.


<%= session.getAttribute("tractis:attribute:name") %> 

Hemos abierto el código de esta librería para que podáis usarlo y modificarlo para adaptarlo a lo que necesitéis. Tenéis toda la información sobre esta librería en la sección correspondiente de la ayuda de Tractis. Desde allí podréis acceder también al repositorio donde lo hemos publicado.

Ya no hay excusas para ofrecer autenticación con DNI-e (y otros certificados) con la máxima seguridad y completamente gratis en vuestro sitio web.

Por David García
Guardado en: Anuncios, Programación, Tractis | Sin comentarios » | 14 de Agosto de 2009

Vulnerabilidad de Java en Mac OS X al fín solucionada

Numerosos blogs se están haciendo eco de que Apple por fin ha solucionado un problema que afectaba a la máquina virtual de Java en Mac OS X. Este problema permitía potencialmente ejecutar código arbitrario en el sistema donde corriera la VM de Java basándose en ataques sobre una clase concreta del core de Java.

Con un poco más de demora de lo deseable Apple ha procedido a sacar parches para la versión 10.4 y 10.5 que solucionan el problema. Tenéis más detalles sobre el citado problema y los parches de Apple aquí.

Dado que Tractis utiliza la máquina virtual de Java para la detección y utilización de certificados electrónicos, os recomendamos que, si tenéis un ordenador con Mac OS X, instaléis estos parches ya sea vía Software Update o en los enlaces del sitio oficial (10.4 y 10.5).

Por David García
Guardado en: Anuncios | Sin comentarios » | 16 de Junio de 2009

Ya puedes utilizar Google Chrome en Tractis

googlechromelogo1A partir de hoy ya puedes utilizar Google Chrome en Tractis, tanto para propósitos de autenticación como de firma.

Google Chrome pasa así a forma parte de la lista de navegadores soportados en Tractis:

Te recomendamos darle una oportunidad a Google Chrome. En nuestros tests internos, Chrome es el navegador más rápido en todas las operaciones de autenticación y firma con certificado electrónico (carga de applet, auto-detección de certificados, etc) así como en el tratamiento de páginas que hacen un uso intensivo de javascript.

Por David García
Guardado en: Anuncios, Tractis | Sin comentarios » | 2 de Junio de 2009

Cómo instalar tu DNI electrónico en Mac OS X

es.pngHacer uso del nuevo DNI electrónico (el eID español) aún no es todo lo fácil que sería deseable.

El proceso de instalación difiere ligeramente según el modelo de lector que tengamos y el sistema operativo donde queramos instalarlo. Por ello, abarcar todas las posibles combinaciones de lector y sistema operativo en un único post se antoja complicado.

Una vez dispongamos del lector la cosa no está ni mucho menos solucionada. Todavía queda instalar los controladores del lector y los controladores del propio DNIe. Es probable que podamos librarnos del paso de instalar controladores para nuestro lector si éste viene soportado por defecto en el sistema operativo, pero de instalar los drivers del DNI electrónico, a día de hoy, no hay quien nos salve.

De momento, los usuarios que más dolor nos han proyectado son los Mac-eros. Y es que la instalación en Mac OS X es un poco “tricky”. Para arrojar un poco de luz a este tema he confiscado un Mac con OS X y he realizado todo el proceso necesario para tener el DNI electrónico funcionando. Por suerte, es un proceso que la gente del DNI electrónico ha documentado bastante bien, así que seguiremos sus indicaciones para intentar llegar a buen puerto.

Descripción del entorno de trabajo

campana_chipeteras

Paso 1: Consigue un lector de tarjetas

El primer gran problema es hacerse con un lector de tarjetas inteligentes (o “chipetera”) donde poder utilizar el DNI electrónico. Afortunadamente, este problema cada vez lo es menos. Poco a poco, van apareciendo más lectores en el mercado y a un precio cada vez más competitivo.

Si aún no tienes un lector, mírate nuestras recomendaciones sobre donde conseguirlos.

Paso 2: Instala las librerías de OpenSC y los drivers del DNIe

Este proceso está basado en lo descrito en la documentación de instalación disponible en el portal del DNI electrónico, concretamente en el punto 3 “Instalación y configuración de sistemas Mac OS X“.

El proceso es simple, debemos bajar las librerías de OpenSC y los drivers de DNI electrónico e instalarlos en ese orden:

  1. OpenSC es un conjunto de librerías para el uso de tarjetas inteligentes en ordenadores. Mac OS X ya lleva por defecto un OpenSC, pero éste no funciona demasiado bien con los drivers del DNI electrónico, así que deberemos actualizarlo. Para instalarlo debemos bajar OpenSC para OS X 10.5 o OpenSC para OS X 10.4. Esta librería se instala del mismo modo que una aplicación normal. Ejecutaremos el instalador y seguiremos los pasos que nos vaya planteando hasta que se nos informe de que la librería se ha instalado correctamente.
  2. Drivers DNIe: El siguiente paso es instalar los controladores del DNI electrónico. Para ello, debemos bajarlos de aquí y también instalarlos del mismo modo que OpenSC. Cuando la instalación acabe nos pedirá reiniciar la máquina, así que le seguimos el rollo y reiniciamos.

Paso 3: Comprueba que todo está en orden

Hasta aquí está todo sacado casi de manera literal del manual del DNI electrónico. Ahora viene la parte de comprobar que todo está funcionando correctamente. Un diagnóstico rápido pero no muy fiable, son las luces del lector. Con todo instalado y la tarjeta introducida, la luz del lector LTC31 debería ser verde. Si tu luz es roja o si tu lector solo tiene una luz, conviene realizar un diagnostico mas fiable. Para ello, debes ejecutar desde la consola el comando:


/Library/OpenSC/bin/pkcs15-tool -D

pkcs15-tool es una herramienta que proporciona OpenSC y que permite, entre otras cosas, mostrar el estado de los lectores y de las tarjetas inteligentes conectadas en el sistema. La opción -D insta a esta utilidad a volcar toda la información de los dispositivos conectados. Antes de ejecutar el comando asegúrate de que el lector esta conectado, que la tarjeta está insertada y que has instalado las librerías OpenSC y Drivers DNIe que tocan para tu sistema operativo.

El resultado de ejecutar este comando nos dará pistas sobre si todo funciona o hay algún tipo de problema con la instalación. Si todo va bien el resultado debería ser algo parecido a esto:


my-mac:bin user$ ./pkcs15-tool -D
PKCS#15 Card [DNI electrónico]:
Version        : 1
Serial number  : 063AA3BA682276
Manufacturer ID: DGP-FNMT
Flags          : Login required, PRN generation

PIN [PIN1]
Com. Flags: 0x3
ID        : 01
Flags     : [0x211], case-sensitive, initialized, integrity-protected
Length    : min_len:4, max_len:16, stored_len:16
Pad char  : 0x00
Reference : 1
Type      : ascii-numeric
Path      : 3f00

Private RSA Key [KprivAutenticacion]
Com. Flags  : 3
Usage       : [0xC], sign, signRecover
Access Flags: [0x1D], sensitive, alwaysSensitive, neverExtract, local
ModLength   : 2048
Key ref     : 1
Native      : yes
Path        : 3f003f110101
Auth ID     : 01
ID          : 4130363341413342413638323237363230303830323131313531303536

(...)

Hemos cortado el mensaje porque es muy largo. Puedes ver el mensaje completo aquí. Verás que una serie de mensajes de error avisando de un Security status not satisfied aparecen numerosas veces. No hay de que preocuparse, éstos mensajes son “normales”. Si tu resultado no se parece al mensaje anterior y/o  tienes algún mensaje de error tipo : No Readers found o No cards found entonces es que hay algo que no termina de ir bien en la instalación.

Si todo ha salido según lo descrito en el apartado anterior, ya puedes utilizar  tu DNI electrónico en Tractis. Podrás autenticarte en la plataforma usando un mecanismo mucho más robusto que el usuario/contraseña y firmar contratos con las máximas garantías de validez legal. Además, el DNIe te abre la puerta a un número creciente de aplicaciones que hacen uso de él, como banca segura en línea y trámites con la administración (consulta de datos fiscales, vida laboral, puntos del carnet de conducir, padrón, declaración de la renta, etc).

One more thing… Instalando los certificados en Firefox

Firefox tiene su propio sistema de gestión de certificados, completamente independiente del que dispone el sistema operativo. Por esta razón, una vez que tu sistema esté preparado para utilizar tu DNI electrónico, también deberás decirle a Firefox que puede hacer uso del DNIe.

Los drivers del DNI electrónico incluyen una página html que “mágicamente” (utilizando javascript) añaden los certificados de tu DNIe al repositorio de Firefox. Para acceder a esta página solo tienes que abrir desde tu navegador la ruta local

/Library/OpenSC/Share/web/instala_modulo.htm

…y seguir los pasos que te indiquen hasta recibir la confirmación de que los certificados se añadieron de manera satisfactoria.

Este último paso NO es necesario para utilizar tu DNIe en Tractis pero sí que es recomendable para aquellos usuarios que quieran utilizar Firefox y su DNIe en otros portales.

Conclusiones

A día de hoy, instalar un DNI electrónico en Mac OS X no es todo lo fácil que cabría esperar de un dispositivo destinado a ser de uso universal. Aún estamos ante una tecnología nueva (fuera de los cículos más tecnológicos)  y es normal que ciertos pasos aún no sean todo lo fáciles e intuitivos que nos gustaría. Por suerte, la gente del DNI electrónico proporciona buenas guías que arrojan mucha luz en el proceso de instalación.

Este post es nuestro granito de arena para favorecer el uso de esta tecnología tan potente entre los usuarios de Mac. Esperamos que os sea útil.

Por David García
Guardado en: eID, Firma digital, Tecnología | 10 comentarios » | 29 de Mayo de 2009

Usando maven

Normalmente no suelo escribir sobre aspectos tecnológicos que no tengan que ver con la firma digital o con el servicio que Tractis presta.

Hoy sin embargo me gustaría centrarme en una herramienta muy presente en mi día a día y que me esta haciendo la vida bastante mas fácil: maven.

No daré ningún tutorial de como funciona la cosa, porque para eso ya hay muchísima documentación que lo explica bastante mejor de lo que yo lo haría. Explicaré como nos ayuda maven en la gestión de la configuración en nuestros proyectos.

Un poco de introducción

El principal problema con el que me encontraba a la hora de gestionar el gran numero de pequeños subsistemas Java que tenemos en el backend de Tractis es que gestionar el ciclo de vida de éstos requiere de muchas tareas repetitivas que pueden ser automatizadas y la inclusión de muchas librerías de terceros.

Para esta automatización usábamos Ant de Apache que nos ayudaba a la gestión de tareas repetitivas durante el desarrollo de nuestros proyectos.

Ant es muy bueno para automatizar tareas repetitivas pero la gestión de librerías externas no es todo lo potente que podría ser. La manera común de usar una librería en uno de nuestros proyectos era bajar la versión adecuada, ponerla en un directorio del proyecto e incluirla mediante el classpath en nuestra aplicación.

Esta manera de gestionar las librerías puede funcionar cuando tienes pocos proyectos o los proyectos tienen muy pocas librerías en común. Por el contrario, si cuando buscas una librería en todos tus proyectos obtienes 10 resultados: tienes un problema con la gestión de librerías; y más aun si te paras a ver las distintas versiones de la librería en cada uno de los proyectos.

Es por esto que Ant, pese a que puede ser una alternativa razonable si tienes pocos proyectos, se queda corto conforme vamos teniendo un número considerable de proyectos para gestionar.

Maven al rescate

Maven es una tecnología más que asentada y que se usa en la mayoría de proyectos Open Source Java, pero nunca esta de mas reconocer las enormes ventajas que su aplicación nos aporta.

Esta tecnología ayuda a gestionar el ciclo de vida de los proyectos.Para ello se definen las fases del proyecto (compilación, test, empaquetado, despliegue) en un fichero de meta-información llamado POM donde se recogen detalles de las tareas a realizar en cada fase. También se recogen detalles de la naturaleza del proyecto como por ejemplo sus dependencias respecto a librerías de terceros.

Maven permite la gestión automatizada de estas dependencias de librerías de un modo mas que notable. Simplemente es necesario incluir la referencia a la librería dentro del fichero POM así como la versión requerida y maven la bajará del repositorio por defecto (o de otro que se encuentre configurado dentro del POM) y la incluirá en el repositorio local.

Esto facilita la gestión de la configuración muchísimo ya que los proyectos no van engordando con librerías que se encuentran duplicadas a lo largo de nuestro sistema de control de versiones.

Además la gran mayoría de los proyectos Open Source o bien tienen sus librerías dentro del repositorio por defecto de maven o disponen de un repositorio propio.

En resumen

Yo en un principio pensaba que con mi ant ya me iba bien pero despues de probar maven te quedas con la misma sensación que tienes con gem en ruby o apt-get en debian o ubuntu…¿Como he vivido tanto tiempo sin esto?!

Por David García
Guardado en: Programación, Tecnología | Sin comentarios » | 26 de Marzo de 2009

Tractis incorpora los certificados de eSign Chile

Bandera de Chile

Tractis continua su paulatina expansión por el continente latinoamericano con la incorporación de una nueva autoridad de certificación en chile E-Sign.

E-Sign forma parte de la VeriSign Trust Network y dispone de gran cantidad de servicios de firma digital y de diversos perfiles de certificados. En Tractis comenzamos incluyendo soporte para sus certificados de Firma Electrónica Avanzada pero en un futuro continuaremos incluyendo mas perfiles según lo que vosotros vayáis requiriendo.

Con el desembarco de esta nueva Autoridad de Certificación ya contamos con dos de las mas importantes CAs del país andino junto con e-Certchile. Nuestro objetivo es seguir añadiendo cada vez mas CAs de mas países permitiendo la creación de una red de validación de firmas transnacional y todo con vuestra ayuda.

Por David García
Guardado en: Anuncios | 1 comentario » | 27 de Febrero de 2009

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

Lecciones sobre la vida aprendidas del código

/* “It took me fifteen years to discover
I had no talent for programming, but
I couldn’t give it up because by that
time I was too famous.”
– Unknown                */

- Comentario en el código ssl_engine_kernel.c , el núcleo del mod_ssl de Apache, por donde pasan la mayoria de transacciones HTTPS del mundo.

Por David García
Guardado en: Frases, Pranks | Sin comentarios » | 4 de Noviembre de 2008