
Cómo instalar un lector de tarjetas para usar el DNI electrónico español en Debian 7 ‘Wheezy’
En este ejemplo voy a instalar un lector de DNI electrónico del fabricante Soyntec, concretamente el modelo Nexoos 610 (que en realidad es un Dectel CI692), en un ordenador con Debian 7 ‘Wheezy’ de 32 bits, Xfce como entorno de escritorio y Icewasel/Firefox como navegador. Aunque también comento alternativas para sistemas de 64 bits y Gnome y KDE como entornos de escritorio.
Vaya por delante que no usaré ni los recursos ofrecidos por el fabricante del dispositivo ni los códigos “retocados” por la Policía Nacional española.
-
Conecto el lector de tarjetas a un puerto USB fiable (para evitar quebraderos de cabeza, no uso ningún hub, ni siquiera alimentado).
-
Abro una terminal e inicio sesión como root:
~$ su -
- Tras introducir la contraseña del root, compruebo que el lector es detectado:
~# cat /var/log/messages
Me devuelve esto:
usb 1-2: new high-speed USB device number 9 using ehci_hcd
usb 1-2: New USB device found, idVendor=0bda, idProduct=0165
usb 1-2: New USB device strings: Mfr=1, Product=6, SerialNumber=3
usb 1-2: Product: Smart Card Reader Interface
usb 1-2: Manufacturer: Generic
usb 1-2: SerialNumber: 20070818000000000
usb 1-2: USB disconnect, device number 9
mtp-probe: checking bus 1, device 9: "/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-2"
mtp-probe: bus: 1, device: 9 was not an MTP device
- Aprovecho para actualizar el sistema:
~# apt-get update
~# apt-get upgrade
- Instalo los paquetes pcscd, pcsc-tools y todas sus dependencias:
~# apt-get install pcscd pcsc-tools
- Y pruebo con el comando pcsc_scan si efectivamente se reconoce el dispositivo sin ningún DNIe introducido:
~# pcsc_scan
Me devuelve esto:
PC/SC device scanner
V 1.4.20 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.8.3
Using reader plug'n play mechanism
Scanning present readers...
Reader 0: Dectel CI692 [Smart Card Reader Interface] (20070818000000000) 00 00
Card state: Card removed.
- Cierro pcsc_scan presionando Ctrl + c, inserto un DNIe en el lector y vuelvo a probar:
~# pcsc_scan
Y ahora me devuelve:
PC/SC device scanner
V 1.4.20 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.8.3
Using reader plug'n play mechanism
Scanning present readers...
Reader 0: Dectel CI692 [Smart Card Reader Interface] (20070818000000000) 00 00
Card state: Card inserted.
ATR: 3C 7F 39 00 01 01 6B 45 2F 38 65 10 13 4D 31 00 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
64516 bits/s at 4 MHz, fMax for Fi = 8 MHz => 129032 bits/s
TB(1) = 00 --> VPP is not electrically connected
TC(1) = 00 --> Extra guard time: 0
+ Historical bytes: 01 6B 45 2F 38 65 10 13 4D 31 00 13 03 90 00
Category indicator byte: 00 (compact TLV data object)
Tag: 6, len: A (pre-issuing data)
Data: 44 4E 49 65 10 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):
3C 7F 39 00 01 01 6B 45 2F 38 65 10 13 4D 31 00 13 03 90 00
3C 7F 39 00 01 01 6B 45 2F 38 65 [1,2]0 13 4D 31 00 13 03 90 00
DNI electronico (Spanish electronic ID card)
http://www.dnielectronico.es
-
Cierro pcsc_scan presionando Ctrl + c.
-
Dependiendo del entorno de ventanas que esté utilizando, instalaré el paquete adecuado de pinentry: pinentry-curses para diálogos de consola, pinetry-gtk2 para Gnome o pinentry-qt4 para KDE. En este ejemplo, al usar Xfce, instalaré pinentry-gtk2:
~# apt-get install pinentry-gtk2
- Ya toca instalar el paquete OpenSC pero no voy a instalar la versión 0.12 que está actualmente en los repositorios de Debian 7 ‘Wheezy’ (todavía no soporta el DNIe, lo hará en su versión 0.14) y mucho menos la versión ofrecida por la Policía Nacional. En su lugar descargaré la última versión disponible en la forja del Cenatic (tengo una réplica aquí), prestando atención a la arquitectura de nuestro sistema (i386 para 32 bits o amd64 para 64 bits):
~# dpkg -i opensc_0.12.1-1-svn385_i386.deb
- Importante: Verás que la versión descargada del Cenatic es anterior a la disponible en los repositorios de Debian Testing:

Huelga decir que, en la próxima actualización, la nueva versión del paquete machacará al que me interesa. Tengo que bloquear o retener el paquete opensc_0.12.1-1-svn385_i386.deb (u opensc_0.12.1-1-svn385_amd64.deb, según el caso) para evitar su actualización:
~# echo "opensc hold" | dpkg --set-selections
- Importante: Debian 7 tiene un árbol de directorios un tanto diferente a otras distribuciones, esto se debe a la necesidad de dar soporte multiarquitectura. Es por ello que OpenSC no encontrará la librería libpcsclite.so.1 en
/usr/lib/
. Estará en/usr/lib/i386-linux-gnu/
o en/usr/lib/amd64-linux-gnu/
o en/usr/lib/x86_64-linux-gnu/
o puede que en/usr/lib64/
dependiendo si es un sistema de 32 bits o de 64 bits.
Para solucionarlo, debo buscar libpcsclite.so.1
y una vez sepa en qué directorio está tengo dos alternativas: Crear un enlace simbólico para que OpenSC encuentre esa librería en alguno de los dos directorios o modificar el archivo de configuración de OpenSC para que encuentre la librería en el directorio adecuado.
En este ejemplo, la librería está en /usr/lib/i386-linux-gnu/libpcsclite.so.1
Creo firmemente en que cuantos menos enlaces simbólicos, mejor. Y como en este caso tengo la posibilidad de modificar el archivo de configuración de OpenSC, que está en /etc/opensc/opensc.conf, modifico la siguiente línea:
# Use specific pcsc provider.
# Default: /usr/lib/libpcsclite.so.1
# provider_library = /usr/lib/libpcsclite.so.1
provider_library = /usr/lib/i386-linux-gnu/libpcsclite.so.1
- Necesito los certificados oficiales de la Dirección General de la Policía para instalarlos en Iceweasel/Firefox. Están en esta página (no es posible hacer una conexión encriptada… Surrealista), descargo y descomprimo los siguientes certificados:
- AC Raíz
- Certificado pkcs1-sha256WithRSAEncryption (válido hasta el ocho de febrero de 2036)
- AC Subordinadas
- Certificado pkcs1- sha256WithRSAEncryption (válido hasta el 26 de febrero de 2021)
- Certificado pkcs1- sha256WithRSAEncryption (válido hasta el 26 de febrero de 2021)
- Certificado pkcs1- sha256WithRSAEncryption (válido hasta el 26 de febrero de 2021)
- En el menú del navegador, voy a Iceweasel/Firefox Preferencias Preferencias:

En la ventana Preferencias selecciono la sección Avanzado y la pestaña Cifrado. Hago click en el botón Ver certificados:

En la ventana Administrador de certificados selecciono la pestaña Autoridades y hago click en el botón Importar…:

Importo uno a uno los cuatro certificados que acabo de descargar y descomprimir:

Verifico que los cuatro han sido importados:

- Vuelvo a la página de la Dirección General de la Policía para descargar y descomprimir dos certificados adicionales:
- AV DNIE FNMT
- Certificado pkcs1-sha256WithRSAEncryption (válido hasta el 21 de abril de 2015)
- AV DNIE MINHAP
- Certificado pkcs1-sha256WithRSAEncryption (válido hasta el 28 de febrero de 2015)
- Nuevamente en la ventana Administrador de certificados de Iceweasel/Firefox selecciono la pestaña Servidores y hago click en el botón Importar…:

Importo los dos certificados que acabo de descargar y descomprimir. Verifico que ambos han sido importados:

- Al hacer click en el botón Aceptar del Administrador de certificados se cierra y vuelvo a la la ventana Preferencias, sección Avanzado, pestaña Cifrado y hago click en el botón Dispositivos de seguridad:

Para encontrarme con que Iceweasel/Firefox no detecta ni el lector de tarjetas ni mucho menos el DNIe:

Esto se debe a que, al igual que OpenSC buscaba la librería libpcsclite.so.1
en /usr/lib/
y no estaba, Iceweasel/Firefox busca el archivo opensc-pkcs11.so en /usr/lib/i386-linux-gnu/
o en /usr/lib/amd64-linux-gnu/
o en /usr/lib/x86_64-linux-gnu/
o puede que en /usr/lib64/
dependiendo si es un sistema de 32 bits o de 64 bits, pero opensc-pkcs11.so
está en realidad en /usr/lib/
.
Puedo crear un enlace simbólico pero no es imprescindible. Voy a decirle a Iceweasel/Firefox que el archivo está en /usr/lib/opensc-pkcs11.so haciendo click en el botón Cargar de la ventana del Administrador de dispositivos y dejándolo como sigue:

Ahora sí me aparece el lector de tarjetas, sin el DNIe insertado:

Y con el DNIe insertado:

- Para terminar, pruebo el correcto funcionamiento del DNIe accediendo a cualquier servicio de la Administración Pública española que lo requiera. Por ejemplo, descargaré el informe de mi vida laboral de la Tesorería General de la Seguridad Social.
Criptografía Debian DNIe Firefox GNU Iceweasel Linux Linux Mint