Validando el DNI electrónico con Viafirma en Windows

Como bien anunció Félix hace unos días, Viafirma ya soporta la validación del DNI electrónico.

Para aquellos lectores que no lo sepan, Viafirma es uno de nuestros productos ASVPDM (Aplicaciones Software de Viavansi Para Dominar el Mundo). Es una VA (Validation Authority) Open Source; una VA permite abstraer las operaciones de autenticación y firma digital con certificados digitales. Tras la última release, se convierte en la primera plataforma 100% software libre que permite la validación del DNI electrónico.

Viafirma es un servicio externo que se encarga de estas operaciones, y da un API a terceras aplicaciones que necesitan autenticación o firma digital. Es decir, podemos disponer de una sola instancia de Viafirma en una red, y varias aplicaciones cliente.

Durante el proceso de desarrollo de la última release hemos hecho diferentes pruebas de soporte. En este post voy a tratar de explicar el sencillo proceso para utilizar el DNI electrónico (DNIe) sobre Windows. En mi caso he usado Windows XP, aunque en principio Vista está perfectamente soportado.

Los pasos a seguir son los siguientes:

  1. Tener un DNI electrónico 😀 Esto es sencillo, lo hacen sobre la marcha en varias comisarías de Policía de España. Además, no hace falta que tengas caducado el anterior. La tasa es de 6,70€. Me fijé que tardó muchísimo en la escritura de los certificados (unos 10 minutos). Con el DNIe te dan un sobre con un PIN que protege la tarjeta. Lo mejor es cambiarlo inmediatamente. En la Comisaría donde lo saqué (Oviedo) tenían un par de kioskos interactivos donde se podía cambiar de forma sencilla.
  2. Instalar los drivers de algún lector de tarjetas criptográficas. En mi caso instalé 2 que tenía antiguos para la lectura de tarjetas donde había alojado mi certificado de la FNMT-RCM; en concreto, un lector de C3PO (el típico del CryptoKit) y un lector de Bit4id. Aprovecho para recomendar encarecidamente este proveedor, son gente realmente seria y rápida.
  3. Instalar librerías del DNI electrónico. En la web del proyecto se puede descargar un fichero ZIP instalable que contiene el CSP («Cryptographic Service Provider»). En Linux, Unix o MAC usaríamos un PKCS#11.
  4. Listo para probar!!! Tras reiniciar (mérito de nuestro MS Windows) enchufamos el lector al USB e insertamos el DNI electrónico. Probamos con la demo de Viafirma tanto la autenticación como la firma. La demo es una sencillísima aplicación cliente de Viafirma que simplemente solicita el certificado para autenticar, lo valida y muestra su contenido (también permite una firma de fichero). Para acceder a la lectura, la librería CSP del DNIe nos pide de vez en cuando el PIN de la tarjeta que ya habíamos modificado en la Comisaría de Policía. Escogemos el certificado adecuado, y voilá! Todo funcionando perfectamente

A este respecto cabe destacar algunos aspectos:

  • El DNI electrónico incorpora 2 certificados, uno destinado a autenticación y otro destinado a Firma.
  • Para la validación del DNIe se ha implementado la validación mediante OCSP. No existe la posibilidad de validar directamente el estado del certificado contra una CRL.
  • El acceso a la tarjeta es tremendamente lento (minutos). No sé si será cosa de Windows, o porque ninguno de los 2 lectores que probé están optimizados para el DNIe, pero el hecho de que tardase 10 minutos en generar los certificados durante la emisión me hace sospechar que es que es así. Sinceramente, si se confirma, me parece un freno terrible para la universalización del DNI electrónico.

Seguiremos posteando los pasos para utilizar el DNI electrónico en otros sistemas operativos (Linux y Mac).

Comentarios

  1. Hola.

    Acabo de ver el código de validación de los DNIe y veo que no comprueba correctamente si está revocado o no. En el código de la clase OcspValidatorHandler, en el método validarOCSP se conecta al OCSP pero siempre devuelve que es correcto, independientemente de si está revocado o no, ya que el código de respuesta 0 (successful) indica que la petición es correcta, pero no dice nada acerca del estado del certificado.

    Si quieres detalles de como arreglarlo, por favor, ponte en contacto conmigo.

    Un saludo.
    Oscar Burgos.

Comments are closed.