¡Instalar el DNIe electrónico en GNU/Linux Ubuntu (14.04+)!
Introducción
El DNIe (DNI electrónico) es una herramienta que todavía no ha terminado de despegar en España pero que poco a poco va sumando adeptos ya que nos permite ahorrarnos los típicos, y tediosos, desplazamientos a las oficinas de las principales administraciones públicas de nuestra zona.
La causa principal (del poco uso por parte de la población) es porque la administración no ofrece un buen soporte a los ciudadanos. Incluso en sistemas operativos de Microsoft también es un poco complicado su instalación y uso.
En este post veremos como instalar y usar el DNIe en Ubuntu (versión 14.04 o posteriores), ya sean de 32 o 64 bits. No he probado la instalación en el resto de distribuciones de Linux pero debería funcionar igualmente, sobre todo las que son derivadas de Debian.
Lector o Card Reader
Mi lector es un Sveon SCT011, un dispositivo muy sencillo, barato y que compré en grandes superficies, aquí una imagen:
La mayoría de dispositivos son compatibles en Ubuntu, de todas formas instalaremos una serie de paquetes (controladores) para garantizar su funcionamiento.
Instalación de Java
Para llevar a cabo nuestros trámites es necesario tener instalado Java en nuestro sistema. Usaremos la versión 8, aunque si prefieres la versión 7 también puedes instalarla. Abriremos una terminal y ejecutaremos los siguientes comandos:
sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer
sudo update-java-alternatives -s java-8-oracle
Instalación de controladores, librerías o bibliotecas
Primero comprobaremos que nuestro sistema reconoce el lector, en la terminal ejecutamos el siguiente comando:
lsusb
Ahora crearemos dos directorios, están relacionados con la compilación de la versión modificada de OpenSC para el DNIe:
sudo mkdir /usr/lib/pkcs11
sudo mkdir /etc/opensc
Finalmente instalaremos los controladores, librerías o bibliotecas y paquetes complementarios para que funcione todo correctamente:
sudo apt-get install libccid pcscd
sudo apt-get install libacr38u
sudo apt-get install pinentry-gtk2 pcsc-tools libpcsclite1 libpcsclite-dev libreadline6 libreadline-dev coolkey
Y por último si queremos comprobar que reconoce correctamente la tarjeta ejecutar:
pcsc_scan
Instalación de los certificados en Firefox
Lo primero de todo será descargar los certificados correspondientes. Los puedes encontrar aquí
Son AC Raíz (archivo: "pkcs1-sha256WithRSAEncryption") y AV DNIE FNMT (archivo: "pkcs1-sha256WithRSAEncryption").
Descomprimimos los archivos .zip y en Firefox vamos a Editar -> Preferencias -> Avanzado -> Cifrado -> Ver certificados y en la pestaña "Autoridades" pulsamos "Importar" y elegimos ACRAIZ-SHA2.crt. En la pestaña "Servidores" también utilizaremos la opción "Importar" con AVDNIEFNMTSHA2.cer.
Durante la importación del certificado aparecerá una nueva ventana, en esta se pueden observar tres opciones de confianza las cuales debemos marcar:
Descarga, compilación e instalación de OpenSC modificado para DNIe
Creamos un directorio oculto para almacenar el código fuente y luego accederemos al mismo:
mkdir .openscDNIe
cd .openscDNIe
Descargamos el código fuente con el siguiente comando:
svn checkout --username anonsvn https://forja.cenatic.es/svn/opendnie/opensc-opendnie/trunk
Para iniciar la descarga requiere una contraseña, es: anonsvn. Tras descargar el código fuente debemos acceder a uno de los directorios descargados:
cd trunk
Antes compilar hay que añadir la ruta de la librería "libltdl.la" al archivo "src/tools/Makefile.am" del código fuente, en "trunk". La ruta variará dependiendo de la arquitectura, 32 o 64 bits, de nuestro sistema. Para encontrarla ejecutamos:
sudo find / -name libltdl.la
Suele tardar un poco en realizar la búsqueda pero nos devolverá la ruta exacta, para finalizar el proceso pulsa Ctrl+ C. Este por ejemplo sería para 64 bits:
/usr/lib/x86_64-linux-gnu/libltdl.la
Editamos el archivo Makefile.am, puedes utilizar nano o gedit (u otro editor), y buscamos la siguiente línea:
LIBS = $(top_builddir)/src/common/libcompat.la \
$(top_builddir)/src/libopensc/libopensc.la
Añadimos la ruta que hemos obtenido quedando así:
LIBS = $(top_builddir)/src/common/libcompat.la \
$(top_builddir)/src/libopensc/libopensc.la \
/usr/lib/x86_64-linux-gnu/libltdl.la
Para finalizar compilamos ejecutando estos comandos:
./bootstrap
./configure --prefix=/usr --sysconfdir=/etc/opensc
make
sudo make install
Puede demorarse un tiempo la compilación e instalación, cuando finalice el módulo "PKCS11" habrá quedado instalado en la ruta: "/usr/lib/opensc-pkcs11.so". Ahora hay que indicarle esta información a Firefox: vamos a Editar -> Preferencias -> Avanzado -> Cifrado -> Dispositivos de seguridad, pulsamos en "Cargar", y en "Nombre del módulo" escribimos: PKCS11 y en "Archivo del módulo" escribimos la ruta: "/usr/lib/opensc-pkcs11.so".
Para finalizar reiniciamos el navegador, ya podemos usar nuestro DNIe.
Configurando + parámetros
El pin del DNIe tiene protección por Token, así que es probable que la identificación falle. Para solucionarlo debemos editar el archivo "opensc.conf". Dependiendo de las distribuciones puede estar ubicado en distintos directorios. Para encontrar la ruta exacta ejecutamos este comando en una terminal:
sudo find / -name opensc.conf
Una vez obtenida la ruta editamos el archivo con nano o gedit (u otro editor) y buscamos estas dos líneas:
# enable_pinpad = false;
Basta con borrar el # quedando así:
enable_pinpad = false;
¿Funciona?
Para probar que funciona podemos acudir al siguiente enlace oficial: DNIe
Conclusión
Poco a poco la administración pública va fomentando el uso del DNIe, además ya se están probando futuras versiones como por ejemplo la 3.0 que permitirá el escaneo del DNIe mediante el uso de un smartphones. Con su utilización ganamos todos, sobre todo los funcionarios ;) Salu2!
Comentarios