miércoles, 17 de agosto de 2022

Linux y la factura electrónica.

Leo en la página del Ministerio de Asuntos Económicos y Transformación Digital que en noviembre de 2021 se aprobó el anteproyecto de la llamada "Ley Crea y Crece", la cual recoge un punto importante para las empresas y autónomos: "Se extiende el uso de la factura electrónica en todas las relaciones comerciales entre empresas y autónomos como medida de digitalización y de lucha contra la morosidad comercial". La información está recogida aquí.

Por lo visto, se prevé que para el año 2023 ya entrará en vigor y, desde ese momento, todas las empresas y autónomos deberán hacer uso de la factura electrónica, y no hacerlo conllevará sanciones de hasta 10.000 €. Toca, por lo tanto, modificar otra vez sistemas, y nuevo quebradero de cabeza para los que usan Linux. En este artículo voy a explicar cómo instalar y configurar en Linux (en concreto, OpenSuse) el programa que el Gobierno ha puesto a disposición de todos para usar la dichosa factura electrónica.

Lo primero es descargar el programa. A fecha de esta entrada, la versión disponible es la 3.4, que puede descargarse directamente desde esta página. No obstante, conviene visitar la página principal de descargas aquí, por si hay versiones más nuevas y para acceder a los manuales de uso de la aplicación.

Descargamos la versión para Linux, y obtendremos una aplicación en java. Cuando se haya descargado, hay que ejecutar como usuario normal (no como root) dicha aplicación con el siguiente comando:

java -jar facturae_3.4_linux.jar

 

El programa se instalará en el directorio home, en el directorio del usuario que lo haya instalado (es decir, en /home/[usuario]), y en su propia carpeta. Cuando haya finalizado la instalación, veremos que en su carpeta aparece un archivo llamado "run.sh" que es el que permite ejecutarlo. Pero para que funcione bien hay que hacer un par de modificaciones.

 

Modificación del script de ejecución.

 

Si se usa KDE, al intentar ejecutarlo dará un error. Es lo mismo que pasaba con Autofirma y que expliqué aquí. La solución es la misma, así que tenemos que editar el archivo "run.sh" y añadir como primera línea "#!/bin/sh". Guardamos y cerramos, y el programa debería arrancar si problema.


Java 1.8.


El programa "Facturae" sólo funciona bien con Java 1.8. Puede arrancar con otras versiones desde la 1.6, pero para crear facturas y para conectar con FACe debe usarse obligatoriamente la versión 1.8 (como mucho, hasta la 1.8.0_144) para usar todas sus funciones.


El problema es que muchas distribuciones modernas de Linux ya instalan versiones superiores. De hecho, Opensuse Leap 15.4 (la última estable en este momento), viene con Java 11.


No hay problema. Se pueden tener instaladas varias versiones de Java en el mismo sistema, pues cada versión se instala en su propio directorio. Si no tenemos instalado Java 1.8, hay que hacerlo con la siguiente orden:


sudo zypper install java-1_8_0-openjdk java-1_8_0-openjdk-headless


Una vez instalado, hay que especificar que Facturae utilice la versión 1.8 de java y no la 11, que es la que por defecto usa el sistema. Para ello tenemos que modificar nuevamente el archivo "run.sh". Podemos hacerlo con Kate o con Nano, o con cualquier programa de edición de texto.


kate run.sh

nano kate.sh


Después de todos los comentarios vemos que hay una línea que empieza por java:

 

 java -Dfile.encoding=UTF8 -cp [...]


Esta línea arranca el programa con la versión de Java establecida por defecto en el sistema (la versión 11, como hemos visto). Para que use la versión 1.8 hay que cambiar la palabra "java" por la ruta completa de la versión 1.8. La modificación sería la siguiente:


java -Dfile.encoding=UTF8 -cp [...]

/usr/lib64/jvm/jre-1.8.0-openjdk/bin/java -Dfile.encoding=UTF8 -cp [...]


Sólo hay que cambiar la palabra "java". No hay que modificar nada más del resto del archivo. Guardamos y cerramos, y el programa debería funcionar correctamente.


Parece que, de momento, se podrá seguir usando Linux para trabajar. Hasta la siguiente trampa.

miércoles, 11 de mayo de 2022

Lexnet Justicia, ¡por fin en linux!

Han tenido que pasar unos 15 años más o menos para que Lexnet Justicia se haya adaptado por fin a la tecnología del presente y pueda utilizarse ya desde cualquier navegador y, lo que es más importante, desde un sistema operativo tan denostado por las administraciones públicas como linux.

La versión 5.1 de Lexnet, lanzada el pasado 9 de mayo de 2022, supone dejar de utilizar el applet de Java para firmar, que lo hacía sólo compatible con Internet Explorer, y pasa ahora a usar la aplicación Autofirma, con versiones para Windows, Mac y linux. No cabe ninguna duda de que la decisión ha venido forzada por la decisión de Microsoft de matar de una vez por todas a su paleolítico navegador para sustituirlo definitivamente por Edge y, aunque aún queda disponible Lexnet Escritorio, era innegable que todo el sistema no podía quedar dependiente solamente de una aplicación hecha en Java, que se hizo en su día como medida de emergencia ante la decisión de los principales navegadores de no usar Java, y que tampoco era un prodigio técnico, todo sea dicho.

Sea como sea, bienvenido sea el cambio. Desde el momento en que Lexnet Justicia hace uso de Autofirma para la firma digital, cualquier navegador puede ahora utilizarse tanto para recibir notificaciones como para presentar escritos. Ahora bien, ¿basta con descargar Autofirma e instalarlo en el ordenador para que funcione? Sorpresa: en Windows sí; en linux, por supuesto que no.

Por eso se hace necesario explicar qué hay que hacer en linux para que podamos usar Lexnet Justicia.

Paso 1: Descargar Autofirma.

En este artículo se da por hecho que ya se tiene instalado un navegador y los certificados digitales para utilizar la tarjeta de firmas. Por eso, el siguiente paso es descargar Autofirma para linux pinchando en este enlace.

Se descargará un archivo comprimido que, en su interior, contiene tres paquetes para instalar Autofirma: un paquete ".deb" para Debian, Ubuntu, etc.; un paquete ".rpm" para Fedora, y otro paquete ".rpm" para SUSE. Como yo uso OpenSuse, utilizaré éste. Lo instalo abriéndolo con la aplicación "YaST Software", o bien con el comando:

sudo zypper install [paquete].rpm

La instalación no debería dar ningún problema. La sorpresa viene, al menos con KDE, cuando intentamos ejecutar Autofirma desde el icono que se crea en el menú de aplicaciones. Nos da un error como éste:

¿Qué ha pasado aquí? Pues que los que hacen Lexnet no han hecho bien el script. Para arreglarlo, tenemos que ir a la carpeta /usr/bin y editar con permisos de administrador (como root) el archivo autofirma:

sudo nano /usr/bin/autofirma

Este archivo sólo tiene una línea que no es suficiente para ejecutar el programa, provocando el error que se ha descrito. Hay que añadir "#!/bin/sh" al inicio del archivo, de modo que el script "autofirma" debe quedar así:

#!/bin/sh
java -Djdk.tls.maxHandshakeMessageSize=50000 -jar /usr/lib64/autofirma/autofirma.jar $*

Guardamos el archivo y lo cerramos. Cuando pinchemos en el icono de Autofirma en el menú de aplicaciones, ahora sí se abrirá el programa sin problemas.

Paso 2: Instalar el certificado raíz de Autofirma en el navegador.

Para que Lexnet pueda utilizar Autofirma, hay que instalar el certificado raíz de la aplicación en el navegador. En este caso, voy a explicarlo para Firefox.

Accedemos a los ajustes y, dentro de la sección "Privacidad y Seguridad" buscamos la opción "Certificados". Pulsamos en "Ver certificados".

En la ventana que se abre, pulsamos en "Importar..." y, seguidamente, buscamos el archivo "AutoFirma_ROOT.cer" que se encuentra en /usr/lib64/autofirma. Por último, seleccionamos la opción "Confiar en esta CA para identificar sitios web". Aceptamos.

Cerramos el navegador y, con esto, ya deberíamos poder usar Lexnet Justicia con linux.

He comprobado que, a veces, da un error de certificado al entrar por primera vez en la página de Lexnet pero, si se pincha en "Reintentar", accede sin problema.

Es justicia que se ha hecho por fin en España, a 11 de mayo de 2022.