DNI electrónico en Ubuntu GNU/Linux

Mediante lectores de tarjetas inteligentes como LTC31 podemos hacer que nuestro sistema lea los DNIs electrónicos que se emiten actualmente.

Vamos a configurar el sistema para que Ubuntu reconozca el dispositivo lector y podamos utilizarlo desde el navegador Firefox. Para ello, instalaremos los paquetes necesarios (muchos de los pasos que describo los he obtenido del artículo DNIe y lector ACR38 bajo Linux):

# Herramientas para que el sistema reconozca el lector
apt-get install pcscd pcsc-tools libccid opensc
# Integración con mozilla
apt-get install mozilla-opensc libnss3-tools

Adicionalmente, tendremos que instalar el driver concreto para poder leer DNIs que lo proporciona el ministerio del interior mediante la sección de descargas. Por ejemplo, en mi caso descargo la versión de Ubuntu Intrepid 64 bits (funciona también en Jaunty):

wget http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc-dnie_1.4.5-1_amd64_Ubuntu_Intrepid_Ibex.deb.tar
tar -xvf opensc-dnie_1.4.5-1_amd64_Ubuntu_Intrepid_Ibex.deb.tar
dpkg -i opensc-dnie_1.4.5-1_amd64_Ubuntu_Intrepid_Ibex.deb

A continuación podemos ejecutar “Aplicaciones – Oficina – Registrar módulo DNIe PKCS#11” para que se active el soporte en Firefox (módulo “/usr/lib/opensc-pkcs11.so”) y se añada el certificado de la Dirección General de la Policía.

Por otra parte, podemos comprobar si el sistema reconoce correctamente el lector. Lo conectamos, ejecutamos pcsc_scan e introducimos nuestro DNI:

# pcsc_scan
PC/SC device scanner
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: C3PO LTC31 00 00

Sat May 30 17:00:41 2009
 Reader 0: C3PO LTC31 00 00
  Card state: Card removed,

Sat May 30 17:01:27 2009
 Reader 0: C3PO LTC31 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

Si todo ha ido bien, vayamos a intentar leer los certificados de nuestro DNI mediante Firefox. Lo abrimos con el lector conectado y vamos a “Editar – Preferencias – Avanzado – Cifrado – Ver Certificados – Sus Certificados”, donde nos pedirá el PIN de nuestro DNI.

Podemos comprobar la autenticación y firma mediante la página de prueba de la FNMT:

https://av-dnie.cert.fnmt.es/compruebacert/compruebacert

Finalmente, determinados sitios web intentaran acceder al lector mediante Java (p.ej. entidades financieras como Bankinter o ING-Direct) y necesitaremos soporte para Java, para lo cual tendremos que escoger la versión abierta o la de Sun:

apt-get install openjdk-6-jre icedtea6-plugin
apt-get install sun-java6-jre sun-java6-plugin

Por desgracia, no he sido capaz de autenticarme en ninguna web que intente acceder al DNI mediante Java. Con la versión OpenJDK/IcedTea me salta un mensaje de error que no ofrece muchas pistas y con la versión de Sun me indica que el sistema operativo no es compatible.

5 thoughts on “DNI electrónico en Ubuntu GNU/Linux

  1. gracias por tu aportación.

    en realidad ya lo tenía correctamente configurado, pero he llegado a tu post buscando información a cerca del problema con las webs que utilizan el DNIe con JAVA.

    TEngo el mismo error que tú, he probado incluso con una versión más antigua del sun-java y tampoco funciona 🙁

  2. Ahora se puede hacer más rápido y fácil:
    http://casa.apertus.es/blog/2010/12/17/instalar-software-dnie-en-ubuntu-10-04/ :
    1) Instala el demonio:
    sudo aptitude install pcscd
    2) Instala el paquete específico (y dependencias):
    http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc-dnie_1.4.8-1_i386_ll.deb
    3) Registra Modulo DNIE PKCS#11:
    Aplicaciones > Oficina > Registra Modulo DNIE PKCS#11

    ////////////////////////////////////////////////////////////////////

    Si hay problemas o se necesita más información:
    http://www.ubuntu-es.org/node/152012 :
    DNIe con lector de tarjetas Cherry ST-1200USB (y otros) y Firefox en Ubuntu 10.04 (Lucid Lynx) (DNI electrónico, Linux Mint 9)

    [ SI TU LECTOR NO ES DE LA MARCA CHERRY O ES DE OTRO MODELO MIRA LA NOTA d) (abajo del todo) ]

    He buscado por ahí y no he visto nada sobre el lector Cherry ST-1200USB. He leído soluciones generales (para ningún lector en concreto) o para otros lectores de hace unos meses (algunas para versiones anteriores de Ubuntu), que eran algo más complicadas. Ahora se puede hacer más rápido y fácil, así:

    1. Hacer que Ubuntu 10.04 lea mi DNIe con el lector Cherry ST-1200USB
    a) En un terminal se ejecuta: sudo apt-get install opensc pcsc-tools pcscd
    b) Se enchufa el lector Cherry y se le mete el DNIe
    c) En un terminal se ejecuta: pcsc_scan . Si salen varias líneas, con, entre otros, los textos “Cherry SmartTerminal”, “Card inserted”, “ATR” y “DNI electronico (Spanish electronic ID card) http://www.dnielectronico.es” (este justo al final) es que el lector funciona bien y hace que Ubuntu acceda al DNIe.

    2. Hacer que Firefox pueda usar el DNIe en páginas que necesiten autenticación (y firmar) con él
    a) Se abre opensc-dnie_1.4.8-1_i386_ll.deb (para arquitectura de 32 bits) con el Instalador de paquetes GDebi (por defecto, al hacer clic o doble clic, se abre con él) y se instala el fichero. Para 32 bits se puede descargar desde http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/opensc-dnie_1.4.8-1_i386_ll.deb . Cuando salga un mensaje que dice que hay que hacer algo en Firefox (creo que está desfasado) se pincha en Adelante.
    b) Se abre Firefox
    c) Se arrastra el fichero /usr/share/opensc-dnie/instal_dnie/instala_modulo.htm sobre el centro de Firefox. En la ventana que sale se pincha sobre Permitir. Debe salir un mensaje de que el Módulo de Seguridad PKCS#11 se ha instalado correctamente
    d) Se arrastra el certificado raíz /usr/share/opensc-dnie/ac_raiz_dnie.crt sobre el centro de Firefox. Se activan las tres casillas junto a “Confiar …” y se pulsa en Aceptar.
    e) Se comprueba que todo va bien p.e. desde la página del DNIe ( https://av-dnie.cert.fnmt.es/compruebacert/compruebacert ) o desde la que muestra la Vida Laboral ( https://sede.seg-social.gob.es/Sede_1/Lanzadera/index.htm?URL=208 ). Se pulsa en “Entiendo los riesgos”, luego en “Añadir excepción…” y después en “Confirmar excepción de seguridad” (cosas del país …). Se mete la contraseña, se pulsa en Aceptar, luego se elige el certificado que dice Autenticacion (NO el que dice FirmaDigital) y se pulsa en Aceptar. Si vamos a la primera de las 2 páginas podemos además comprobar que podemos firmar con el DNIe, así: ponemos un texto donde dice “Introduzca los datos a Firmar”, pulsamos en Firmar, luego elegimos el certificado que dice FirmaDigital, ponemos la clave abajo y pulsamos en Aceptar en 3 ventanas seguidas. Veremos unos códigos donde dice “Resultado de la Firma”. A la web de la segunda página, la de la Vida Laboral, hay que darle permiso para abrir ventanas emergentes para poder ver el PDF con el documento (p.e. desde la barrita con el mensaje correspondiente que sale arriba). Esta misma web a veces no suele funcionar.

    NOTAS:
    a) A mí no me hizo falta cambiar Info.plist por uno similar que facilitan los representantes de Cherry en España. Ahora /usr/lib/pcsc/drivers/ifd-ccid.bundle/Contents/Info.plist apunta a /etc/libccid_Info.plist y ahí ya salen varias líneas con Cherry (me refiero a http://www.ubuntu-es.org/?q=node/116900)
    b) Tampoco me hizo falta hacer los pasos de “2.2 GNU/Linux Ubuntu Edgy y posteriores” de http://www.dnielectronico.es/descargas/PKCS11_para_Sistemas_Unix/install_opensc_dnie.pdf pues para cuando se hace el paso 2.a) ya están instalados casi todos los paquetes necesarios y el único que aún hace falta (pinentry-gtk2) se instala automáticamente al instalarse opensc-dnie_1.4.8-1_i386_ll.deb
    c) Este procedimiento también me ha servido para Linux Mint 9 Fluxbox (basado en Ubuntu 10.04) no instalado (Live), con un mínimo cambio: en el punto 2 a) hay que hacer clic con el botón derecho y elegir la opción de instalar el paquete, pues el clic izquierdo creo recordar que descomprime en vez de instalar
    d) Por lo que he leído y experimentado yo diría que este procedimiento vale para cualquier lector de tarjetas cuya marca y modelo sale en /etc/libccid_Info.plist. Como se ve en el caso de mi lector el modelo puede salir de forma genérica en la lista (con otros caracteres):
    Gemplus Gem e-Seal Pro
    Gemplus GemPC Twin
    Gemplus GemPC Key
    Gemplus GemPC Pinpad
    Gemplus GemCore POS Pro
    Gemplus GemCore SIM Pro
    Gemplus GemPC Express
    Gemplus GemPC433 SL
    Gemalto Prox Dual
    Gemalto Prox SU
    Smart Enterprise Guardian
    Verisign Secure Token
    VeriSign Secure Storage Token
    Gemalto PDT
    SCM SCR 331-DI
    SCM SCR 333
    SCM SCR 335
    SCM SCR 3310
    SCM SCR 3320
    SCM SCR 3340 ExpressCard54
    SCM SCR 3310 NTTCom
    Axalto Reflex USB v3
    SCM SCR 3311
    SCM SCR 331-DI NTTCom
    SCM SDI 010
    SCM SCR 331
    SCM SCR 355
    SCM SPR 532
    OmniKey CardMan 1021
    OmniKey CardMan 3121
    OmniKey CardMan 3621
    OmniKey CardMan 3821
    OmniKey CardMan 4321
    OmniKey CardMan 5121
    OmniKey CardMan 5125
    OmniKey CardMan 5321
    OmniKey CardMan 6121
    Smart Card Reader
    Teo by Xiring
    C3PO LTC31
    C3PO TLTC2USB
    C3PO LTC32 USBv2 with keyboard support
    C3PO KBR36
    C3PO LTC32
    C3PO TLTC2USB
    ActivCard USB Reader 3.0
    Activkey Sim
    Silitek SK-3105
    Dell keyboard SK-3106
    Dell smart card reader keyboard
    Cherry XX33
    Cherry XX44
    Cherry ST1044U
    Cherry SmartTerminal ST-2XXX
    Cherry SmartBoard XX1X
    Cherry SmartTerminal XX1X
    ACS ACR 38U-CCID
    ACS ACR122U PICC Interface
    O2 Micro Oz776
    O2 Micro Oz776
    KOBIL KAAN Base
    KOBIL KAAN Advanced
    KOBIL KAAN SIM III
    KOBIL EMV CAP – SecOVID Reader III
    KOBIL mIDentity M
    KOBIL mIDentity XL
    Eutron Digipass 860
    Eutron SIM Pocket Combo
    Eutron Smart Pocket
    Eutron CryptoIdentity
    Eutron CryptoIdentity
    Athena ASE IIIe
    Athena ASEDrive IIIe KB
    SmartEpad
    Winbond
    HP USB Smart Card Keyboard
    HP USB Smartcard Reader
    HP MFP Smart Card Reader
    id3 CL1356D
    id3 CL1356A HID
    Alcor Micro AU9520
    Alcor Micro SCR001
    RSA SecurID
    Fujitsu Siemens SmartCard Keyboard USB 2A
    Fujitsu Siemens SmartCard USB 2A
    Sitecom USB simcard reader MD-010
    SchlumbergerSema Cyberflex Access
    Philips JCOP41V221
    Philips SmartMX
    GnD CardToken 350
    GnD CardToken 550
    Lenovo Integrated Smart Card Reader
    Charismathics token
    Blutronics Bludrive II CCID
    Covadis Alya
    Covadis Vega
    Vasco DP905
    Validy TokenA sl vt
    SpringCard CrazyWriter
    SpringCard CSB6 Basic
    SpringCard CSB6 Secure
    SpringCard CSB6 Ultimate
    SpringCard EasyFinger Standard
    SpringCard EasyFinger Ultimate
    SpringCard Prox’N’Roll
    OCS ID-One Cosmo Card
    Aladdin eToken PRO USB 72K Java
    Atmel AT91SO
    Atmel AT98SC032CT
    Atmel AT91SC192192CT-USB ICCD
    KONA USB SmartCard
    Xiring XI-SIGN USB V2
    VMware Virtual USB CCID
    MSI StarReader SMART
    Realtek
    Aktiv Rutoken Magistra
    Aktiv Rutoken ECP
    TianYu CCID SmartKey
    Precise 250 MC
    Precise 200 MC
    Raritan D2CIM-DVUSB VM/CCID
    Feitian SCR301
    Softforum XecureHSM
    Neowave Weneo
    Neowave Weneo
    Synnix STD200
    Panasonic USB Smart Card Reader 7A-Smart
    ActivCard USB Reader 2.0
    C3PO LTC31

Leave a Reply

Your email address will not be published. Required fields are marked *