DNIe y lector ACR38 bajo Linux
La configuración y uso del DNIe bajo Linux no es todavía algo sencillo. En Guadalinex se ha hecho especial esfuerzo para que tanto el DNIe como los lectores soportados (LTC31 y Omnikey 3121) vengan configurados y todas sus dependencias estén instaladas de serie.
En el presente artículo se detalla la instalación de librerías y configuración desde cero para el uso del DNIe desde Firefox usando el lector ACR38 en sistemas Debian:

Nota: Muchas de las siguientes instrucciones son extensibles para el uso de otros lectores de tarjetas
Guía rápida
Para el impaciente, para el que ya lo haya leído y necesite recordar, para el afortunado al que todo le funciona a la primera, etcétera, presento aquí la guía rápida:$ sudo apt-get install pcscd pcsc-tools libccid libacr38u libacr38ucontrol0 mozilla-opensc libnspr4-0d libnss3-1d libnss3-tools $ wget http://v5.guadalinex.org/guadalinex-lobo/pool/main/o/opensc-dnie/opensc-... $ sudo dpkg -i opensc-dnie_1.4.0-5_i386.deb $ modutil -add "Tarjeta Inteligente" -libfile /usr/lib/opensc-pkcs11.so -dbdir ~/.mozilla/firefox/{profile}/
Donde {profile} es el id de nuestro perfil por defecto en Firefox (véase ~/.mozilla/firefox/profiles.ini).
Sígase la última sección del artículo: Certificado raíz DGP.
Actualización 2009-11-18: La DGP ha lanzado una versión superior (1.4.6) de opensc-dnie disponible en su página web. Se recomienda hacer uso de esta nueva versión, la cual se encuentra además disponible para varias arquitecturas y distribuciones.El lector de tarjetas
Poner en funcionamiento el lector de tarjetas se basa en instalar las librerías y aplicaciones necesarias. Básicamente se trata de la instalación de tres componentes:- PC/SC: Capa intermedia de acceso a tarjetas inteligentes
- CCID: Implementa manejador pcsc para lectores USB que cumplen con la especificación ccid
- Driver ACR38: Librerías del lector para pcsc
$ sudo apt-get install pcscd pcsc-tools libccid libacr38u libacr38ucontrol0 opensc
Nota: Si se desea utilizar este documento para la configuración/uso de otro lector distinto al ACR38 no es necesario la instalación de las librerías libacr38u y libacr38ucontrol0
Tras instalar las librerías, el demonio pcscd, se auto-arranca y al conectar el lector de tarjetas podremos observar en /var/log/syslog
Dec 26 18:52:40 orion kernel: [17246.325117] usb 2-1: new full speed USB device using uhci_hcd and address 4
Dec 26 18:52:40 orion kernel: [17246.502167] usb 2-1: configuration #1 chosen from 1 choice
Dec 26 18:52:40 orion pcscd: hotplug_libhal.c:342:HPAddDevice() Adding USB device: usb_device_72f_9000_noserial_if0
Dec 26 18:52:41 orion pcscd: readerfactory.c:1082:RFInitializeReader() Attempting startup of ACS ACR38U 00 00 using /usr/lib/pcsc/drivers/ACR38UDriver.bundle/Contents/Linux/ACR38UDriver.so
Dec 26 18:52:41 orion pcscd: readerfactory.c:915:RFBindFunctions() Loading IFD Handler 2.0
Dec 26 18:52:41 orion pcscd: readerfactory.c:267:RFAddReader() Using the pcscd polling thread
Manejo de tarjetas
Los componentes importantes para tratar con las tarjetas inteligentes (smartcards) y especificamente el DNIe son:
- OpenSC: Manejo de tarjetas compatibles con PKCS#15
- Librerías OpenSC-DNIe
A lo que nos atañe, el DNIe en sí es una tarjeta criptográfica que almacena dos certificados (autenticación y firma) y nos comunicamos con éste gracias al driver para opensc disponible. (Más información técnica sobre el DNIe en el Portal Oficial sobre el DNIe).
Instalamos opensc:
$ sudo apt-get install opensc
Y para instalar opensc-dnie podemos o bien descargar el fichero .tar desde la zona de descarga del Portal Oficial sobre el DNIe (contiene un paquete binario) o descargarlo directamente desde los repositorios de Guadalinex.
Nota: Es recomendable instalar las librerías opensc-ceres para dar también soporte a las tarjetas criptográficas de la FNMT.
Tras haber realizado la instalación debe reiniciarse el demonio pcscd
$ sudo /etc/init.d/pcscd restart
Si conectamos el lector de tarjetas con el DNIe insertado, podemos ejecutar pcsc_scan para leer cierta información sobre la tarjeta:
$ pcsc_scan
V 1.4.14 (c) 2001-2008, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.4.99
Scanning present readers
0: ACS ACR38U 00 00
Fri Dec 26 19:23:24 2008
Reader 0: ACS ACR38U 00 00
Card state: Card inserted,
ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
+ TS = 3B --> Direct Convention
+ T0 = 7F, Y(1): 0111, K: 15 (historical bytes)
TA(1) = 38 --> Fi=744, Di=12, 62 cycles/ETU (57600 bits/s at 3.57 MHz)
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 6, len: A (pre-issuing data)
Data: 44 4E 49 65 20 02 4C 34 01 13
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):
3B 7F 38 00 00 00 6A 44 4E 49 65 20 02 4C 34 01 13 03 90 00
3B 7F 38 00 00 00 6A 44 4E 49 65 [1,2]0 02 4C 34 01 13 03 90 00
DNI electronico (Spanish electronic ID card)
http://www.dnielectronico.es
Nótese como ha detectado que se trata de nuestro lector ACR38 y el DNIe como smartcard.
Nota: He podido detectar que si OpenCT está instalado éste toma el control del lector y no es posible leerlo con PC/SC. En ese caso desinstálese OpenCT y reiniciar el demonio pcscd.
Nota: Si se revelan problemas de permisos puede ser debido a que el usuario no pertenece al grupo del sistema scard.
Uso en Firefox
Necesitaremos instalar un par de librerías y llevar a cabo algunas configuraciones para conseguir utilizar el DNIe desde Firefox.
- Mozilla-OpenSC: Plugin OpenSC para Mozilla
- Nss3 y Nspr4: Librerías de seguridad y lectura de certificados de Netscape
En instrucciones se traduce como:
$ sudo apt-get install mozilla-opensc libnspr4-0d libnss3-1d libnss3-tools
Instaladas las librerías procedemos a configurar Firefox.
- Conectar el lector de tarjetas con el DNIe insertado y abrir Firefox.
- Escribir en la barra de direcciones about:plugins Debe aparecer OpenSC Signer Plugin
- Click en Editar->Preferencias->Avanzado->Cifrado->Dispositivos de Seguridad
- Click en Cargar
- Nombre del módulo: Tarjeta Inteligente (por ejemplo)
- Archivo del módulo: /usr/lib/opensc-pkcs11.so
Esta última operación podemos realizarla también por consola. Con Firefox cerrado ejecutar:
$ modutil -add "Tarjeta Inteligente" -libfile /usr/lib/opensc-pkcs11.so -dbdir ~/.mozilla/firefox/{profile}/
Donde {profile} es el id de nuestro perfil por defecto en Firefox (véase ~/.mozilla/firefox/profiles.ini).
Nota: Llevar a cabo estas operaciones con el lector conectado y el DNIe insertado. Veremos parpadear el lector mientras se realizan.
Ahora sí, arrancamos Firefox con lector conectado y DNIe insertado. Veremos el lector parpadear y Firefox tardará un poco más en arrancar de lo habitual. Podemos ver los certificados de nuestro DNIe accediendo a Editar->Preferencias->Avanzado->Cifrado->Ver Certificados->Sus Certificados.
En este punto un diálogo nos pedirá que introduzcamos en PIN de nuestro DNIe. Tenemos tres intentos para introducirlo antes de que se bloquee. Con el PIN introducido correctamente se nos muestran nuestros dos certificados de autenticación y firma.
Certificado raíz DGP
Llegados a este punto ya tendremos configurado nuestro Firefox para hacer uso del DNIe. Ahora bien, de cara a autenticarnos/firmar en sites de terceros, es imprescindible contar con el certificado raíz de la DGP instalado en Firefox. El porqué de esta necesidad se revela comprendiendo el funcionamiento de la autenticación mediante certificados digitales.- Descargamos el certificado
- Descomprimimos el .zip y obtenemos un fichero .crt
- Desde Firefox, click en: Editar->Preferencias->Avanzado->Cifrado->Ver Certificados->Autoridades
- Click en Importar, y buscamos el fichero .crt
- Marcamos las tres opciones
- Confiar en esta CA para identificar sitios web
- Confiar en esta CA para identificar usuarios de correo
- Confiar en esta CA para identificar desarrolladores de software
Nota: Nacho Álvarez tiene un interesante artículo sobre el uso de DNIe con el lector Omnikey 3121 donde además se detalla la instalación de JRE y el procedimiento oficial de comprobación de certificados de autenticación del DNIe.
Termina así este humilde tutorial, espero que alguien pueda sacarle provecho.
