Firmar digitalmente documentos con el DNIe y Sinadura

Escrito por el , actualizado el .
planeta-codigo software-libre hardware software
Enlace permanente Comentarios

DNIe

Sinadura

Ya he comentado como instalar un lector de tarjetas inteligentes en linux para usar el DNI electrónico y que una vez instalado podemos darle algún uso útil como por ejemplo autenticarnos con en DNI en las páginas que lo soporten como medio de autenticación y el navegador Firefox. También he comentado como usar el DNI con el cliente de correo Evolution para enviar correos firmados digitalmente.

En esta entrada voy a comentar como firmar digitalmente documentos en cualquier formato electrónico con la aplicación de software libre Sinadura. La firma que hagamos con el DNIe sobre estos documentos puede tener la misma validez legal que la firma manuscrita.

Primeramente deberemos descargar la última versión de Sinadura según la arquitectura de nuestro procesador, de 32 bits o de 64 bits y la plataforma linux o windows. El archivo descargado es un instalador que deberemos ejecutarlo, como es un programa Java deberemos tener instalado previamente un entorno de ejecución de Java como el OpenJDK. Lo ejecutamos con:

1
2
$ java -jar sinaduraDesktop-3.3.3-unix64-installer.jar

instalar-sinadura.sh

Instalador Sinadura

Una vez instalado sinadura y también teniendo instalado el lector de tarjetas inteligentes para el DNI y funcionando deberemos conectarlo al ordenador e introducir el DNI. Iniciaremos sinadura con que se encuentra dentro del directorio de instalación de Sinadura:

1
2
$ ./sinadura.sh

iniciar-sinadura.sh

Inicialmente veremos una pantalla como la siguiente con una lista de archivos vacíos y una serie de botones para realizar varias acciones.

Sinadura

Con Sinadura y el DNI podemos firmar digitalmente cualquier tipo de archivo pero entre los archivos de tipo pdf y el resto hay diferencias. En el caso de los pdf la firma se incrusta en el propio documento y en resto se crea un nuevo archivo con la firma y el documento original, el archivo nuevo creado tiene la extensión .sar. Para firmar un documento deberemos añadirlo a la vista con el botón «Añadir documento» y posteriormente firmarlo con el botón «Firmar». Para realizar la firma se nos pedirá que introduzcamos el PIN secreto que nos proporcionaron al emitirnos el DNI en la oficina de expedición.

Preferencias de Sinadura

En el caso de los archivos pdf Sinadura por defecto incrusta además de la firma una marca de agua en la primera página aunque se pueden cambiar algunas preferencias en «Archivo> Preferencias»:

Preferencias de Sinadura

Los archivos .sar creados para archivos que no son pdf tienen el siguiente contenido, además del archivo original una serie de archivos .xml que contendrán la firma (son archivos zip con extensión .sar):

Documento firmado con Sinadura

Una vez firmados los archivos podemos enviarlos por correo electrónico y la persona que los reciba podrá validarlos también con Sinadura. Para ello se debe añadir el archivo y pulsar el botón «Validar».

Si queremos firmar muchos archivos a la vez usar la interfaz gráfica nos va a resultar lento y un trabajo repetitivo. En caso de querer hacer firmas masivas de archivos es mejor usar la linea de comandos o un proceso sh que nos haga la tarea. Sinadura también proporciona una utilidad basada en la linea de comandos que debemos usar de la siguiente forma:

1
2
3
4
$ ./sinadura-console.sh --sign --pdf
  --input /home/picodotdev/Software/personal/PlugInTapestry/PlugInTapestry.pdf
  --output /home/picodotdev/Software/personal/PlugInTapestry/PlugInTapestry-signed.pdf
  --preferences /home/picodotdev/.sinadura/preferences/preferences-console.properties
sinadura-console-pdf.sh
1
2
3
4
$ ./sinadura-console.sh --sign --xades
  --input /home/picodotdev/Software/personal/PlugInTapestry/PlugInTapestry.pdf.zip
  --output /home/picodotdev/Software/personal/PlugInTapestry/PlugInTapestry-signed.zip
  --preferences /home/picodotdev/.sinadura/preferences/preferences-console.properties
sinadura-console-xades.sh

Con el siguiente archivo de preferencias:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
preferencias.radioCertType.active=1
hardware.dispositive=/usr/lib64/opensc-pkcs11.so

pdf.stamp.enable=false
pdf.stamp.height=122
pdf.stamp.path=/home/picodotdev/.sinadura/preferences/sinadura150.png
pdf.stamp.y=17
pdf.stamp.x=17
pdf.stamp.width=122
pdf.visible=false
pdf.location=Bilbao
pdf.reason=powered by zylk.net
pdf.certified=1

ks.cache=/home/picodotdev/.sinadura/preferences/cache.jks
ks.trusted=/home/picodotdev/.sinadura/preferences/trusted.jks
ks.cache.pass=sinadura
ks.trusted.pass=sinadura

callback.handler=net.esle.sinadura.core.password.ConsoleCallbackHandler
certificate.password= 
preferences-console.properties

La linea de comandos producirá el mismo resultado que el uso con la interfaz gráfica. Realmente los ejemplos de firma por consola no me han funcionado, en ambos casos me da una excepción NullPointerException que no es muy aclarativa de lo que está sucediendo, probablemente sea que falta algo en el archivo de preferencias.

En definitiva, la firma digital de documentos es otro uso que le podemos dar al DNI electrónico y con Sinadura realizarlo es bastante sencillo.


Comparte el artículo: