Firma digital en Ubuntu

Creo que, como a todo el mundo, me desespera esperar. Pero esta desesperación llega a su máximo apogeo, si además tengo que hacer cola. Por esta razón, acudir a una oficina a entregar documentación es algo que sale fuera de mis entendederas. ¿Como es posible que en pleno siglo XXI todavía tengamos que presentar documentos en papel?. En este artículo verás como utilizar la firma digital de documentos PDF y otros archivos con la aplicación AutoFirma, y también como hacerlo directamente con LibreOffice.

Parece que la administración, poco a poco, se va modernizando. Pero, es tan poco a poco… Pero, no solo la administración pública, lo mismo sucede con determinadas empresas. Hace unos pocos meses tuve que acudir a la oficina de un banco para firmar unos documentos. ¿De verdad es necesario?.

Hoy en día, en pleno siglo XXI, podemos comprar cualquier cosa sin tener que aparecer por la tienda. Podemos enviar y recibir dinero. Y sin embargo, todavía hay quien se resiste a este avance. Todavía hay quien nos hace pasar por la oficina, para vete a saber que tontería…

Vamos con AutoFirma para la firma electrónica de PDF…

AutoFirma, o firma digital de PDF y otros archivos

¿Que es AutoFirma?

AutoFirma es una sencilla aplicación de escritorio, que permite la firma electrónica de PDF y otros documentos. AutoFirma selecciona el formato de firma mas adecuado para el documento que vamos a firmar. Además permite previsualizar los firmantes y el documento firmado.

Además AutoFirma es software libre, liberado bajo licencia GPL versión 2, o bajo licencia European Software License 1.1.

En la versión 1.6.2, que es la que estaba vigente en el momento de escribir este artículo, ya están incluidas una serie de mejoras como,

  • El soporte completo de DNIe 3.0
  • La generación de firmas visibles en PDF
  • Se mejoraba la integración con tarjetas inteligentes
  • Se ha añadido compatibilidad con Java 9. Esto, a pesar de que en los requerimientos del paquete debian requiere Java 8. En cuanto a Java soporta tanto OpenJDK 8, como la versión de Java 8 Oracle.

Tienes que tener en cuenta que AutoFirma no solo sirve para firmar documentos PDF, sino que también puedes firmar archivos XML, y cualquier otro tipo de documento.

Tanto en Linux como en el resto de plataformas, se puede utilizar AutoFirma en modo gráfico, como directamente en el terminal. Esto último, como veremos mas adelante, tiene la ventaja de que podemos firmar no solo un archivo, sino también un lote de archivos.

Certificados y privacidad

La aplicación AutoFirma, utiliza los certificados digitales X.509v3, y las claves privadas asociadas a estos certificados. Evidentemente, es necesario que estén instalados o bien, en el almacén de claves del sistema operativo, o bien, en el propio navegador.

Además permite el uso de dispositivos externos como son lectores de tarjetas externas, y las correspondientes tarjetas. Así, puedes utilizar el DNIe o las tarjetas criptográficas de la ACCV, por ejemplo.

Es importante resaltar, que AutoFirma no registra información sobre el usuario. Tampoco utiliza cookies o nigún otro medio de almacenamiento en el navegador. Aunque si que guarda los datos correspondientes a la última ejecución para el caso de que se produjera un error, poder dar soporte al usuario.

Instalación

Para instalar AutoFirma en nuestro equipo, tenemos que descargar la versión en curso. Puedes descargar la última versión de AutoFirma desde el enlace. O bien, abrir un terminal y ejecutar las siguientes órdenes. Además de instalar la aplicación, en las siguientes órdenes, he añadido las dependencias necesarias, para facilitarte el trabajo.

sudo apt install openjdk-8-jre
sudo apt install libnss3-tools
mkdir temporal_autofirma
cd temporal_autofirma
wget http://estaticos.redsara.es/comunes/autofirma/currentversion/AutoFirma_Linux.zip
unzip AutoFirma_Linux.zip
sudo dpkg -i *.deb
cd ..
rm -rf temporal_autofirma

En el caso de que lo quisieras desinstalar, la operación sería tan sencilla como ejecutar la siguiente línea en el terminal,

sudo apt remove --purge autofirma

Desde luego, también podrías desinstalarla desde el Centro de Software de Ubuntu o mediante otras aplicaciones como AppGrid, sobre la que ya comenté en el artículo AppGrid, una alternativa al Centro de Sofware de Ubuntu. Esta aplicación, me resulta muy atractiva porque es muy ligera, y no está siempre funcionando en segundo plano.

Funcionamiento en modo gráfico

Una vez instalado AutoFirma en tu equipo, el funcionamiento es muy sencillo. El primer paso iniciar la aplicación y seleccionar el archivo que queremos firmar.

Firma digital en Ubuntu. Ejemplo autofirma. Captura 1

En el caso de que el archivo sea un documento PDF, nos dará la posibilidad de hacer la firma visible dentro del PDF. El documento PDF será totalmente legible.

Firma digital en Ubuntu. Ejemplo autofirma. Captura 2

Además nos permite ver una previsualización del resultado, así como ajustar el formato y el contenido del área de texto.

Firma digital en Ubuntu. Ejemplo autofirma. Captura 3

 

Firma digital en Ubuntu. Ejemplo autofirma. Captura 4

También podemos personalizar la firma, con las siguientes palabras clave que serán sustituidas de acuerdo a los siguientes criterios,

  • $$SUBJECTCN$$Nombre común (CN, Common Name) dentro del X.500 Principal del titular del certificado de firma.
  • $$ISSUERCN$$Nombre común (CN, Common Name) dentro del X.500 Principal del emisor del certificado de firma.
  • $$CERTSERIAL$$Número de serie del certificado de firma.
  • $$SIGNDATE=PATRÓN$$Fecha de la firma, donde PATRÓN debe indicar el formato en el que debe mostrarse la fecha, siguiendo el esquema definido por Oracle para la clase SimpleDateFormat.

Por otro lado, con otros tipo de documentos, estos quedarán ilegibles. Así por ejemplo los archivos xml, se quedan inutilizables, y no he conseguido descubrir como sacarles provecho. Mientras que otros tipos de archivos, se pueden devolver a su estado original, visitando la página de validación de firmas. Donde una vez comprobada la validez de la firma nos da la posibilidad de descargar el archivo original.

Así, los formatos de firma por defecto son,

  • Documentos PDF -> PAdES
  • Documentos OOXML de Microsoft Office -> OOXML
  • Facturas electrónicas -> FacturaE
  • Ficheros XML genéricos ->XadES
  • Ficheros ODF de LibreOffice/OpenOffice -> ODF
  • Ficheros binarios genéricos -> CAdES

Llegados a este punto indicar que no he conseguido firmar los archivos de LibreOffice desde AutoFirma y que posteriormente fueran legibles. Pero, si que lo he hecho directamente desde LibreOffice como comentaré mas adelante. También es posible, realizar la firma digital de documentos PDF directamente desde LibreOffice.

Funcionamiento desde el terminal

Hacer funcionar AutoFirma desde el terminal tiene todas las ventajas que ya te puedes imaginar. Al fin y al cabo, puedes firmar un lote completo de documentos sin tener que ir paso a paso.

Sin embargo, no he conseguido utilizar los certificados instalados en Firefox. Finalmente hice una copia en un archivo, y a partir de ahí todo fué coser y cantar. Así para firmar un archivo PDF, la orden sería,

AutoFirma sign -i entrada.pdf -o salida.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontreña

¿Y si en lugar de querer firmar un solo documento quieres firmar una docena de documentos? Pues tan sencillo como utilizar la siguiente orden,

for i in entrada_*.pdf; do AutoFirma sign -i $i -o ${i/.pdf/}_signed.pdf -store pkcs12:/home/lorenzo/Escritorio/certificado.p12 -alias firma -password micontraseña; done

Aquí te tengo que advertir que tengas mucho cuidado con los espacios, comillas y demás signos de puntuación. Lo cierto es que AutoFirma no los tolera nada bien.

LibreOffice, o firma digital de documentos propios y PDF

La otra opción que tenemos disponible es la utilización de LibreOffice. Si, lo has leído bien, con el propio LibreOffice puedes estampar tu firma digital. Y no solo puedes poner tu firma digital en documentos de LibreOffice, sino que también lo puedes hacer en documentos PDF.

Como verás a continuación, la operación es realmente sencilla. Tan solo tienes que abrir cualquier documento de LibreOffice, y desde el menú Archivo > Firmas digitales, se desplegará el siguiente cuadro de diálogo, donde te muestra las firmas actuales,

Para el caso de la firma de un archivo PDF, la operación es similar. Tienes que ir al menú Archivo > Firmas digitales > Firmar PDF Existente. Esta opción abrirá el documento PDF en LibreOffice Draw en modo de solo lectura. En la parte superior del documento, verás dos botones. Uno de los botones, te permite editar el documento PDF. El otro de los botones, te permite estampar la firma digital en el documento PDF.

Tanto en el caso de un documento de LibreOffice, como de un documento PDF, una vez firmados no los tienes que guardar, no hace falta LibreOffice los ha guardado en el momento de estampar la firma digital. Es mas, si lo guardas se perderá esa firma digital.

Conclusiones

Tienes aquí tres opciones para estampar la firma digital en tus documentos y archivos en Ubuntu. Cada uno de los métodos, tiene sus ventajas e inconvenientes. Respecto al uso de AutoFirma está la dependencia de Java. A mi particularmente Java no me gusta por que consume una exageración de recursos. Sin embargo, la posibilidad de realizar la firma de docenas de documentos desde el terminal, es una cuestión que me seduce bastante.

Desde luego, si tu caso es que tienes que estampar la firma digital en muchos documentos, y muy a menudo, la solución de AutoFirma desde el terminal, es la mas interesante, con independencia de Java. Si por contra solo tienes que firmar de vez en cuando documentos de LibreOffice o PDF, la solución de LibreOffice es posible que sea la mas interesante. Y digo que es posible, por el hecho de que pueda deformar el documento PDF al importarlo a LibreOffice Draw.

En fin, como ves, al final lo dejo a tu elección, dependiendo de cada caso podrás decantarte por una opción u otra. Para pocos documentos en formato ODF, sin lugar a dudas LibreOffice. Para PDF y otros documentos AutoFirma en modo gráfico. Para muchos documentos, AutoFirma desde el terminal, sin lugar a dudas.