23 de marzo de 2021

Configurar un lector de DNI electrónico en Firefox con AutoFirma en Ubuntu

Hace poco me he visto en la necesidad de utilizar el DNI electrónico para hacer gestiones por Internet. La verdad es que su configuración no ha sido tan sencilla como debería en Ubuntu 20.04, así que me he decidido a escribir este post para explicarselo a mi yo del futuro (y ya de paso a quien lo necesite).

El lector de tarjetas

Aunque supongo lo aquí escrito funcionará con otros, yo he utilizado el lector de tarjetas 23890 Primo Smart Card Reader de la marca Trust.

Instalación de libpkcs11

Para hacer funcionar el lector de tarjetas en nuestro Ubuntu tenemos que instalar libpkcs11. Esta biblioteca depende de otros paquetes, así que primero los instalamos con el siguiente comando:

sudo apt install pcsc-tools pcscd pinentry-gtk2

Una vez instalados, descargamos de la página oficial de la policía nacional el paquete DEB para nuestra distribución.

Y luego lo instalamos, en nuestro caso con el siguiente comando:

sudo dpkg -i libpkcs11-dnie_1.6.6_amd64.deb

Durante la instalación reiniciará el Firefox y mostrará una página con ayuda de configuración (que explicaremos en los puntos más abajo), y para que la instalación termine tenemos que cerrar Firefox.

Comprobamos el lector de tarjetas

En este punto conectamos el lector de tarjetas a nuestro ordenador y ejecutamos el siguiente comando:

lsusb

Si todo ha ido bien en la consola aparecerá listado el lector de tarjetas, en mi caso:

Alcor Micro Corp. AU9540 Smartcard Reader 

Todavía sin meter el DNI en el lector, pero con este conectado a nuestro ordenador, ejecutamos el siguiente comando:

pcsc_scan

Y deberá aparecer en el terminal que no hay tarjeta insertada, en mi caso:

Card state: Card removed

Y cuando introduzcamos el DNI en el lector, ejecutamos de nuevo el comando anterior:

pcsc_scan

Y deberá aparecer en el terminal que hay tarjeta insertada, en mi caso:

Card state: Card inserted

Configurar el dispositivo de seguridad en Firefox

Ahora vamos a Firefox > Preferencias > Privacidad & Seguridad > Dispositivos de seguridad (es un botón que está abajo)

Pulsamos en el botón "Cargar".

Ponemos un nombre al módulo, por ejemplo "DNI Electrónico".

Indicamos la ruta del archivo del módulo: /usr/lib/libpkcs11-dnie.so

Pulsamos en el botón "Aceptar" y aparecerá en los "Dispositivos de seguridad"

Añadir el certificado raíz de la Policía en Firefox

Ahora vamos a Firefox > Preferencias > Privacidad y Seguridad > Ver certificados (es un botón que está abajo)

Vamos a la pestaña "Autoridades" y pulsamos el botón "Importar".

Indicamos la ruta del certificado raíz: /usr/share/libpkcs11-dnie/ac_raiz_dnie.crt

El asistente le pedirá que establezca la confianza para el certificado.

Marque todas las casillas de confianza, y pulse el botón "Aceptar".

En este momento deberá aparecer el certificado raíz de la policía "Ver certificados".

Verificar que funciona el lector de DNI electrónico en Firefox

Ahora nos vamos a:

https://www.sede.fnmt.gob.es/certificados/persona-fisica/verificar-estado/solicitar-verificacion

Si te falla la primera vez, puede que tengas que entrar en una pestaña privada o borrar las cookies para que te funcione de nuevo.

En cualquier caso, si todo va bien, debería pedirte la contraseña del certificado de tu DNI electrónico, que deberían haberte dado en comisaría cuando te lo sacaste.

Una vez introducida la contraseña, en esa página deberías ver tus datos (nombre, apellidos y DNI).

Instalar las dependencias de AutoFirma

La versión 1.6.5 de AutoFirma, aunque arranca con versiones más modernas de Java, hay algunas cosas, como el que firme directamente desde Firefox, que no funcionan si no es con la versión 8 de Java. Para instalar esta dependencia ejecutamos el siguiente comando:

sudo apt install openjdk-8-jre

Si ya tuviéramos instalados una versión más moderna de Java, tendremos que indicar al sistema que queremos usar la 8. Para ello ejecutamos el siguiente comando:

sudo update-alternatives --config java

Nos saldrá algo parecido a esto:

Existen 2 opciones para la alternativa java (que provee /usr/bin/java).
Selección   Ruta                                            Prioridad  Estado
------------------------------------------------------------
* 0            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      modo automático
  1            /usr/lib/jvm/java-11-openjdk-amd64/bin/java      1111      modo manual
  2            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      modo manua
Pulse <Intro> para mantener el valor por omisión [*] o pulse un número de selección: 

En mi caso, yo tendré que pulsar la opción 2 para que la versión por defecto de Java sea la 8. Para verificarlo ejecutamos el siguiente comando:

java -version

Si todo ha ido veremos algo así:

openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

Luego tenemos que instalar la dependencia "libnss3-tools" y para ello ejecutamos el siguiente comando:

sudo apt install libnss3-tools

Instalar AutoFirma

Para instalar AutoFirma nos tenemos que descargar el ZIP de la página de descarga oficial, descomprimirlo en una carpeta, y ejecutar el siguiente comando:

sudo dpkg -i AutoFirma_1_6_5.deb

Con AutoFirma instalado, si tienes un certificado, ya es bastante fácil firmar documentos. El problema es intentar firmar documentos con el DNI electrónico. Para ello hay que hacer ciertas cosas "raras".

Configurar AutoFirma con el DNI electrónico

El primer problema es que la biblioteca JMulticard no funciona correctamente, así que hay que desactivarla desde "Autofirma > Herramientas":

Para que se hagan efectivos los cambios hay que reiniciar. Y lo raro es que ahora, cuando reinicias, si tienes el el lector de tarjetas instalado con el DNI electrónico introducido, te pedirá la contraseña del certificado. Hasta aquí todo normal. Pero luego en la primera pantalla en vez de pulsar sobre el botón "Continuar con DNIe" tienes que pulsar sobre el botón "Usar cualquier certificado".

Sí, no es nada intuitivo, pero como está enchufado un lector de tarjetas salta esta ventana, y como hemos desactivado la biblioteca JMulticard tenemos que pulsar en el botón "Usar cualquier certificado", y a la hora de firmar te mostrará el certificado del DNI electrónico.

Configurar AutoFirma con Firefox

Si hemos llegado hasta aquí sin problemas ya deberíamos poder utilizar el DNI electrónico tanto desde Firefox como desde AutoFirma. El problema llega cuando en un sitio web te piden desde la propia web firmar con AutoFirma.

Como hasta aquí, no es difícil la solución, pero hay que conocerla. AutoFirma no se lleva bien con los perfiles de Firefox, solo debería existir uno.

Si abrimos los perfiles de Firefox desde "about:profiles" vemos que por defecto tenemos 2, "default-release" y "default":

También podemos ver los perfiles arrancando Firefox desde la consola con el comando:

firefox -p

O modificando el fichero:

~/.mozilla/firefox/vim profiles.ini

El caso es que tenemos que eleminar los que no se usan y al final solo tenemos que tener el perfil "default-release".

Pero la cosa no acaba aquí, ahora hay que restaurar la instalación de AutoFirma con Firefox cerrado. Para ello cerramos el Firefox, abrimos AutoFirma, nos vamos a "AutoFirma > Herramientas > Restaurar instalación". Luego pulsamos en el botón "Iniciar restauración". Nos pedirá la contraseña de administrador del sistema. Y debería terminar con algo así:

Probar AutoFirma con Firefox

Y si hemos llegado hasta aquí, sin ningún error, ya solo falta probar que AutoForma funciona bien desde esta página: https://valide.redsara.es/valide/firmar/ejecutar.html probando a firmar un documento con el DNI electrónico con AutoFirma desde el navegador.

Recursos

La información para redactar este post la he sacado de:

Comparte:    Facebook Twitter

6 comentarios:

  1. Genial, me ha servido de mucho. Explicaciones claras y sin rodeos.
    Por cierto en la version Flatpak de Firefox, no funciona este sistema.
    Solo funciona en la versión .deb o ppa de Firefox que trae ubuntu por defecto.

    ResponderEliminar
  2. Después de tres días de dar vueltas para instalar el dnie en Ubuntu 20.04, lo he conseguido con las indicaciones de este artículo. Deberían tener un cartelito en las comisarías de policía con la dirección de esta página. Sobre todo, G R A C I A S

    ResponderEliminar
  3. Me has salvado la vida. He estado mirando en cientos de sitios, y desde ése es desde donde al final he podido firmar documentos con mi Ubuntu. Pero aún no puedo realizar el último paso, el del firmar desde el navegador con autofirma. Ahí mi sistema falla. He iniciado la restauración en Autofirma pero Firefox no me abre la aplicación. NO sé que puede estar fallando.

    ResponderEliminar
  4. A mi me pasa como a Rdos, todo va bien hasta el ultimo paso. Lo he probado en dos ordenadores distintos y el mismo fallo en la autofirma desde firefox.

    ResponderEliminar
  5. En mi caso el problema es diferente. Al verificar el DNIe me pide el PIN, se lo introduzco y me verifica un certificado que tengo instalado en Firefox, no el del DNIe

    ResponderEliminar