Categories
Español Tecnología

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 replies on “DNI electrónico en Ubuntu GNU/Linux”

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 🙁

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 *