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.