Instalación del DNI electrónico (en Linux)

DNIe V2.0 y DNIe V3.0
Fuente: DGP - DNI electrónico.
Desde el año 2006 todos los Documentos Nacionales de Identidad que se expiden en España incorporan un chip electrónico, que los convierte en una tarjeta inteligente (smart card), con capacidades criptográficas que almacenan de forma segura un certificado digital (y su clave privada) de modo que podemos autenticarnos de forma digital y/o firmar documentos. La Dirección General de la Policía lanzó en 2015 el DNI 3.0. Su principal novedad es la presencia de un chip con interfaz dual que permite la conexión mediante hardware, pero también de forma inalámbrica a través de la tecnología NFC. La conexión se iniciará simplemente con acercar el DNI 3.0 a la antena NFC del dispositivo, (a una distancia no superior a 1 cm). Actualmente por tanto, coexisten las dos versiones.
Actualización
El 16/05/2018 se ha publicado la versión 0.18.0 de OpenSC. La he probado en las distribuciones citadas y funciona correctamente. Muchas gracias a todos los desarrolladores involucrados por su esfuerzo.

Hardware y Software

Para usar el DNIe necesitamos algunas piezas de software y hadware. Lo primero un lector de tarjetas. Si tu DNIe es 3.0 puedes optar por un lector NFC. Este hardware debe ser reconocido por tu sistema y es necesario instalar los controladores (drivers) para que luego las aplicaciones puedan interactuar con él. Desde marzo de 2006 el DNIe ha pasado por numerosas vicisitudes. Cambios de gobierno, diferentes organismos, diferentes administraciones. Yo llevo usando certificados desde antes de la aparición del DNIe con los certificados emitidos por la FNMT. En 2007 con la renovación forzosa del DNI que tuve que realizar, comencé a usar el DNIe. Al principio, compaginando ambos certificados. A partir de 2008 ya no renové el certificado de la FNMT. Siempre o casi siempre, o debería decir siempre que me ha sido posible, lo he utilizado en sistemas linux. Usando Windows virtualizado (aquí nunca he tenido problemas para poder usarlo) cuando no era posible o en momentos de cambios de versiones hasta que conseguía volverlo a poner en marcha en linux, gracias a la comunidad (BITPLANET para Ubuntu o el desaparecido Kriptópolis, por poner algún ejemplo) e investigando por mi cuenta en mas de una ocasión, siempre he podido seguir usando el DNIe en diferentes distribuciones y versiones linux.

Software

El proyecto OpenSC proporciona un conjunto de bibliotecas y utilidades para trabajar con tarjetas inteligentes. Su foco principal está en las tarjetas que admiten operaciones criptográficas, y facilita su uso en aplicaciones de seguridad tales como la autenticación, el cifrado de correo y las firmas digitales. OpenSC implementa las API estándar para tarjetas inteligentes. En febrero de 2011, Juan Antonio Martínez (jonsito) presentó OpenDNIe, escrito desde cero y con el objetivo de integrarse al proyecto OpenSC. Nació como una alternativa al código fuente del gobierno español que presentaba graves problemas para poderse incluir en un proyecto de código abierto (mas info…) y que desde agosto de 2013 está integrado en el proyecto OpenSC. En julio de 2017 se lanzó la versión 0.17.0 y que gracias a rickyepoderi tiene soporte para v3.0.
Por desgracia no funciona en ninguna de las distribuciones que he probado:
  • Ubuntu 17.04, 17.10
  • OpenSUSE 42.2, 42.3
  • Antergos (ArchLinux)
La implementación oficial ha quedado en manos de la FNMT. Como explica rickyepoderi, ofrece una biblioteca completa PKCS#11 llamada MultiPKCS11. Esta biblioteca proporciona una API compatible con PKCS#11 para conectarse a varios dispositivos de cifrado (entre ellos DNIe v2.0 y v3.0). La FNMT también proporciona los fuentes para esa biblioteca pero todo está muy desorganizado. No existe un documento que explique bajo que licencia se distribuyen, ni a que versión y fecha corresponden. Se pueden encontrar en el siguiente enlace: Descargas FNMT. En la web de la DGP puedes encontrar versiones compiladas mas actuales para Debian, Fedora, OpenSUSE y Ubuntu. ¿Y que pasa con los usuarios de distribuciones basadas en Archlinux? Al final del artículo os cuento como podemos resolver el asunto.

Instalación en OpenSUSE (Tumbleweed)

Lo primero como siempre será verificar que el lector es detectado por el sistema, en mi caso un C3PO LTC31v2.
Comprobar que están instaladas las librerías que contienen la API Scard, pcsclite y libpcsclite1. Instalamos pcsc-tools (nos pedirá añadir perl-pcsc, como dependencia). Una vez instalados estos paquetes podemos comprobar el acceso al lector mediante la utilidad que incorpora, pcsc_scan.
Para versiones anteriores, incluida OpenSUSE Leap (V42.3), por defecto no se incluye pcsc-tools. Hay que añadir el repositorio security:chipcard que es donde se encuentra el paquete. Lo puedes hacer mediante el enlace o de forma manual:
~# zypper addrepo https://download.opensuse.org/repositories/security:chipcard/openSUSE_Leap_42.3/security:chipcard.repo
~# zypper refresh
~# zypper install pcsc-tools

Permanecerá esperando que conectemos el lector si no detecta ninguno conectado. Una vez conectado, el terminal nos mostrará la siguiente pantalla. Nos dirá que no hay tarjeta conectada y permanecerá a la espera hasta que insertemos la tarjeta en el lector.
Observar que también nos dice el tipo de lector que ha encontrado. Una vez detecta que hay tarjeta insertada nos mostrara información de la tarjeta leída.
Ahora que ya tenemos operativo el conjunto lector/tarjeta, es momento de instalar el dispositivo en el navegador Firefox.
En este momento es cuando podemos elegir la librería de OpenSC o la desarrollada por la FNMT (o la DGP), como os explicaba al principio de la entrada. He probado la primera opción y de momento no funciona, creo que ya ha sido notificado el error y esperemos que en la próxima actualización se resuelva. Yo he probado a mantener ambas librerías instaladas y no hay problema. Si optamos por instalar ‘opensc’, es muy sencillo ya que se encuentra en los repositorios. La otra opción tampoco presenta demasiados problemas. En el repositorio del DNI electrónico de la DGP en el área de descargas se encuentra el paquete correspondiente para algunas distribuciones. Ahí podréis encontrar la correspondiente a OpenSUSE 42.2 que es la que yo he instalado.
Una vez instalada la podremos encontrar en ‘/usr/lib64/opensc-pkcs11.so’ (para opensc) y en ‘/usr/lib64/libpkcs11-dnie.so’ (para la de la DGP). Vamos a cargar esta última librería en el navegador. Abrimos Firefox y en preferencias, seleccionamos “Privacidad y seguridad”. Al final de la página podemos encontrar: “Dispositivos de seguridad...”. Haciendo “click “ se abrirá la ventana del “Administrador de dispositivos”.
Hacemos “click” en cargar y en el nuevo dialogo que se abrirá, ponemos un nombre y la ruta completa y el nombre de la librería a cargar. O podemos buscar la librería con el examinador.
Aceptamos para cerrar el dialogo y volver al “Administrador de dispositivos”. Ahora podemos ver la librería cargada.
Y los detalles de la misma:
Antes de salir podemos probar a iniciar sesión:
Se abrirá un dialogo para que introduzcamos la contraseña de nuestro DNIe. Si es correcta, el estado cambiará a “Sesión iniciada”:
Ahora ya puedes probar a usar tu DNIe. En la página de la FNMT tienes la posibilidad de verificar el DNIe, leer los certificados y comprobar la caducidad de los mismos.
No es necesario en principio cargar certificados. La FNMT como autoridad de certificación ya viene incluida en el navegador. Firefox dará un error si no encuentra un certificado de respaldo de una autoridad válida correspondiente a la página donde te estas intentando autenticar. En ese caso te permitirá cargar el certificado bajo tu responsabilidad.

Instalación en Ubuntu (18.04)

~$ sudo apt install libccid pcscd pcsc-tools libpcsc-perl Instalamos pcscd y pcsc-tools y nos instala ademas sus dependencias (libccid y libpcsc-perl, respectivamente y libpcsclite1 en ambo; entre otras) Instalará las dependencias sino estuvieran ya instaladas. OpenSC se instala pero no va. Mismo fallo.

Instalación en Arc Linux, Antergos, Manjaro

Aquí el paquete que contiene pcsc-tools, instalará las dependencias necesarias en particular pcsclite y pcsc-perl. ~$ sudo pacman -Sy pcsc-tools ccid Descargar el paquete de la web dnielectronico Instalar archalien, este paquete está en AUR. En Manjaro hay que instalar pacaur primero. Con archalien: en la carpeta donde has descargado el paquete ~$ archalien libpkcs11-dnie_1.4.1_amd64.deb
~$ sudo pacman -U libpkcs11-dnie_1.4.1-1-x86_64.pkg.tar.gz
Después de esto, la instalación en Firefox sigue el proceso ya comentado.

Comentarios

Publicar un comentario

Entradas populares de este blog

Plan nacional de numeración telefónica

“Erradicar” los problemas de los SMS Premium