eDNI y AutoFirma

20 de feb. de 2024

Tramites con la Administración desde GNU/Linux

Uno de los mayores "traumas" de los usuarios es todo lo relacionado con el certificado electrónico y la firma digital de documentos... y si encima estamos en GNU/Linux, parece que es todo más oscuro.

Voy a intentar crear un mini tutorial para explicar como dejar todo perfectamente configurado para poder usar nuestro Certificado Digital en tarjeta y nuestro DNI electrónico y también como dejar instalada la aplicación de AutoFirma en Debian.

Funciona correctamente en Debian 12, OpenJDK 17 y con cualquiera de las últimas versiones de Firefox (sin necesidad de usar versiones ESR).

eDNI y Tarjetas con Certificado Digital

Para poder usar el certificado digital almacenado en una tarjeta criptográfica necesitamos un lector de tarjetas que soporte el modelo de la tarjeta.
Puedes localizar varios modelos de teclados que te permitan leer casi cualquier tarjeta criptográfica, eso sí si vas a usar el DNI asegurate que puede leer los DNI versión 3.0
Yo personalmente me he comprado un lector USB "pocket" que funciona perfectamente en Debian (y otros Sistemas Operativos), lo mejor de todo es que ocupa lo mismo que un USB y lo puedes llevar en cualquier sitio.

Lector USB “pocket” para tarjetas criptográficas
CRYPTO KIT POCKET Bit4id Personalmente lo he comprado ya que necesito un lector de tarjetas que sea totalmente compatible con Linux y que sea menos aparatoso que los habituales para poder transportarlo facilmente. El lector plegado ocupa lo mismo que un USB. El kit, que viene protegido en un estuc…

Software para lectura de tarjetas criptográficas

Para que nuestro equipo con Debian pueda acceder sin problemas a leer las tarjetas criptográficas necesitamos instalar alguna librería extra que no vienen instaladas por defecto. Para ello abre el terminal y ejecuta:

# Actualizamos el sistema
sudo apt update
sudo apt -y upgrade

# Instalamos librerias para acceso a tarjetas criptográficas
sudo apt -y install pcscd pcsc-tools pinentry-gtk2 libassuan0 libccid

Ahora dejaremos activado el servicio de pcscd que será el encargado de estar pendiente de cuando se introduce una tarjeta en el lector de tarjetas y comunicarselo al sistema (mecanismo plug & play)

sudo systemctl start pcscd
sudo systemctl enable pcscd

Si "pinchamos" un lector externo de tarjetas USB o un teclado con lector incorporado, podemos ver si lo reconoce directamente con el comando lsusb:

lsusb
...
Bus 002 Device 004: ID 25dd:3111 BIT4ID miniLector Pocket
...
Bus 002 Device 005: ID 04f2:1469 Chicony Electronics Co., Ltd HP Skylab USB Smartcard Keyboard

En el primer caso es un lector USB y en el segundo un teclado de HP que tiene incorporado el lector.

Comprobamos el sistema de detección de tarjetas, para ello en la terminal usaremos el comando pcsc_scan:

pcsc_scan 

PC/SC device scanner
V 1.6.2 (c) 2001-2022, Ludovic Rousseau <ludovic.rousseau@free.fr>
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader... |

Vemos que se queda esperando a que insertemos una tarjeta, pulsamos CTRL+C para cortar el proceso y continuamos con el resto de librerías necesarias.

Inclusión de librerias para DNI 3.0

Para los últimos modelos de eDNI, vamos a tener que instalar las librerías necesarias para el chip del DNI, desde la sede de la FNMT podemos bajarnos la última versión que está disponible para Debian 12.

https://www.sede.fnmt.gob.es/documents/10445900/11635653/libpkcs11-fnmtdnie_1.6.9_amd64.deb

Descarga el fichero y desde la terminal ejecuta lo siguiente:

# Descargar con wget
wget https://www.sede.fnmt.gob.es/documents/10445900/11635653/libpkcs11-fnmtdnie_1.6.9_amd64.deb

# Instalar
sudo dpkg -i libpkcs11-fnmtdnie_1.6.9_amd64.deb

El software disponible en la FNMT lo tienes en el siguiente enlace:

Descarga de Software - Sede
Página que contiene las descargas de software necesarias para ver los documentos de la Sede electrónica de la FNMT
Software para GNU/Linux en la FNMT

En cuanto instales la librería 1.6.9 de la FNMT se iniciará el configurador para el navegador, en caso de que no se inicie automáticamente escribe en la terminal:

open  /usr/share/libpkcs11-fnmtdnie/launch.html

Sigue los pasos que te indican. Un resumen rápido de lo que debes hacer en Firefox es el siguiente:

Abrir menú de ajustes.
Ir a: "Privacidad & Seguridad" 
Bajar y seleccionar: "Dispositivos de Seguridad"
Pulsar el botón: "Cargar"
Poner un nombre al modulo (ejemplo: FNMT y DNI PKCS#11)
En la ruta de la libreria, poner: /usr/lib/libpkcs11-fnmtdnie.so
Finalizar pulsando el botón Aceptar

Con esto tu navegador quedará correctamente configurado para usar cualquier Certificado Digital y el DNI Electrónico.

Gestor de Tarjetas de Certificados Electrónicos

Si dispones de una tarjeta electrónica con varios certificados, la FNMT ha desarrollado una aplicación Java para la gestión de los Certificados en Tarjeta Criptográfica CERES que funciona desde GNU/Linux.

Este software te permite realizar operaciones con tu tarjeta:

Visor de Certificados
Gestor de certificados
Importador de certificados
Cambiar el PIN actual
Desbloquear el PIN (necesitas el código de desbloqueo)
Aplicacion para GNU/Linux para Gestionar las Tarjetas Criptográficas

Para instalarlo, de nuevo desde la terminal ejecuta los siguientes comandos:

mkdir -p ~/TarjetaFNMT

wget https://www.sede.fnmt.gob.es/documents/10445900/10528994/app_tarjeta_fnmt.zip -O /tmp/tarjeta_fnmt.zip

cd ~/TarjetaFNMT
unzip /tmp/tarjeta_fnmt.zip

Tanto para usar este software como para usar AutoFirma necesitarás tener instalado Java, de nuevo abre el terminal y escribe:

sudo apt install -y openjdk-17-jdk

El ejecutable del gestor de tarjetas se llama App FNMT, puedes  crearte un lanzador para poder usarlo directamente desde el escritorio.

AutoFirma

A fecha de hoy, la última versión disponible de AutoFirma es la 1.8.2, puedes descargar el zip que contiene el fichero Debian de la siguiente URL:

https://estaticos.redsara.es/comunes/autofirma/currentversion/AutoFirma_Linux_Debian.zip

Desde la terminal puedes realizarlo escribiendo:

# Descargar
curl https://estaticos.redsara.es/comunes/autofirma/currentversion/AutoFirma_Linux_Debian.zip --output /tmp/AutoFirma_Linux_Debian.zip

# Extraer fichero debian
cd /tmp
unzip AutoFirma_Linux_Debian.zip

Con el fichero .deb disponible, lo puedes instalar mediante la siguiente instrucción:

sudo dpkg -i /tmp/AutoFirma_1_8_2.deb
AutoFirma ejecutándose en Debian 12

Ausencia de Repositorios Debian

Realmente es una pena que todo el trabajo realizado tanto por los desarrolladores de la FNMT, como por los del Ministerio de Hacienda y Función Pública, en la elaboración de paquetes Debian quede diluido al no publicarse en un repositorio propio oficial de paquetería debian,  del que cualquier usuario pueda actualizar directamente las nuevas versiones que se publiquen sin tener que estar continuamente pendiente de ello.

NOTA: En temas de firma electrónica y certificados sólo usar fuentes de librerías y paquetes oficiales de los sitios oficiales: FNMP, Policía Nacional, RedSara, etc. y no usar repositorios externos.

Instalación desde SoloConLinux

Por si alquien quiere simplificar el uso de la instalación, en el repositorio de SoloConLinux he subido a modo personal las versiones tanto de la FNMT como de AutoFirma para simplificar todo el proceso de instalación:

# Instalacion de Gestion de Certificados y Tarjetas Criptográficas
sudo apt -y install libpkcs11-fnmtdnie pcsc-tools libccid

# Instalación de AutoFirma
sudo apt -y install autofirma openjdk-17-jdk

Nota: Poder usar el repositorio de SoloConLinux debes de tenerlo configurado como repositorio extra en su Debian. Las instrucciones las tienes en:

Repositorio Debian de SoloConLinux
Ya tienes Debian 12 instalado y actualizado. ¿Y ahora qué? Si te has decidido a dar el paso a usar Linux, y eres nuevo con GNU/Linux puede que te encuentres con dudas sobre como usarlo y que aplicaciones usar... En breve publicaré una guía para los ‘newbies’ en Linux,
Configurar SoloConLinux como repositorio extra

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux