Sinadura: firma digital de PDFs en Linux

Las empresas vascas especialistas en Software Libre Irontec y Zylk han publicado y liberado el código fuente de Sinadura, una aplicación Java que permite firmar digitalmente ficheros PDF en Java, usando por ejemplo,
certificados digitales de Izenpe, FNMT o el DNIe… Update: Este desarrollo ha sido posible gracias a la asociación de empresas de software libre de euskadi ESLE y al prograna KZLankidetza de la SPRI.

Es la primera aplicación de escritorio para firma de PDF bajo licencia libre que conozco, y dará que hablar. El interfaz de la aplicación está preparado para el soporte multi-idioma – de momento inglés, castellano y euskera .

Realmente la presentación oficial de Sinadura se va a hacer por todo lo alto en Bruselas -en breve-, pero la web ya está online, y en DiarioLinux siempre estamos al tanto de lo que se cuece 😉

Tras descargar la última versión (la v1.3 en el momento de escribir estas líneas, ocupando 13MB), la instalación es sencilla:

$ sudo java -jar sinaduraDesktop_v1.3_linux_installer.jar

y seguir las instrucciones a partir de un coqueto instalador en modo gráfico hecho con IzPack.

Una vez instalado, por defecto y si no elegimos otra ubicación, dejará un acceso directo en el menú Aplicaciones/Ofimática.

Al abrirlo, se nos solicitará que protejamos el acceso a esta aplicación mediante un password, que fijaremos la primera vez y que será el que usemos cada vez que lancemos Sinadura en el futuro:

Lo primero que haremos será configurarlo para que acepte el certificado digital que nos interese. En mi caso, lo he configurado para que acepte mi certificado digital ONA (también he probado el certificado digital especial para profesores de la UPV/EHU, emitido así mismo por Izenpe, sin problemas).

La configuración comienza pulsando en Herramientas/Configuración Personal. Veremos que hay multitud de detalles y funcionalidades que podemos ajustar (Sinadura no sólo sirve para firmar PDFs, pero eso lo dejaremos para otro post 😉

Empecemos por el menú «Firma», y ahí, elegiremos un directorio de destino donde guardar los PDF que firmemos. Supongamos que para las pruebas elegimos «/tmp».

Pinchamos ahora en el menú «Gestión de certificados» del panel de la izquierda para configurar nuestro certificado digital (nos aseguramos de introducirlo en el lector) y a continuación en el botón «Añadir». Tecleamos un nombre (de perfil), que en mi caso será Izenpe (no me he cansado mucho pensando 🙂 . En el tipo de certificado elegiremos PKCS11 (alguien pensará «podían ser más user-friendly y poner ‘Certificado digital de tarjeta'»…. no problem, es un «bug» que uno de los autores me ha confirmado que se arreglará). Fijamos la ruta a la librería dinámica que gestiona este tipo de certificados (en mi máquina /usr/lib/opensc/opensc-pkcs11.so y la contraseña del certificado. Pulsamos en «Aceptar» y si todo va bien, en el desplegable «Certificado por defecto» debería de aparecer nuestro nombre (tal y como se ve en la figura adjunta).

Nota: otro «bug» o mejor dicho «deseo», es que el sistema debería de encontrar la ruta al opensc-pkcs11.so él solito…. y sólo si no lo encuentra que nos pregunte…

Para proceder a la firma de un PDF, pulsamos en «Añadir archivos» y elegimos el PDF a firmar.

Podemos seleccionar más de un PDF a firmar. Cuando estemos «contentos» con nuestra selección, pulsaremos «Firmar archivos». El PDF firmado se guardará en el directorio que hayamos configurado (en mi caso, /tmp), con el mismo nombre que el fichero original más el sufijo «-signed.pdf».

Para comprobar el resultado hemos de abrir Acrobat Reader (Evince por el momento no soporta la gestión de firmas digitales en un fichero PDF) y pulsar en el icono de la parte izquierda con forma de bolígrafo sobre una nota de papel

Si desplegamos el mensaje que indica que la firma no se ha podido validar, vemos que es debido a que no hemos incluido al firmante en la lista de firmantes de los que me fío 🙂

Así que habrá que incluirlo… pero eso lo dejo para mañana. A dormir….

 

 

 

 

 

 

 

 

 

 

10 comentarios en «Sinadura: firma digital de PDFs en Linux»

  1. Hola lo primero es felicitaros por este tutorial macnifico, y me gustaria saber si en vez de hacerlo manualmente y por gui se podria hacer mediante algun comando de php, el certificar un pdf, ya que estoy realizando un proyecto que genera pdf automaticamente y me gustaria añadir una firma digital directamente.

    Es posible?

    >Gracias.

    Un saludo.

  2. Hola, pandoro

    a lo que parece el proyecto se basa en iText. Usando esa librería o su equivalente .NET (iTextSharp) tengo hecho lo que pides, no es demasiado complicado (si eres desarrollador) y existe abundante documentación.

    Un saludo

  3. ¿Sigue vivo este desarrollo?. Lo he instalado en UBUNTU y además de que nos e han corregido los BUGS que mencionas en el post de 2008 (hace 2 años), elproceso de instalación no funciona:
    – no se modifican los permisos de ejecución del ejecutable, de forma que hay que hacer sudo chmod+x /usr/local/sinadura/bin/sinadura

    – El programa no guarda contraseñas, proque como se instala con sudo, queda protegido contra escritura y los usuarios no pueden cambiar las preferencias. Hayque cambiar los permisos manualmente, con el riesgo de que cualqueira pueda leer la configuración y firmar mis archivos.

    ¿Haya alternativas a este software o alguna previsión de hacerlo funcional?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.