domingo, enero 27, 2008

Documental EHAS

Buenas de nuevo a todos/as

De nuevo estoy aquí ya de vuelta de la selva pa daros el coñazo con nuevas entradas. Por el momento estoy en un momento muy liado hasta finales de febrero, pero quería dejar constancia de que a partir de ahora retomaré el hábito de escribir alguna entrada cada cierto tiempo. Y para que no sea una entrada vacía, aquí os dejo un documental sobre la Fundación EHAS (Enlace Hispano-Americano de Salud) que lleva ya 10 años trabajando en proyectos de cooperación para el desarrollo en Perú, Colombia y Cuba, aplicando para ello su investigación en Tecnologías de la Información y la Comunicación adaptadas a estos entornos. Ellos son los culpables de que haya dejado de escribir este tiempo :). Espero que os guste.



Saludos de nuevo.

miércoles, enero 16, 2008

Usar certificados de cliente de la FNMT en una Aplicación Web

Mucho tiempo ha pasado desde la última entrada, pero entre que hemos estado muy ocupados y la pereza que da ponerse de nuevo a escribir, pues, han pasado tres meses (o más). Sin embargo, un nuevo reto se me planteó y tras sudar sangre para resolverlo lo comparto con vosotros. El tema de este post es: ¿Cómo usar certificados de la FNMT (Fábrica Nacional de Moneda y Timbre) en nuestra web?

Existe poquísima información al respecto en Internet, muchos posts de gente, mucha historieta pero nada concreto. Voy a intentar, por lo tanto, dar las instrucciones para configurar un servidor de internet (en mi caso IIS, aunque la configuración es similar para el resto) para poder pedir al usuario que utilice un certificado emitido por la FNMT.

Paso I: La Seguridad
Si no tenemos una conexión https con SSL, GAME OVER, fin de la partida. Es requisito indispensable comunicarnos con el cliente mediante una conexión cifrada para poder interactuar con los certificados. Pero, ¿cómo lo hacemos para conseguir un certificado?. En desarrollo podemos seguir los siguientes pasos (en producción necesitareis un certificado emitido por una CA Root reconocida):

Existen muchos sitios en internet donde se describe este proceso, os pongo esta url donde explican como generar nuestro propio certificado con OpenSSL:
http://www.locualo.net/programacion/activar-ssl-iis-certificado-digital-prueba/00000079.aspx

Paso II: La Teoría
Vamos a ver un poco de la teoría para saber cómo funciona el tema de los certificados. Una vez que sepamos como funciona, entenderemos los pasos a dar. El circuito de los certificados es el siguiente:

1. El cliente accede a la url https://.... (para la cual es necesario un certificado de cliente)
2. El servidor envía su certificado al cliente para establecer el canal seguro. El cliente debe confiar en la entidad que ha generado ese certificado y comprobar que es válido. En caso de no confiar aparecerá un mensaje en el explorador indicándonoslo (la mayoría de la gente no lo lee).
3. Una vez que el cliente ha confiado en el servidor, se establece el canal seguro.
4. El servidor tiene configurado que para el recurso que intenta ver el cliente es necesario que presente un certificado de cliente, emitido por una entidad certificadora en la que él confíe y además que está en la lista de los certificados admitidos para el recurso en cuestión.
5. El explorador del cliente recibe estas condiciones del servidor y muestra una ventana con los certificados instalados que cumplan los requisitos del servidor.
6. El usuario elige su certificado y éste es mandado al servidor.
7. El servidor comprueba la lista de revocación de certificados de la entidad que emitió el certificado para ver si sigue siendo válido.
8. En caso que el certificado sea válido, podremos acceder al recurso y en la sesión tendremos guardado el certificado para usarlo.

En la siguiente imagen os muestro el flujo:
















Paso III: La Confianza
Como habéis podido observar, la clave del asunto es la confianza entre los diferentes elementos (cliente y servidor). Vamos a ver cómo configurar nuestro servidor para: 1) requerir el certificado del cliente y 2)confiar en la fnmt para que acepte sus certificados.

Para requerir el certificado del cliente iremos al "Administrador de Servicios de IIS", buscaremos el recurso, sitio web o directorio virtual que necesitará certificado y pulsamos en "Propiedades" del menú contextual. En la pestaña "Seguridad de Directorios" pulsamos sobre el botón "Modificar" de la parte inferior. Nos aparecerá la siguiente pantalla:























Marcaremos la opción "Requerir Canal Seguro" y "Requerir Certificados de Cliente". Pulsamos sobre Aceptar y hemos terminado. Ahora el IIS espera un certificado del cliente para acceder al recurso, sin embargo, todavía no le hemos dicho que debe confiar en la FNMT como entidad certificadora.

Para confiar en la FNMT, tendremos que abrir una consola mmc (Ejecutar--> mmc), Archivo-->Agregar o Quitar Complemento. En la pantalla que aparece pulsaremos de nuevo sobre Agregar y seleccionaremos el complemento "Certificados":

















Pulsamos sobre "Agregar", seleccionamos la opción "Mi Cuenta de usuario" y cerramos la pantalla de agregar complementos. En la consola mmc, expandimos "Entidades emisoras raíz de confianza-->Certificados" y buscamos a la FNMT:

















En caso que no esté, tendremos que importarlo. Lo primero será conseguir la definición del certificado de la FNMT. La podéis conseguir desde aquí:

http://www.cert.fnmt.es/content/pages_std/certificados/FNMTClase2CA.cer

Guardamos el fichero .cer en nuestro servidor y en la consola mmc pulsamos con el botón derecho sobre "Certificados" y elegimos "Todas las tareas-->Importar". Saltará un asistente para importar un certificado, seleccionaremos el fichero que nos acabamos de descargar y siguiente hasta el final.

Una vez importado, veremos las propiedades del certificado y habilitaremos la opción "Autenticación del Cliente". De esta forma habilitamos a los certificados de la FNMT para que sirvan como certificados de cliente.

Con esto hemos dado nuestra confianza a la FNMT como CA Root, sin embargo, todavía no funciona porque tenemos que incluir a la FNMT como entidad válida para nuestro recurso, en la CTL (Certificate Trusted List). Para ello, volvemos a la consola del IIS y nos vamos a las propiedades del sitio web en el que esté el recurso del certificado. Seleccionamos la pestaña "Seguridad de Directorios" y pulsamos sobre el botón "Modificar" de la parte inferior. Aparecerá la pantalla siguiente:























En la parte inferior tenemos la lista de certificados de confianza, pulsamos sobre "Modificar" y en la lista que aparece, pulsamos sobre "Agregar desde el almacén" e incluimos el de la FNMT. Pulsamos "Siguiente" hasta el final y ya tenemos todo hecho.

Paso IV: Final
Ya tenemos nuestro entorno habilitado para utilizar certificados de cliente. En producción tendremos que tener un certificado emitido por una entidad reconocida, pero el resto es igual.

Espero que os haya aclarado las ideas y os haya servido.