Aunque parezca que tecnológicamente hayamos dado grandes pasos, lo cierto es que en algunos aspectos no hemos avanzado gran cosa. Eso si nos miramos nuestro ombligo. Pero si miramos fuera, si nos fijamos en que situación se encuentra la Administración Pública, es para ponerse a llorar. Seguro que mas de uno de nosotros pensó que, en el siglo XXI ya habría desaparecido el papel. Igualmente, seguro que pensó que, no tendríamos que hacer largas colas para presentar un documento. Pues te equivocasbas. Sin embargo, se ve una luz al final del tunel. Y es que hay determinados cuerpos de la Administración Pública que se están preocupando por hacernos las vida más fácil. Si a nosotros también, a los que utilizamos alguna distribución Linux también. Me refiero, en particular al Cuerpo Nacional de Policía, y al trabajo que están haciendo con el DNI electrónico en Linux.
Hasta la fecha, he estado utilizando un certificado digital tipo software, instalado en mi navegador Firefox. Y te puedo asegurar que hasta el momento ha sido la mejor solución, porque siempre ha funcionado. Sin embargo, con el esfuerzo dedicado por el Cuerpo Nacional de Policía, en favor de los usuarios de las distribuciones Linux, he decidido lanzarme al uso del DNI electrónico. Sin lugar a dudas es mejor solución, mas segura y confiable.
DNI electrónico en Linux
Hace unos años esto de la instalación del DNI electrónico era todo un dolor de cabeza. Sin embargo, en unos pocos días he realizado un par de instalaciones y sin problemas. Al menos hasta el punto de reconocer el DNI electrónico.
Tengo que advertirte no he podido llegar a probar su funcionamiento en ninguna página. En mi caso porque tengo que ir a un punto de actualización del DNI para cambiar el PIN, y en el otro que probé, si bien en la página de validación lo daba como correcto, en la página web donde lo queríamos utilizar daba un error. Al parecer, era un problema de la página, pero lo cierto es que no pude hacer mas pruebas, con lo que me he quedado con las dudas.
Por esta razón, el caso de que sigas el procedimiento aquí indicado, y compruebes que todo ha ido correctamente, te pediría que contactes, y me confirmes su funcionamiento. También te pediría alguna captura de pantalla para incluirla en este artículo.
Requisitos
Para el proceso de autentificación con DNI electrónico en Linux, evidentemente, necesitarás un lector. En mi caso, adquirí uno en el año 2009, en la campaña del Plan Avanza 2. Una campaña, que pretendía fomentar el uso del DNI electrónico (DNIe). Y en la cual se regalaron más de 320.000 lectores de DNI electrónico a los ciudadanos. En el caso de que lo pidieras por correo, debías pagar 2 € de gastos de envío (lástima que no estuviera incluido en el Prime de Amazon ;).
Se repartieron varios modelos de lectores:
- SCM SCR 3310.
- Gemalto PC Twin.
- Bit4id miniLector.
- Costar US777-A Slim.
Yo tengo actualmente el SCM SCR3310, y no solo le he estado utilizando con el DNIe, sino que también lo he utilizado con otras tarjetas.
Por otro lado, también necesitamos descargar el software del DNI electrónico en Linux. Para ello te recomiendo visites la página de descargas del DNI electrónico del Cuerpo Nacional de Policía, y selecciones el paquete que mas se adecúa a tus necesidades. En el caso particular de Ubuntu 18.04 y 18.10, y con la versión mas reciente en el momento de escribir este artículo, tan solo tienes que abrir un terminal Ctrl+Alt+T
y ejecutar la siguiente orden para,
i386
wget Ubuntu_libpkcs11-dnie_1.5.0_i386.deb
amd64
Ubuntu_libpkcs11-dnie_1.5.0_amd64.deb
Por otro lado tenemos que instalar el software necesario para que todo funcione. Así, de nuevo, en un terminal ejecutamos las siguientes órdenes,
sudo apt install pcsc-tools pcscd pinentry-gtk2 libccid
Instalamos el software del DNI electrónico en Linux
sudo dpkg -i libpkcs11-dnie_1.5.0_amd64.deb
Pongamos en marcha el lector de DNI electrónico en Linux
Conecta ahora tu dispositivo SCR3310 con el USB, y ejecuta lsusb
en el terminal. Esto te tiene que arrojar un resultado como el que ves a continuación,
Bus 001 Device 002: ID 8087:8001 Intel Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 002: ID 0781:5583 SanDisk Corp.
Bus 003 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 007: ID 0c45:670c Microdia
Bus 002 Device 005: ID 0a5c:216f Broadcom Corp. BCM20702A0 Bluetooth
Bus 002 Device 006: ID 046d:c52b Logitech, Inc. Unifying Receiver
Bus 002 Device 004: ID 1050:0120 Yubico.com Yubikey Touch U2F Security Key
Bus 002 Device 008: ID 04e6:5116 SCM Microsystems, Inc. SCR331-LC1 / SCR3310 SmartCard Reader
Bus 002 Device 002: ID 05e3:0608 Genesys Logic, Inc. Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Ahora ha llegado el momento de ver que es lo que lee tu dispositivo SCR3310. Para ello, con el lector conectado a un USB, ejecuta pcsc_scan
. Esto te debe arrojar un resultado como el que ves a continuación,
PC/SC device scanner
V 1.5.2 (c) 2001-2017, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
Mon Feb 4 19:31:29 2019
Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
Card state: Card removed,
Si ahora introduces el DNIe en el lector, verás que la salida del terminal cambia a lo siguiente,
Mon Feb 4 19:31:43 2019
Reader 0: SCM Microsystems Inc. SCR 3310 [CCID Interface] 00 00
Card state: Card inserted,
ATR: 5A 0B 5E 8F 3C 7F 0B 4D 1E 1C 0B 2D 2C 3F 6A 8F 1A 2D 4B 1F
ATR: 5A 0B 5E 8F 3C 7F 0B 4D 1E 1C 0B 2D 2C 3F 6A 8F 1A 2D 4B 1F
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
TA(1) = 96 --> Fi=512, Di=32, 16 cycles/ETU
250000 bits/s at 4 MHz, fMax for Fi = 5 MHz => 312500 bits/s
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 10 01 01 55 04 10 03 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 6, len: A (pre-issuing data)
Data: 44 4E 49 65 10 01 01 55 04 10
Mandatory status indicator (3 last bytes)
LCS (life card cycle): 03 (Initialisation state)
SW: 9000 (Normal processing.)
Possibly identified card (using /usr/share/pcsc/smartcard_list.txt):
5A 0B 5E 8F 3C 7F 0B 4D 1E 1C 0B 2D 2C 3F 6A 8F 1A 2D 4B 1F
5A 0B 5E 8F 3C 7F 0B 4D 1E 1C 0B 2D 2C 3F 6A 8F 1A 2D 4B 1F
DNIE Spain (eID)
https://www.dnielectronico.es/PortalDNIe/
Todo ha ido correctamente
Configurar Firefox
Una vez ya tienes configurado tu lector de tarjetas electrónicas, y has comprobado que detecta tu DNI electrónico en Linux, es necesario configurar tu navegador. Configurado tu navegador podrás realizar diferentes gestiones con la administración pública y con otras entidades que requieran que te identifiques.
Para esta operación abre Firefox y en el menú selecciona Preferencias. Dentro de Preferencias, en la caja de texto Encontrar en Preferencias
escribe Dispositivos
. Esto te ayudará a encontrar Dispositivos de seguridad. Haz clic en este botón Dispositivos de seguridad
.
Aquí tienes que pulsar el botón Cargar
. Esto te mostrará un cuadro de diálogo para cargar un controlador de dispositivo PKCS#11. Aquí tienes que indicar,
- Nombre del módulo. Esto debe ser un nombre indentificativo para ti. Por ejemplo
DNI Electrónico
. - Nombre del archivo del módulo. Aquí debes indicar la ruta donde se encuentra el archivo. En mi caso en el que estoy utilizando Ubuntu es
/usr/lib/libpkcs11-dnieti
Una vez introducidos estos datos, introduce tu DNI electrónico en el lector, y espera hasta que el led deje de parpadear, quedando encendido. Llegados a este caso te mostrará algo como lo siguiente,
Aquí tienes que pulsar el botón Iniciar sesión
, que te mostrará un cuadro de diálogo donde debes escribir el PIN de tu DNI electrónico. Ya lo tienes. A partir de aquí puedes dirigirte a cualquier página que requiera un certificado digital y utilizar tu DNI electrónico en Linux.
Conclusión
Como ves configurar el DNI electrónico en Linux es relativamente sencillo. Me he planteado crear un paquete para automatizarlo, pero es que veo que no vale la pena, de lo sencillo que es.
Eso si, te tengo que advertir que si tienes que utilizar otro tipo de tarjeta que no sea el DNI electrónico, tendrás que cargar su propio módulo, de otra forma no te funcionará… Te lo digo por propia experiencia.
Más información,
He seguido este método en KDE neon 5.24 y todo va bien hasta llegar a la configuración de Firefox. Ahí no consigo que Firefox detecte la tarjeta.
El archivo de instalación del software del DNIe que he utilizado es el de Ubuntu 21.04 (https://www.dnielectronico.es/descargas/distribuciones_linux/libpkcs11-dnie_1.6.8_amd64.deb), ya que no hay versión para Ubuntu 20.04, en la cual se basa KDE neon 5.24. (https://www.dnielectronico.es/PortalDNIe/PRF1_Cons02.action?pag=REF_3000).
El comando pcsc_scan detecta bien la tarjeta; por lo tanto, hasta ahí todo bien. Al entrar en la configuración de Firefox, he seguido estas instrucciones que me venían con el paquete de instalación (aquí me he separado un poco de este post, porque he pensado que las instrucciones del DNIe estarían más actualizadas):
https://postimg.cc/hJStwpgb
Pero, al introducir la tarjeta en el lector, Firefox no la detecta.
¿Alguien sabe algo? Entiendo que Linux sí la detecta y que es Firefox quien no lo hace…
Muchas gracias, Atareao, porque tus manuales son una enciclopedia linuxera.
Un saludo!
Hola Atareao:
estoy intentando instalar lo necesario para poder operar con el DNIe y no consigo instalar el software del libpkcs11-dnie_1.6.8_amd64…. me responde:»dpkg: error: no se puede acceder al archivo ‘libpkcs11-dnie_1.6.8_amd64.deb’: No existe el archivo o el directorio»
¿puedes hecharme un cable?
Gracias.
Quizá no estés en la carpeta en la que has descargado el fichero o quizá el fichero que has descargado para el dnie no se llame exactamente así, comprueba ambas cosas.
Gracias….lo comprobaré….
Buenas Lorenzo.
Esta semana con he formateado el PC y he instalado Kubuntu 22.10 y he tenido algunos problemas a los que afortunadamente he podido dar solución, te los comento por si quieres actualizar la guía. La guía me fue de mucha ayuda para configurarlo en versiones anteriores 🙂
Primero, parece que hay un bug con el snap de firefox. Según he visto en launchpad (https://bugs.launchpad.net/ubuntu/+source/firefox/+bug/1967632) firefox puede localizar el fichero .so para el dnie pero no puede agregarlo por un tema de permisos así que lo que algunos recomendaban era sustituir el snap de firefox por el deb de los repositorios de mozilla.
Segundo, después de sustituido el snap por el deb me seguía sin dejar añadir el módulo .so en firefox. Repasé lo que pones y me di cuenta de que en Kubuntu 22.10, al contrario que en versiones anteriores al hacer pcsc_scan fallaba. Con respecto había dos problemas, uno falta una dependencia mas que hay que instalar (pcs) y dos, que el servicio pcscd no arranca por defecto en kubuntu 22.10, no se si en otros sabores será igual así que ararancamos el servicio con sudo service pcscd start y hacemos que arranque con el sistema operativo las próximas veces con sudo systemctl enable pcscd.
Con esto al lanzar pcsc_scan ya detecta correctamente el estado del lector de tarjetas y ya me dejaba agregarlo correctamente a firefox.
No se si con instalar pcs y con activar el servicio pcscd ya hubiese funcionado en firefox snap, no puedo comprobarlo ^^’
¡Gracias Lorenzo!
Me ha funcionado en una Xubuntu 22.04.1 LTS. He tenido problemas con el firefox instalado con snap, pero lo he solucionado instalando firefox la opción .deb siguiendo estas instrucciones (1).
Gracias por el artículo.
(1) https://www.omgubuntu.co.uk/2022/04/how-to-install-firefox-deb-apt-ubuntu-22-04
En mi caso el modulo se llama libpkcs11-dnie.so