Instalar Lector de DNIe

+1
+4
-1

Desde la implantacion del DNIe, he conocido a pocas personas que hagan uso de la ventaja que supone, tenerlo instalado en el pc. Cuando por otros motivos tuve que compar un lector de tarjetas inteligentes, comprendi la razon por la que no es muy utiliado. La Administración ciertamente no lo pone fàcil, apenas da soporte y hace que la instalación sea complicada, incluso en el lado oscuro.

Vamos a ver como se instala en Trusty Tahr y asi ahorranos paseos de oficina en oficina para solucionar casi cualquier tramite.

Hay que tener en cuenta que es necesario tener instalado Java para realizar tramites en linea, en la mayoria de las Webs de la Administración.

En mi caso he instalado el lector c3po LTC36.

La mayoría de los lectores de DNI-e funcionan en GNU/Linux con el driver CCID a través del servicio pcscd.
Para Ubuntu y en general todas las derivadas de Debian, instalar los siguientes paquetes:

Instalación de controlador
libccid (biblioteca que proporciona una implementación PC/SC del controlador de IFD para lectores USB de tarjetas inteligentes, compatibles con el protocolo CCID. Este paquete es necesario para comunicarse con los lectores de tarjetas inteligentes a través de CCID
pcscd (El demonio PC/SC se utiliza para asignar / cancelar dinámicamente los controladores del lector y administrar conexiones a los lectores.)

En el terminal tecleamos:

&sudo apt-get install libccid pcscd

Si el lector esta basado en ACR38 instalar el controlador (como el mio)

&sudo apt-get install libacr38u

Instalación de librerías o bibliotecas

Instalar las siguientes librerías o bibliotecas y paquetes complementarios:

pinentry-gtk2 (Programa que permite garantizar la entrada de PIN o frases de contraseña. Esto significa que trata de cuidar que la información introducida no se intercambie en el disco o se almacene temporalmente en cualquier lugar. Esta funcionalidad es especialmente útil para introducir frases de contraseña cuando se utiliza software de cifrado GnuPG o como clientes de correo electrónico utilizando el mismo. Utiliza un protocolo abierto y por lo tanto, no vinculado a determinados programas)
pcsc-tools ("Gscriptor" contiene herramientas útiles para PC/SC, como pcsc_scan que analiza lectores de tarjetas inteligentes disponibles otras detectan los eventos como la inserción y extracción de la tarjeta con ATR ...)
libpcsclite1 y libpcsclite-dev (El propósito de PC/SC Lite es proporcionar una interfaz de tipo SCard de Windows(R) para comunicarse con tarjetas inteligentes y lectores)
libreadline6 y libreadline-dev (una biblioteca readline de GNU que ayuda en la consistencia de interfaces de usuario a través de programas discretos que necesitan proporcionar una interfaz en línea de órdenes)
coolkey (Soporte de controladores de Linux para las tarjetas inteligentes CoolKey and Common Access Card (CAC) con claves de seguridad utilizadas en una Infraestructura de Clave Pública (PKI). El módulo de libpkcs11 permite el uso de tarjetas inteligentes en aplicaciones como Mozilla Network Security Services (NSS))

Instalación de todos estos paquetes desde la terminal:

&sudo apt-get install pinentry-gtk2 pcsc-tools libpcsclite1 libpcsclite-dev libreadline6 libreadline-dev coolkey

Ahora podemos probar si Ubuntu detecta el lector y puede leer el DNI-e, una vez conectado el lector usb e introducido el DNI-e.

Para ver si Ubuntu detecta el lector ejecuta en una terminal el siguiente comando:

&lsusb

La terminal nos responderá algo parecido a:

Bus 002 Device 003: ID 0c45:62c0 Microdia Sonix USB 2.0 Camera 
 Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
 Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 
 Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 
 Bus 005 Device 002: ID 046d:c51b Logitech, Inc. V220 Cordless Optical Mouse for  Notebooks 
 Bus 005 Device 004: ID 0783:0036 C3PO 
 Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub 
 Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub 
 Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

En la línea Bus 005 Device 004: ID 0783:0036 C3PO , vemos que ha detectado mi lector "c3po LTC36" (el nombre variará según sea vuestro lector)
ahora comprobamos si nos lee el DNI:

pcsc_scan

Nos devolverá mas o menos esto:

PC/SC device scanner 
V 1.4.22 (c) 2001-2011, Ludovic Rousseau  
Compiled with PC/SC lite version: 1.8.10 
Using reader plug'n play mechanism 
Scanning present readers... 
0: C3PO LTC36 (0100010424) 00 00 

Tue May 13 19:16:15 2014 
Reader 0: C3PO LTC36 (0100010424) 00 00 
  Card state: Card inserted, 
  ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 10 02 4C 34 01 13 03 90 00 

ATR: 3B 7F 38 00 00 00 6A 44 4E 49 65 10 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 
    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: 00 6A 44 4E 49 65 10 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 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): 
3B 7F 38 00 00 00 6A 44 4E 49 65 10 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 

Vemos que ha leído el DNI en las lineas:

Reader 0: C3PO LTC36 (0100010424) 00 00 
  Card state: Card inserted,

Pulsamos CTRL+Z para detener el proceso y cerramos la terminal.

Nota: Si la terminal se queda pensando intentando leer el DNIe, puede ser necesario reiniciar el sistema con el lector conectado y el DNIe introducido.

Instalación del software del DNI-e

Añadir Certificado y Validación de las Autoridades:

Lo primero que vamos a hacer es descargar los certificados del DNI-e para instalarlos en el navegador, uno para la autoridad de certificación y otro para la Autoridad de validación del DNIe. Para ello vamos a la siguiente página:
http://www.dnielectronico.es/seccion_integradores/certs.html
Para la Autoridad de certificación (La Dirección General de la Policía (Ministerio del Interior) actúa como Autoridad de Certificación (AC)):
Haz clic en el enlace: "AC Raíz"
y descarga el archivo: "pkcs1-sha256WithRSAEncryption".

Para la Autoridad de validación del DNIe (certificado que suministra información sobre la vigencia de los certificados electrónicos, que será el de la FMNT (Fábrica Nacional de Moneda y Timbre)):
Haz clic en el enlace: “AV DNIE FNMT"
y descarga el archivo: "pkcs1-sha256WithRSAEncryption".

Nota: En este último podréis ver que hay varias versiones con diferentes periodos de validez. Descargaremos el actual y si en un futuro nos falla puede ser debido a que tengamos que volver a descargar / instalar una nueva versión con la fecha de validez actualizada.

Una vez descargados, hacemos en cada uno respectivamente, clic derecho y seleccionamos "extraer aquí" y ya tendremos los certificados "ACRAIZ-SHA2.crt" y "AVDNIEFNMTSHA2.cer".

Abrimos Firefox e importamos los certificados:

Para la Autoridad de certificación vamos al menú: "Editar > Preferencias > Avanzado > Cifrado > Ver certificados" y en la pestaña "Autoridades", hacemos clic en "Importar" y seleccionamos el archivo descomprimido "ACRAIZ-SHA2.crt".

Se nos abrirá una ventana en la que debemos de marcar las 3 opciones de confianza (muy importante). Si lo hubiéramos dejado en blanco se pueden volver a activar, pulsando en el certificado "AC RAIZ DNIE" y pulsando en (editar confianza ...):

Nos aseguramos de que se ha importado buscando en la lista de certificados "DIRECCIÓN GENERAL DE LA POLICIA (AC RAIZ DNIE)":
ID ubuntu2.png not found

Para la Autoridad de validación del DNIe en el mismo menú (Editar > Preferencias > Avanzado > Cifrado > Ver certificados), en la pestaña "Servidores", hacemos clic en "Importar" y seleccionamos el archivo descomprimido "AVDNIEFNMTSHA2.cer".

Nos aseguramos de se ha importado buscando en la lista de certificados "DIRECCIÓN GENERAL DE LA POLICIA (AC DNIE FNMT)":
ID ubuntu3.png not found

Preinstalación:

Para compilar el código fuente necesitaremos instalar algunas herramientas:

build-essential (Siempre lo recomiendo en cosas que hacer después de instalar Ubuntu, pero no está mal asegurarse de su instalación. Este paquete contiene una lista informativa de los paquetes considerados esenciales para la creación de paquetes .deb)
autoconf (El estándar para los paquetes de código fuente de FSF (Fundación para el software libre))
subversion (también conocido como svn, es un sistema de control de versiones muy parecido a «Concurrent Versions System» (CVS))
openssl y libssl-dev (Este paquete contiene los binarios y las biblioteca relacionadas para openssl)
(script de soporte para bibliotecas genéricas. Libtool esconde la complejidad de generar tipos especiales de bibliotecas (como las bibliotecas compartidas) tras una interfaz consistente. Para usar libtool, agregue los nuevos comandos genéricos de construcción de bibliotecas a su Makefile, Makefile.in, o Makefile.am)
pkg-config (es un sistema para gestionar las opciones de compilación y enlazado de las bibliotecas, funciona con automake y autoconf. Las bibliotecas incrementables tienen unos archivos «.pc» que permiten al compilador y al enlazador consultar las opciones necesarias para usarlos en el programa pkg-config()

&sudo apt-get install build-essential autoconf subversion openssl libssl-dev libtool             libltdl-dev pkg-config

Lo que vamos a hacer es compilar el código fuente de una versión de "opensc" especialmente modificada para el DNI-e, por lo que si tenemos instalada la versión de los repositorios hay que desinstalarla antes con el comando:

&sudo apt-get autoremove opensc

En el sistema de archivos de Ubuntu 14.04 falta un directorio necesario para la compilación del código fuente, en concreto "/etc/opensc". Para crearlo ejecutamos en la terminal:

& sudo mkdir /etc/opensc

En otras distribuciones / versiones también puede faltar el directorio "/usr/lib/pkcs11". Verificar su existencia

& sudo find /usr/lib/pkcs11

y en caso negativo crearlo con:

&sudo mkdir /usr/lib/pkcs11

Creamos un nuevo directorio en nuestra carpeta personal donde descargar el código fuente y compilar con posterioridad. Lo llamaremos por ejemplo ".openscDNIe" (el punto delante es para que esté oculto y no nos estorbe en nuestra carpeta personal(Ctrl+H para ver archivos ocultos)). Lo creamos con el comando:

& mkdir .openscDNIe

Vamos al nuevo directorio con el comando:

&cd .openscDNIe

Descarga del código fuente:

En el servidor de Cenatic están los archivos actualizados para la última versión y los descargamos directamente con el siguiente comando:

&svn checkout --username anonsvn https://forja.cenatic.es/svn/opendnie/opensc-opendnie/trunk

Posible solicitud de contraseña del anillo de claves: Si nos aparece un aviso similar a:

WARNING: gnome-keyring:: couldn't connect to: /tmp/keyring-F8siE7/pkcs11: No existe el archivo o el directorio
Clave para el anillo de claves GNOME '(null)':

Escribimos la contraseña de nuestro usuario y pulsamos "Enter". (la contraseña no se ve mientras se escribe por seguridad)

Ahora nos pedirá el "password" para el usuario anonsvn:
Reino de autentificación: Document repository
Clave de «anonsvn»:

Escribimos (se ve al escribir ******)

anonsvn

Al finalizar la descarga se habrá creado una nuevo directorio llamada "trunk" dentro del directorio donde estamos colocados en la terminal: ".openscDNIe".

Compilación del código fuente:

Dentro de Trunk está todo el código fuente, por lo que debemos de colocarnos dentro de él, para comenzar la compilación, con el comando:

&cd trunk

Atención, durante la instalación debemos de ejecutar todos los comandos desde esta misma terminal y siempre dentro del directorio ".opendnie/trunk", manteniendo el prompt (línea inicial del terminal) en: "usuario@usuario-equipo:~/.opendnie/trunk$"

Antes de la compilación hay que añadir la ruta de la librería "libltdl.la" en el archivo "src/tools/Makefile.am" del código fuente (dentro de "trunk"). La ruta variará según sea la arquitectura (32 o 64 bits) de nuestro Ubuntu. Para ver la ruta ejecutamos en la terminal:

&sudo find / -name libltdl.la

La respuesta puede tardar y nos devolverá la ruta exacta (en este ejemplo es para 32 bits):

/usr/lib/i386-linux-gnu/libltdl.la

Editamos el archivo del Makefille.am con el comando:

sudo gedit src/tools/Makefile.am

Situamos el cursor al final de la 2ª línea ("$(top_builddir)/src/libopensc/libopensc.la") y tecleamos: "Espacio en blanco", "barra invertida" (\), "Enter", "tabulador" y la ruta que hayas sacado antes (En el ejemplo: /usr/lib/i386-linux-gnu/libltdl.la). Quedaría así para el ejemplo:

LIBS = $(top_builddir)/src/common/libcompat.la \
                  $(top_builddir)/src/libopensc/libopensc.la \
                  /usr/lib/x86_64-linux-gnu/libltdl.la

Guarda y cierra el editor de textos.

Preparamos el entorno de compilación con el comando:

&./bootstrap

Al terminar y ver de nuevo el prompt ("usuario@usuario-equipo:~/.opendnie/trunk$") ejecutamos:

&./configure --prefix=/usr --sysconfdir=/etc/opensc

Al terminar y ver de nuevo el prompt ("usuario@usuario-equipo:~/.opendnie/trunk$"), generamos el archivo "makefile" con:

&make

Al terminar y ver de nuevo el prompt ("usuario@usuario-equipo:~/.opendnie/trunk$"), generamos el archivo "makefile" con:

>pre>&sudo make install

Cuando finalice la compilación e instalación (puede tardar), el dispositivo o módulo de seguridad "PKCS11" habrá quedado instalado en la ruta: "/usr/lib/opensc-pkcs11.so"

Para finalizar hay que añadir el módulo y su ruta al navegador. Para ello abrimos Firefox y vamos al menú "Editar > Preferencias > Avanzado > Cifrado > Dispositivos de seguridad", pulsamos en "Cargar" y en la nueva ventana:

En "Nombre del módulo", escribimos: PKCS11
En "Archivo del módulo", escribimos la ruta: /usr/lib/opensc-pkcs11.so

Reiniciamos el navegador y ya esteremos en disposición de utilizar el DNI-e.

Comprobación del DNIe

Una vez reiniciado ya podemos probar el DNI-e.

Identificación protegida por Token:

El pin del DNIe está protegido por token y para evitar el siguiente error a la hora de introducirlo:

ID ubuntu4.png not found

Editamos el archivo "opensc.conf" que según la distribución / versión que utilices, se encuentra en distintas rutas del sistema de archivos:

Para saber en que ruta está, buscamos el archivo con:

&sudo find / -name opensc.conf

En Ubuntu 14.04 nos aparece en:

/home/usuario/.openscDNIe/trunk/etc/opensc.conf
/etc/opensc/opensc.conf

Donde descartamos el archivo contenido en nuestra carpeta personal: /home/usuario/.openscDNIe/trunk/etc/opensc.conf
Y nos quedamos con el otro: /etc/opensc/opensc.conf

Una vez conocida su ruta editamos el archivo con:

&sudo gedit /etc/opensc/opensc.conf

Buscamos en el archivo las líneas (son 2, una al principio y otra al final del archivo) que pongan:

# enable_pinpad = false;

y las descomentamos (borrar la almohadilla que hay delante de la línea). Deben de quedar así:

enable_pinpad = false;

Comprobación:

Ya podemos probarlo en:
http://www.dnielectronico.es/como_utilizar_el_dnie/verificar.html

Nos da unas explicaciones y al final está el enlace de comprobación (Enlace "FMNT").

El lector parpadeará y nos pedirá el pin del DNI-e. Lo escribimos y aceptamos.

Nota: La primera vez Firefox, nos avisará de que la conexión no estará verificada. Pulsamos en "Entiendo los riesgos" y luego en "Añadir una excepción":

Pin y certificado personal del DNI-e

El pin te lo dieron al recibir el DNI-e.

En las comisarías de Policía hay puntos de Actualización del DNI-e, donde introduciendo tu DNI-e y tu huella dactilar, puedes cambiar el pin (si lo has perdido) y activar el certificado (si está caducado).

Los certificados caducan a los 30 meses (creo recordar) y se puede volver a activar en la misma comisaría, pulsando en "acceder a tus datos personales > renovar certificado" (Te volverá a pedir que pongas la huella dactilar en el lector de huellas).

Fuentes:
www.c3po.es
www.dnielectronico.es
www.opensc-project.org
www.ubuntu-guia.com

Espero que os sirva, como me ha servido a mi

Comentarios

Imagen de PedroV67

Buenas,

Yo he seguido algunos pasos diferentes para la instalación del lector de DNIe electrónico, ya que mi vewrsión de Ubuntu es 12.04. Y he comprobado que funciona correctamente y reconoce tanto el lector como cuando se introduce el DNIe. Sin embargo, cuando llego al paso del verificación en Firefox, me pide la contraseña del DNI y cuando la introduzco y doy a aceptar me sale el siguiente mensaje en la ventana del navegador:

Conexión segura fallida
Ha ocurrido un error durante una
conexión a av-dnie.cert.fnmt.es.
El otro extremo de la conexión SSL no
ha podido negociar un conjunto
aceptable de parámetros de seguridad.
(Código de error:
ssl_error_handshake_failure_alert)
La página que está intentando ver no
puede mostrarse porque no se ha
podido verificar la autenticidad de los
datos recibidos.
Contacte con los administradores del
sitio web para informarles de este
problema. De manera alternativa, use
la opción del menú Ayuda para
informar del problema de este sitio
web.

He comprobado que el dispositivo de seguridad PKCS#11 aparece correctamente (de hecho como ya he dicho me pide el pin de DNIe) y que tanto en servidores como en autoridades de los certificados de Firefox están correctamente instalados los correspondientes a la Dirección General de la Policía, pero no entiendo porque no me aparece el certificado en sí. Y sospecho que ahí está el problema. Necesito hacer unas gestiones con el DNIe y no puedo. ¿Podeis ayudarme?

PedroV

Imagen de Armando.delaUsada

Hola PedroV
Te has asegurado de que estan marcadas las tres opciones en el editor de configuracion de confianza
en la ruta editar>preferencias>avanzado>certificados>ver certificados>autoridades>AC RAIZ DNIE>editar confianza
mientras hare algunas pruebas.
tambien puedes dirigirte a este enlace http://bitplanet.es/manuales/3-linux/322-instalar-lector-dnie-en-ubuntu-...
suerte valor y al toro

Uhhhhh que miedoooo!

Imagen de PedroV67

Si, marque las tres casillas en cuestión.

El enlace que me indicas es el que utilicé para la instalación del lector, muchas gracias. También he comprobado en una comisaría que la contraseña sigue siendo válida y el certificado vigente. A ver si averiguas algo más. Muchas gracias.

PedroV

Imagen de Armando.delaUsada

Hola Pedro.
Creo que te has descargado un certificado caducado, vuelve a descargarlos y comprueba la fecha
Saludos

Uhhhhh que miedoooo!

Imagen de PedroV67

No, el certificado del DNIe está vigente. Pensaba que el problema podría estar en la versión de PKCS#11 que instalé siguiendo las instrucciones del enlace y he descargado uno que aparecía en la página de la Dirección General de la Policía para mi versión de ubuntu. Pero sigue sin funcionar. También estoy en contacto con el servicio de atención del DNIe electrónico a ver si damos con el problema.

Lo curioso es que cuando conecto el lector e introduzco el DNI me pide la contraseña, pero luego no carga el certificado, cosa que si hace en un equipo con windows. Y aunque puedo hacer el trámite desde este, no me resigno a que la cosa quede así. Me gustaría que funcionase en Ubuntu. te lo muestro:
[inline:/home/pedro/Dropbox/Capturas de pantalla/Captura de pantalla de 2014-05-16 10:53:34.png]

En fin, muchas gracias por tu interés, Armando. Un saludo.

PedroV

Imagen de PedroV67

Buenas de nuevo. Me contestan esto:

"La compilación es muy anterior a la versión del navegador que está usando Vd. Es muy improbable que le funcione aunque el paquete es el de la versión de Ubuntu adecuada. Es un problema de "compatibilidad hacia atrás" que debe resolver FNMT-RCM con una nueva compilación, al que se le comunica. Estamos a la espera de la respuesta de la FNMT (Fábrica Nacional de Moneda y Timbre)."

Así que nada que hacer hasta que la FMNT proporcione una nueva compilación.

PedroV

Imagen de javierde22

El tutorial muy bueno, pero es una pena que en la administración pública solo se preocupen de que funcione bien en windows.

Este es el problema del código cerrado, que dependes de tercero.