> Manuales > Ayudas técnicas

En este post veremos como configurar un IIS 7.0 o 7.5 para que sea capaz de requerir y admitir los certificados del DNI-e (DNI Electrónico español).

Cada vez se hace más importante el uso del DNI-e, tanto para tramites con la administración pública como con entidades bancarias y cada vez más en otras aplicaciones de carácter comercial.

No es ningún secreto que la administración pública está intentando, cada vez más, lanzar la utilización del DNI electrónico (a partir de ahora DNI-e). No obstante aunque su uso todavía no es muy elevado, las ventajas que nos proporciona si son abundantes, como es el poder realizar gestiones con la administración pública o incluso con entidades bancarias, de manera segura.

En este post nos centraremos en cosas técnicas, y más en concreto en como configurar un IIS 7.0 o 7.5 para que sea capaz de requerir y admitir los certificados del DNI-e.

Para comenzar, debemos comentar la gran problemática que tiene IIS para la validación del certificado, más en concreto el estado de la revocación del certificado cliente, este es el quid de la cuestión, ya que la configuración de IIS para pedir certificados es sencillo, pero hacer que admita un DNI-e es más complicado ya que conlleva más operaciones a realizar. El cómo configurar esto se verá como el último paso dentro de este proceso.

1º- El primer paso será la instalación del certificado del servidor, en esta demo crearemos un certificado propio del servidor, este no será reconocido como válido ya que la ruta de certificación no es válida al ser autoafirmado. Este certificado tendrá que ser validado por el cliente como un certificado de confianza.

Como muestra la ilustración, en la vista de características del servidor, elegimos la opción de certificados del servidor, esto nos lleva a una pantalla que está vacía y en el menú de la derecha elegiremos la opción de “Crear certificado autofirmado”.

2-º A continuación crearemos el sitio web, que requerirá el certificado. Para ello utilizamos el botón derecho sobre la carpeta de sitios y aparece una ventana como muestra la imagen siguiente, y en ella la rellenaremos como se muestra en dicha imagen, es aconsejable pulsar el “conectar como” y configurarlo con un usuario de la máquina que tenga permisos sobre la carpeta en la que se configura la aplicación web.

También es posible crearlo sin más en el puerto que no sea de SSL y luego hacer que sean determinados archivos que lo requieran añadiendo un enlace SSL al sitio web.

3-º Una vez realizado este paso configuramos que el sitio requiera el SSL, a través de la vista de características de la página que queremos que la requiera. En esta nueva ventana marcaremos las opciones de requerir SSL y requerir certificado del cliente, con esto aseguramos la identificación mutua entre el navegador cliente y el servidor.

4-º Ahora pasaremos a configurar el acceso, para eso en la opción de autenticación deshabilitamos todas excepto el acceso anónimo y modificamos este acceso para que sea con el usuario que tenía permisos sobre esta carpeta

Hasta aquí son los pasos lógicos de una aplicación web. Pero ahora viene la parte más complicada que es la que puede demorar la configuración para todos aquellos que lo hacen por primera vez.

5-º En la vista de características del sitio tenemos la opción de Editor de configuración, es un asistente que nos facilitará mucho el siguiente trabajo.


6-ºA continuación se accede al menú ManyToOneMappings, en el que se tienen que definir las asociaciones entre certificados y cuenta de usuario. Se deben configurar los parámetros con los siguientes valores:

7-ºPor último se crea una regla para definir qué certificados se aceptarán. En este caso, se aceptan los certificados de autenticación del DNI-e, para ello se tendrán que configurar los parámetros con los siguientes valores:

8-º Ahora nos toca instalar los certificados root y CA del DNI-e, en los almacenes de confianza (tanto el raíz de confianza, como la subordinada)

Ahora tenemos deshabilitar la validación de la revocación del certificado, para eso seguimos los siguientes pasos

9-º en ejecutar hacemos cmd y en la consola escribimos

netsh> http
netsh http> show sslcert

Esto nos mostrará los certificados instalados en el servido. Copiaremos el certificado del sitio para el que estamos configurando la autenticación DNIe a un block de notas, puesto que posteriormente necesitaremos los datos de hash y appid.

10-º Eliminamos el certificado:

netsh http> delete sslcert ipport=0.0.0.0:443

11-º Lo agregamos nuevamente pero deshabilitando la opción de verificación de revocación de certificado cliente:

netsh http>add sslcert ipport=0.0.0.0:443 certhash=3c7a212548dbf8941a3709b4a7bc3db4fe7297ba appid={4dc3e181-e14b-4247-b022-59fc669b0914} certstorename=MY verifyclientcertrevocation=disable

y con esto estará listo para funcionar.

Conclusión

Como hemos podido ver la configuración no es demasiado difícil, aunque si poco intuitiva, ya que la desactivación de la validación del certificado es realmente poco previsible, sin embargo una vez que se ha comprendido la problemática, son pasos muy estrictos y fáciles de seguir.

Fernando Gómez Muñoz

Desarrollador web, especialista en ASP.Net y desarrollos con arquitectura SOA.

Manual