Solución error «Protocolo desconocido «afirma», en AutoFirma para Linux

La aplicación AutorFirma es una aplicación creada por gobierno de españa, siendo utiliza para firmar los trámites que requieran una firma electrónica, ya sea usando el certificado del DNI Electrónico o el certificado CERES (CERtificación ESpañola) de la Fábrica Nacional de la Moneda y Timbre (FNMT)

Al usar la aplicación aplicación AutoFirma en su versión 1.6.5 en el escritorio KDE de Linux se produce el siguiente:

Imposible crear esclavo de E/S. klauncher ha respondido: Protocolo desconocido «afirma».

La distribución de Linux usada es OpenSuSE y el error se produce en los navegadores, Firefox, Chrome y Opera

Támpoco se puede abrir la aplicación desde el menú de aplicaciones:

Dando el error:

Lanzando AutoFirma (ha fallado) execvp: Exec format error

Solución inicio aplicación AutoFirma desde el menú de aplicaciones de KDE

Al ver las propiedades de la aplicación en el menú de KDE vemos que la aplicación se ejecuta usando el comando:

/usr/bin/autofirma %u

Si la ejecutamos desde la línea de comandos si se ejecuta perfectamente, viendo que es una aplicación desarrollado en java:

El ejecutable (/usr/bin/autofirma) es un script y el contenido del fichero sólo tiene una línea sin incluir el shebang:

java -jar /usr/lib64/autofirma/autofirma.jar $*

Añadiéndolo en la primera línea:

#!/bin/bash
java -jar /usr/lib64/autofirma/autofirma.jar $*

Se resuelve y se puede abrir sin problemas el programa AutoFirma desde el menú de aplicaciones, pero al probar desde el navegador Firefox y realizar una firma, por ejemplo usando la página de pruebas que tiene la comunidad de Murcia, nos encontramos con el mismo error del inicio:

También se produce el error en Chrome, aunque antes muestra la siguiente ventana:

La aplicación xdg-open es usada por KDE para abrir la aplicación que corresponde a un tipo de archivo o a partir del protocolo indicado en una URL.
De los errores que se muestran nos hace pensar que falta algo en la definición o captura del protocolo «afirma«. Nos enfocamos a analizar la definición del protocolo «afirma«.

Solución firma con AutoFirma en Firefox y navegadores Linux

Lo primero que vemos es que el protocolo está bien definido en Firefox, esto se puede comprobar abriendo en el navegador la página de configuración about:config y buscando por:

network.protocol-handler.*.afirma

Observamos que está definido y activo:

Miramos que a nivel de KDE esté bien definido, abriendo el enlace de la aplicación:

sudo vi /usr/share/applications/autofirma.desktop 

El contenido es el siguiente:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Categories=Office;Utilities;Signature
Exec=/usr/bin/autofirma %u 
Name=AutoFirma
Icon=/usr/lib64/autofirma/autofirma.png

En este fichero falta la definición de los protocolos asociados a la aplicación, falta el parámetro MimeType, en concreto faltaría la línea:

MimeType=x-scheme-handler/afirma

Añadimos la línea y damos de alta el protocolo:

xdg-mime default autofirma.desktop x-sheme-handler/afirma

Comprobamos que también esté en el fichero: mimeapps.list

cat /usr/share/applications/mimeapps.list

El contenido es el siguiente:

[Default Applications]
x-scheme-handler/afirma=autofirma.desktop

Refrescamos la base de datos de KDE.

sudo update-desktop-database

Volvemos hacer la pruebas de Firefox y en esta ocasión sí funciona, nos muestra la lista de certificados:

Tras seleccionar el certificado y pulsar el botón «Aceptar» se firma la prueba de forma correcta:

También se hace la prueba en los navegadores Chrome y Opera, funcionando correctamente.