fernando_acero (fernando_acero) wrote,
fernando_acero
fernando_acero

Firmando documentos PDF con el DNIe en Ubuntu 14.04LTS mediante Sinadura

No es la primera vez que hablo de Sinadura, en esta ocasión explicaré la forma de configurar el sistema para que Sinadura funcione correctamente en Ubuntu 14.04 y nos permita firmar archivos usando el DNIe o la tarjeta CERES, de la Fábrica Nacional de Moneda y Timbre.

Tal como se indica en la págína web de Sinadura, se trata de un proyecto opensource español liderado por la consultora TIC zylk.net ubicada en Erandio (Bizkaia), orientado a ofrecer productos y servicios para la identidad digital y firma electrónica, tanto para particulares como para empresas y AAPP.

Este proyecto ofrece herramientas de software, servicios y soporte a la comunidad. La herramienta más conocida del proyecto de llama Sinadura Desktop, que es una aplicación de escritorio basada en Java, por lo que es multiplataforma, líder en el mercado para la firma digital de cualquier tipo de archivo. El software de Sinadura garantiza la integridad, identidad y el no repudio en cualquier archivo, como pueden ser nóminas, contratos, facturas o certificaciones en archivos de texto, canciones en archivos de sonido o videoclips en archivos de vídeo.

Desde mi experiencia, disponer de una herramienta para firmar documentos en formato digital y con el mismo valor legal que una firma manuscrita y sello de tiempos, me ha facilitado mucho las cosas en mis relaciones con empresas y con las Administraciones Públicas. Basta con escribir un documento en Open Office, o Libre Office, guardarlo como PDF y luego usar Sinadura con nuestro DNIe, para firmar el documento antes de remitirlo por correo electrónico a su destino. De hecho, me gusta tanto este procedimiento y me ha funcionado tan bien cuando lo he usado, tanto con empresas como con las Administraciones Públicas, que es mi opción preferida cuando existe un correo electrónico de contacto.

Otro entorno en el que Sinadura es una aplicación casi imprescindible, es el de las PYMES ya que esta aplicación, que funciona prácticamente en cualquier sistema operativo, también nos permite firmar digitalmente nuestras facturas electrónicas, con solamente seleccionar dicha opción en la interfaz de usuario.

También considero muy útil, en un momento en el que no todo el mundo está acostumbrado a la firma electrónica de documentos, que Sinadura, a diferencia de otras aplicaciones similares, pueda mostrar en el documento una marca visible indicando que está firmado digitalmente. A pesar de ello, en el correo de remisión también añado siempre el siguiente texto al final, para que quede claro el estatus legal de los documentos remitidos adjuntos al mismo:




"NOTA LEGAL: Este correo y la documentación anexa al mismo, cuentan con firma electrónica reconocida del remitente realizada mediante su DNIe, por lo que según lo establecido en la Ley 59/2003, de 19 de diciembre, de firma electrónica, tanto el correo, como los documentos adjuntos al mismo, tienen la misma validez legal que la de documentos en papel con firma manuscrita."




Veamos el procedimiento para instalar y utilizar Sinadura en una distribución Ubuntu 14.04 LTS, que en mi caso usa el KDE como entorno gráfico, junto con el DNIe, o con la tarjeta CERES modelo "Kriptonita", en la que guardo mis certificados digitales de 2048 bits de CERES, CACERT y STARTCOM.

Como punto de partida consideraremos que tenemos un lector de tarjetas correctamente instalado en nuestro sistema, así como una máquina virtual JAVA, que en mi caso es Oracle versión 7.

Yo uso un lector de tarjetas inteligentes Castles Technologies EZ100PU, comprado en unos grandes almacenes de Madrid hace unos años. Este lector me gusta especialmente, aparte de por su excelente suporte para Linux de 32 y 64 bits (recomiendo bajar los controladores más actualizados para Linux de la página web del fabricante), por la información que proporciona su LED de funcionamiento. Dicho LED está en color verde cuando está alimentado, en color rojo cuando alguna aplicación está haciendo uso de la tarjeta inteligente insertada y parpadea en rojo, cuando dicha tarjeta está siendo utilizada por la aplicación.

De esta forma, evitaremos destruir nuestro DNIe por retirarlo del lector mientras está siendo utilizado, cosa, que por desgracia, suele se demasiado frecuente. El DNIe es relativamente lento y en algunas circunstancias, si el lector no proporciona información sobre el uso de la tarjeta, el usuario puede considerar que la aplicación o el DNIe se han bloqueado, retirando el DNIe antes de tiempo y provocando su destrucción. De hecho, yo voy un poco más lejos y tengo la precaución de salir de las aplicaciones que hacen uso del DNIe para que se ponga el LED del lector en verde, antes de extraer el DNIe.

Dicho lo anterior, considero imprescindible que el lector de tarjetas inteligentes que usemos, informe claramente de que la tarjeta está siendo utilizada por un programa, evitando así el tener que volver a la comisaría a renovar nuestro DNIe.

VERIFICANDO JAVA

En mi Ubuntu 14.04LTS, el archivo java del directorio /usr/bin es un enlace simbólico al archivo /etc/alternatives/java, que a su vez, es un enlace simbólico a la máquina virtual de java, que en mi caso, se encuentra instalada en /usr/lib/jvm/java-7-oracle/jre/bin/java.

Si ejecuto el mandato java -version obtengo lo siguiente:

java version "1.7.0_80"
Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
Java HotSpot(TM) Server VM (build 24.80-b11, mixed mode)

Ahora lo más importante, para que Sinadura funcione adecuadamente, es la correcta configuración de la variable de entorno JAVA_HOME. Para verificarlo, usaremos el mandato echo $JAVA_HOME, que en consonancia con lo anterior, nos debería devolver lo siguiente:

/usr/lib/jvm/java-7-oracle

Si no es así, podemos usar el mandato:

sudo apt-get install oracle-java7-set-default

NOTA: La instalación de oracle-java7-set-default, o oracle-java8-set-default, dependiendo de la versión de Java que tengamos instalada, funcionará si en el archivo /etc/profile no hay ninguna configuración relativa a JAVA_HOME. La instalación de oracle-javax-set-default, lo que hace es crear unos archivos en el directorio /etc/profile.d denominados jdk.sh y jdk.csh que configuran adecuadamente la variable de entorno JAVA_HOME.

Si se desea usar el archivo /etc/profile deberá contener en nuestro caso las lineas siguientes:

JAVA_HOME=/usr/lib/jvm/java-7-oracle/jre
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
export JAVA_HOMEexport PATH

Posteriormente, para evitar cualquier configuraciones erróneas, será necesario cualquier archivo java.sh, java.csh, jdk.sh o jdk.csh, que pudiera haber en el directorio /etc/profile.d

La siguiente vez que arranquemos el sistema, la variable JAVA_HOME debería apuntar al directorio adecuado.



INSTALAR EL CONTROLADOR DEL DNIe Y DE LA TARJETA CERES

Para ello iremos a la página de descarga de software de la Fábrica Nacional de Moneda y Timbre y descargaremos el archivo GNU/Linux Ubuntu 14.04 - 14.10 - 32 bits o GNU/Linux Ubuntu 14.04 - 14.10 - 64 bits, en función de nuestra distribución. Supongamos que la nuestra es de 32 bits. Para instalar el paquete usaremos el mandato:

sudo dpkg -i libpkcs11-fnmtdnie_1.2.2_Ubuntu_14.04_14.10_32bits.deb

Una vez que se abra el navegador Firefox, solamente habrá que seguir las instrucciones que aparecen en el mismo, que son las siguientes:

Para usar la tarjeta de la FNMT/DNIe en su navegador se requiere:

* Instalar el Módulo de Seguridad PKCS#11

Para instalar el módulo PCKS#11 debe ir a Editar/Preferencias/Avanzado/Cifrado/Dispositivos de seguridad

Seleccione "Cargar"

Dele un nombre al módulo. (Por ejemplo "FNMT-RCM Modulo PKCS # 11")

Indique manualmente la ruta del módulo: /usr/lib/libpkcs11-fnmtdnie.so

Pulse el botón "Aceptar"

* Instalar el Certificado Raíz de la Autoridad de Certificación de la FNMT-RCM

Para instalar el certificado raíz ir a Editar/Preferencias/Avanzado/Cifrado/Ver certificados

Seleccione "Importar".

Indique manualmente la ruta del certificado raíz: /usr/share/libpkcs11-fnmtdnie/FNMTClase2CA.crt

El asistente le pedirá que establezca la confianza para el certificado.

Marque las tres casillas de confianza.

Pulse el botón "Aceptar"

* Instalar el Certificado Raíz de la Autoridad de Certificación del DNIe

Para instalar el certificado raíz ir a Editar/Preferencias/Avanzado/Cifrado/Ver certificados

Seleccione "Importar".

Indique manualmente la ruta del certificado raíz: /usr/share/libpkcs11-fnmtdnie/ac_raiz_dnie.crt

El asistente le pedirá que establezca la confianza para el certificado.

Marque las tres casillas de confianza.

Pulse el botón "Aceptar"

Una vez realizado todo lo anterior y se cierre el navegador, finalizará la instalación del software necesario para que funcione la tarjeta CERES y el DNIe en Ubuntu 14.04 LTS.

INSTALACIÓN DE SINADURA

Para instalar Sinadura Desktop 4.2.0, accederemos a la página del proyecto y descargaremos la version de 32 o 64 bits, en función de la versión de nuestro Ubuntu 14.04. Como en el caso anterior, supondremos que nuestra versión es de 32 bits. Una vez descargado el archivo, usaremos el mandato.

sudo java -jar sinadura-ce-4.2.0-unix32-installer.jar

Pulsaremos "Next", luego aceptaremos la licencia y pulsaremos "Next", después dejaremos el directorio por defecto y pulsaremos "Next", luego aceptaremos la creación del directorio y cuando acabe la instalación de los archivos, volveremos a pulsar "Next". Seguidamente, seleccionaremos las opciones "Create shortcuts in the XDG-Menu", "Create additional shorcuts on the desktop" y "All users", dejaremos el "Program Group" por omisión y pulsaremos "Next". Cuando acabe el proceso, pulsaremos "Done" y con ello tendremos instalado Sinadura en nuestro sistema.

Sin embargo, las librerías gráficas SWT (Eclipse)que usa Sinadura, no se llevan especialmente bien con las librerías del entorno gráfico de Ubuntu, que en mi caso es el KDE. De hecho, cualquier intento de modificar la configuración de Sinadura provocará que Sinadura deje de funcionar y genere un "core". La solución, una vez identificado el problema, es sencilla, solamente hay que editar como root el archivo /usr/share/themes/oxygen-gtk/gtk-2.0/gtkrc, modificando la línea:

GtkComboBox::appears-as-list = 1

Para que muestre lo siguiente:

GtkComboBox::appears-as-list = 0

Una vez salvado el archivo, la próxima vez que ejecutemos Sinadura funcionará perfectamente y se acabarán los "core" de la aplicación.

USANDO EL CONTROLADOR DEL DNIe con SINADURA

En este punto Sinadura no funcionará con el DNIe ni con la tarjeta CERES ya que buscará el controlador en una ruta y con un nombre que no es adecuado para nuestra configuración. El software de la FNMT para Linux instala los controladores del DNIe en /us/lib con el nombre libpkcs11-fnmtdnie.so, mientras que Sinadura los busca en /usr/lib/opensc/ con el nombre opensc-pkcs11.so. Para solucionarlo, editaremos como root el archivo hardware-preferences.csv, que encontraremos en el directorio /usr/local/sinadura/resources/preferences, de forma que la segunda línea del archivo, en lugar de mostrar:

generic;Genérico (32-bit);/usr/lib/opensc/opensc-pkcs11.so;linux;

Muestre lo siguiente:

generic;Genérico (32-bit);/usr/lib/libpkcs11-fnmtdnie.so;linux;

Hecho esto ya podremos usar nuestro DNIe, o una tarjeta CERES, para firmar nuestros documentos o crear facturas electrónicas. Asimismo, Sinadura también puede usar un certificado software para firmar un documento, si se configura adecuadamente para ello, por lo que no es imprescindible disponer de una tarjeta inteligente para firmar documentos aunque en ese caso, los documentos firmados no tendrán el mismo valor legal que un documento con firma manuscrita.

En versiones anteriores de Sinadura este archivo se encontraba dentro de un contenedor "jar", por lo que era mucho más complicado de editar. Por ello, considero muy acertado que por parte de los responsables del proyecto se haya decidido facilitar esta tarea de forma que Sinadura se pueda utilizar con tarjetas, o en entornos, distintos a los considerados inicialmente por los desarrolladores, como ha sido nuestro caso.

Una vez configurado todo adecuadamente, no tendremos problemas para usar nuestro DNIe, o una tarjeta CERES con el navegador Firefox, o con el programa de correo electrónico Thunderbird. También podremos firmar documentos PDF con Sinadura, así como con Open Office o Libre Office, en formato Open Document Format (ODF) y en el caso de usar el DNIe, con la misma validez legal que un documento con firma manuscrita. Hay que señalar que Open Office y Libre Office usan el almacén de certificados de Firefox, por lo que si nuestro DNIe está correctamente configurado en Firefox, también nos funcionará sin problemas con Open Office, o con Libre Office.





"Copyleft Fernando Acero Martín. Se permite la copia textual, la traducción y la distribución de este artículo entero en cualquier medio, a condición de que este aviso sea conservado. Se permite la cita. El autor no reclamará ninguna cantidad por el ejercicio de las dos autorizaciones anteriores. No autorizo a ninguna Entidad de Derechos de Autor a reclamar cantidad alguna en mi nombre."


  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 11 comments