DNIe, DNI electrónico.

Cómo instalar un lector de tarjetas para usar el DNI electrónico español en Debian 8 ‘Jessie’

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 8 ‘Jessie’ (actualmente Debian Testing) de 32 bits, Xfce como entorno de escritorio y Iceweasel/Firefox como navegador. Aunque también comento alternativas para sistemas de 64 bits y Gnome y KDE como entornos de escritorio.

El soporte para el DNIe español fue incorporado a OpenSC en la versión 0.14 el 27 de agosto de 2013. La versión 0.14 de OpenSC entró en los repositorios de Debian Testing (futuro Debian 8 ‘Jessie’) el cinco de julio de 2014. Las siguientes instrucciones serán válidas únicamente para Debian 8 ‘Jessie’ y cualquier otra distribución basada en Debian Testing cuyos repositorios oficiales contengan el paquete OpenSC en su versión 0.14 o posterior.
Si estás usando Debian 7 ‘Wheezy’ o cualquier otra distribución basada en ella, estas instrucciones no serán válidas. Por favor, sigue las instrucciones que encontrarás en el artículo «Cómo instalar un lector de tarjetas para usar el DNI electrónico español en Debian 7 ‘Wheezy’».

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.

1. Conecto el lector de tarjetas a un puerto USB fiable (para evitar quebraderos de cabeza, no uso ningún hub, ni siquiera alimentado).

2. Abro una terminal e inicio sesión como root:

$ su -

3. 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

4. Aprovecho para actualizar el sistema:

# apt-get update
# apt-get upgrade

5. Instalo los paquetes pcscd, pcsc-tools y todas sus dependencias:

# apt-get install pcscd pcsc-tools

6. 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.23 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.8.11
Using reader plug'n play mechanism
Scanning present readers...

Reader 0: Dectel CI692 [Smart Card Reader Interface] (20070818000000000) 00 00
 Card state: Card removed.

7. 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.23 (c) 2001-2011, Ludovic Rousseau
Compiled with PC/SC lite version: 1.8.11
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

8. Cierro pcsc_scan presionando Ctrl + c.

9. 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

10. Ya toca instalar el paquete OpenSC que, a partir de la versión 0.14, ya soporta el DNIe español:

# apt-get install opensc

11. 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:

Estos certificados serán válidos hasta 2021 y 2036, según el caso. No será necesario renovarlos hasta entonces.

12. En el menú del navegador, voy a Iceweasel/Firefox Preferencias:

Preferencias de Iceweasel/Firefox.
Preferencias de Iceweasel/Firefox.

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

Preferencias de Icewasel/Firefox.
Preferencias de Icewasel/Firefox.

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

Administrador de certificados.
Administrador de certificados.

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

Descargando certificado.
Descargando certificado.

Verifico que los cuatro han sido importados:

Administrador de certificados.
Administrador de certificados.

13. Vuelvo a la página de la Dirección General de la Policía para descargar y descomprimir dos certificados adicionales:

Aviso: Estos dos certificados caducan a los seis meses de su emisión. Hay que proceder a su renovación (descargar de la página de la Dirección General de la Policía, descomprimir y reimportar -pasos 13 y 14-) unos días antes de la fecha indicada en cada caso.

14. Nuevamente en la ventana Administrador de certificados de Iceweasel/Firefox selecciono la pestaña Servidores y hago click en el botón Importar…:

Preferencias de Iceweasel/Firefox.
Administrador de certificados.

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

Preferencias de Iceweasel/Firefox.
Preferencias de Iceweasel/Firefox.

15. 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 Certificados y hago click en el botón Dispositivos de seguridad:

Preferencias de Iceweasel/Firefox.
Preferencias de Iceweasel/Firefox.

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

Administrador de dispositivos.
Administrador de dispositivos.

Esto se debe a que Iceweasel/Firefox busca el archivo opensc-pkcs11.so en /usr/lib/ pero Debian 8 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 Iceweasel/Firefox no encontrará la librería opensc-pkcs11.so 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 el archivo opensc-pkcs11.so en alguno de los directorios indicados antes. En este ejemplo, la librería está en /usr/lib/i386-linux-gnu/opensc-pkcs11.so

Voy a decirle a Iceweasel/Firefox que el archivo está en /usr/lib/i386-linux-gnu/opensc-pkcs11.so haciendo click en el botón Cargar de la ventana del Administrador de dispositivos y dejándolo como sigue:

Cargar dispositivo PKCS#11.
Cargar dispositivo PKCS#11.

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

Administrador de dispositivos.
Administrador de dispositivos.

Y con el DNIe insertado:

Administrador de dispositivos.
Administrador de dispositivos.

16. Si hago click en el botón Iniciar sesión de la ventana del Administrador de dispositivos podré comprobar si cuento con el PIN correcto para mi DNI electrónico:

Contraseña requerida.
Contraseña requerida.

Si el PIN introducido es el correcto, habré iniciado la sesión correctamente:

Administrador de dispositivos.
Administrador de dispositivos.

Si, por el contrario, el PIN no es el correcto o no lo recuerdo no me quedará otro remedio que acercarme a cualquier Oficina de Expedición que cuente con un Punto de Actualización del DNIe, no es necesario pedir cita previa y para cambiar el PIN sólo se requiere colocar el dedo indicado sobre el lector de huellas dactilares.

17. Si todo ha ido bien hasta aquí, voy a comprobar que los certificados digitales contenidos en el chip de mi DNIe no están caducados (los certificados digitales tienen un periodo de validez de 30 meses y no tiene ninguna relación con la fecha que aparece impresa en el campo “Válido hasta” del DNI físico).

Para comprobar la validez de los certificados digitales contenidos en el chip del DNIe, cierro la ventana del Administrador de dispositivos haciendo click en el botón Aceptar, siempre sin terminar la sesión. De nuevo en la ventana Preferencias, hago click en el botón Ver certificados:

Preferencias de Icewasel/Firefox.
Preferencias de Icewasel/Firefox.

En la ventana Administrador de certificados selecciono la pestaña Sus certificados:

Administrador de certificados.
Administrador de certificados.

Y veré la fecha de caducidad de los certificados digitales. Si ésta fuese anterior a la actual, tendré que acercarme a cualquier Oficina de Expedición que cuente con un Punto de Actualización del DNIe. No es necesario pedir cita previa y para renovar los certificados digitales sólo se requiere colocar el dedo indicado sobre el lector de huellas dactilares.

18. 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.

Miguel Menéndez

Administrador de sistemas, auditor de redes y seguridad.