Footprint Gestor Cetificados Digitales

De Grupo GNU/Linux de la Universidad del Cauca
Saltar a: navegación, buscar

Julio 3 de 2.008.

Por José Raul Romero Mera.

footprint - Gestor de Certificados de Asistencia en Formato Digital

Debido al compromiso y responsabilidad que se tiene de elaborar los certificados de asistencia al Festival de Instalaciones de Software Libre Flisol 2008 Popayán, los cuales son numerosos, por la cantidad de participantes a este importante evento que la comunidad de software libre realiza, se vio la necesidad de contar con aplicaciones o herramienta que permitiera la gestión en la generación y publicación en línea de los certificados, de tal forma, que cada persona interesada descargue e imprima el certificado digital según su deseo.

Con este objetivo, durante varios días en el motor de búsqueda de Google, se evidenció que hay casi nada de herramientas, de uso libre, pero con paciencia se logró localizar un sitio web de un proyecto denominado footprint[1].

Con este articulo, se pretende mostrar una forma de gestionar los certificados de asistencia en formatos digitales para cualquier tipo de evento. La intención es brindar una guía paso a paso sobre la instalación, configuración básica y puesta en marcha de una aplicación que permiten gestionar la generación y remisión de los certificados de asistencia a los participantes de los diversos eventos que la Comunidad programa y que generalmente la concurrencia de participantes a estos es muy numerosa, lo que dificulta, el manejo del tema de elaboración de los certificados.

Para este propósito, se ha efectuado una prueba y posteriormente se hizo una adaptación para emitir parte de los certificados de asistencias al Flisol 2008 en Popayán, para lo cual, se contó con lo siguiente:

  1. Un Pc con Sistema operativo GNU/Linux Ubuntu 7.10 Feisty Fawn con acceso a la red Internet.

Contenido

Descripción del proyecto footprint

La meta del proyecto footprint es producir un conjunto de herramientas para generar y distribuir documentos firmados digitales, estas herramientas fueron inicialmente planeadas para generar certificados de asistencia para los eventos de los Grupos de Usuarios de Java, mas conocidos como JUG, aunque también ha sido usadas para crear otros documentos parametrizados. La licencia del proyecto es LGPL.

El proyecto emplea aplicativos Open Source como:

  • iText[2] - Una librería Java-PDF
  • Legion of the Bouncy Castle[3] - APIs de criptografía Java
  • CsvJdbc[4] - driver JDBC para Java empleado para archivos CSV (Comma Separated Value) como tabla de base datos.
  • OpenOffice[5] - Suite de oficina para producir las plantillas de los certificados.
  • JAXB 2.+[6] - Arquitectura Java para XML Binding.

El último release del proyecto footprint es FOR, un JDBC Publisher Demo, el cual genera documentos PDF firmados desde una base de datos jdbc y los remite a través de un servidor SMTP a direcciones electrónicas contenidas en la base de datos. Este demo emplea un archivo CSV como fuente de datos origen y una plantilla del certificado en PDF la cual ha sido creada con OpenOffice, además incluye un archivo demo de keystore para el certificado digital.

La configuración de footprint se efectúa mediante un archivo XML, el cual puede ser usado para validar configuraciones y/o generar plantillas de sus archivos de configuración.

El algoritmo de footprint trabaja de la siguiente forma:

  1. Lee el archivo de configuración XML, el cual contiene muchas definiciones como conexiones JDBC, detalles de la plantilla PDF y el archivo keystore, y usa JAXB para construir una representación de objeto de la configuración.
  2. Lee la plantilla PDF.
  3. Accede a la base de datos por conexión JDBC y lee cada dato del listado del archivo CSV. Por cada dato del listado del archivo CSV se hace:
    1. Llena la plantilla PDF con los datos del integrante de la lista: nombre, email, etc.
    2. Genera un nuevo archivo PDF con la información del integrante.
    3. Firma y sella el nuevo archivo PDF.
    4. Envía el nuevo archivo PDF firmado a la dirección email del participante.

Requisitos e Instalación de footprint

2.1. Verificación de instalación de J2RE 1.6 o superior.

En la terminal se digita:

$ java -version

Si no se tiene debe instalarse. Para instalar J2RE 1.6 en GNU/Linux Debian Lenny, Ubuntu 7.10 Gutsy Gibbon o Ubuntu 8.04 Hardy Heron, en la terminal se usa:

# apt-get install sun-java6-jre

2.2. Descarga e instalación de footprint

Del sitio de footprint[1] se descarga el último release, a la fecha de este documento, es FOR, se descarga y se extrae en algún directorio del PC, al extraer se genera un directorio llamado release el cual contiene dos directorios llamados lib y resources y tres archivos: FootprintDemo.class, FootprintDemo.java y README.txt.

En el directorio /release/resources se encuentran los archivos que pueden adaptarse de acuerdo a la necesidad y son:

  • configExample.xml: archivo de configuración
  • demo.cvs: base de datos de los que se debe certificar en formato CVS
  • demo.keystore: archivo demo que contiene la llave digital para la firma
  • selo.gif: archivo demo con el cual se sella y firma digitalmente el certificado
  • template.demo.odt: Plantilla demo de certificado creada con OpenOffice
  • template.demo.pdf: Plantilla demo de certificado en PDF

2.3. Obtener un certificado Digital "Class 2"

En la Wikipedia[11], la definición de un Certificado Digital es "un documento digital mediante el cual un tercero confiable (una autoridad de certificación) garantiza la vinculación entre la identidad de un sujeto o entidad y su clave pública", por lo que es importante que los eventos de la comunidad cuenten con certificados digitales oficiales para emplearlos.

Se puede obteber un certificado digital gratuito en CaCert [7] o comprar uno ante una entidad certificadora.

Para obtener un certificado digital en CaCert [7], se debe crear una cuenta en el sitio web de CaCert [7], luego de verificar en su cuenta de correo, se logue a CaCert [7], y se solicita un certificado. Para firmar documentos, se debe obtener un certificado denominado certificado cliente, para esto, en el menu se escoge Client Certificates y se escoge New Link. Se siguen las instrucciones y una vez que el certificado es creado, se escoge el enlace que se da para instalar el certificado en el navegador. Una vez que se verifique que el Certificado esta instalado en el navegador, se importa y se graba en algún directorio del PC y queda listo para usar.

2.4. Crear la plantilla del certificado en PDF

Para ello se usa OpenOffice para crear y diseñar la plantilla que contiene campos de datos para formularios, una vez que se tenga definido la plantilla se exporta al formato PDF

2.5. Contar con un archivo .gif, .jpg o .png

Para emplearlo como sello para el certificado, preferiblemente puede ser el emblema del grupo o del evento al cual se va a certificar.

Configuración de footprint

El archivo demo.cvs contiene los siguientes datos:

nome,email
Felipe Gaucho,fgaucho@gmail_notspam_.com

Este se puede modificar con datos propios para probarlo.

El archivo configExample.xml, se debe modificar, en especial, la parte email para la remisión o distribución de los certificados:

<email smtp.user="SUCUENTA@SUSERVIDOR.COM" smtp.password="SUCONTRASEÑA"
 		msg.from="SUCUENTA@SUSERVIDOR.COM" smtp.transfer.protocol="smtp"
 		smtp.star.ttls.enable="true" smtp.host="SMTP.SUSERVIDOR.COM"
 		smtp.content.type="text/plain" smtp.auth="true" socks.proxy.port=""
 		socks.proxy.host="" msg.subject="ASUNTO"
 		post.processing.type="RENAME">
 		<msg.body>
 			<![CDATA[

Escribir aquí el cuerpo del mensaje o adecuar el mensaje de ejemplo colocado... 
 ___________
This certificate was generated by The Footprint Project (footprint.dev.java.net)
 			]]>
 		</msg.body>
 	</email>

Ejecución de footprint

Una vez definida la configuración y el archivo CVS, se procede a ejecutar el programa, desde la terminal, estando en el directorio release, se emplea el siguiente comando:

$java -cp .:./lib/bcprov-jdk16-136.jar:./lib/csvjdbc.jar:./lib/footprint-config.jar:./lib/footprint-core.jar:./lib/itext-2.0.2.jar:./lib/mail.jar FootprintDemo

footprint y los Certificados de Asistencia al FLISoL 2008 Popayán

Para los certificados de asistencia del Flisol 2008 Popayán[8], se tomó el diseño del certificado oficial y se creó la plantilla con Openoffice con los campos de texto y luego se exportó a PDF con el nombre de plantillafinal.pdf.

Se creó el archivo CVS listado.cvs con la estructura requerida, tal como se muestra a continuación:

nombre,cedula,email
"Felipe Gaucho",XYZXYZXYZ,fgaucho@gmail_nospam_.com
"José Raul Romero Mera",7631XYZ4,jrromero@unicauca_nospam_.edu.co

Las modificaciones que se efectuaron en el archivo de configuración configExample.xml fueron:

En la parte de template

<template pdf.template.filename="resources/plantillafinal.pdf"
     pdf.generated.prefix="" pdf.generated.path="generated"
     pdf.generated.extension=".pdf" pdf.generated.charset="UTF-8"
     pdf.template.charset="UTF-8" />

En la parte de Seguridad security, no se logró obtener un certificado digital para el evento, por lo que se empleó el archivo demo.keystore que venía incluido en el proyecto footprint y se empleó el emblema del grupo GLUC[9] como sello de la firma digital. Se modifica la certificación digital que se va a emplear, se indica la ubicación y nombre del archivo imagen que se empleará como sello, además se indica la posición donde se desea que quede el sello en el Certificado

  <security keystore.type="JKS" keystore.pk.provider="SUN"
		keystore.pk.alias="fpdemo"  keystore.filename="resources/demo.keystore"
		keystore.password="footprint" keystore.pk.password="footprint"
		signature.contact.mail="gluc@unicauca.edu.co"
		signature.location="Popayan CAUCA Colombia"
		signature.reason="Flisol 2008 Popayan">
		<signature.stamp
			signature.stamp.image.filename="resources/tux-gluc.jpg"
			signature.stamp.x1="140" signature.stamp.y1="46"
			signature.stamp.x2="165" signature.stamp.y2="70" />
   </security>

En la parte Base de Datos database:

<database jdbc.query="SELECT first_name FROM listado"
	              . . .
 		<driver.properties
                        . . .                   
			<driver.properties value="UTF-8" name="charset" />
		</driver.properties>
	</database>

En la parte pdf2jdbc se aplicó:

	<pdf2jdbc>
		<mapping pdfField="nombre" databaseColumnName="nombre" />
		<mapping pdfField="cedula" databaseColumnName="cedula" />
	</pdf2jdbc>

Y finalmente en la parte email, se modificó

<email smtp.user="micuenta@caucanet.net.co" smtp.password="XXXXXXXX"
		msg.from="gluc@unicauca.edu.co" smtp.transfer.protocol="smtp"
		smtp.star.ttls.enable="true" smtp.host="smtp.caucanet.net.co"
		smtp.content.type="text/plain" smtp.auth="true"  socks.proxy.port=""
		socks.proxy.host="" msg.subject="Certificado de Asistencia  FLISOL 2008 Popayan"
		post.processing.type="RENAME">
		<msg.body>
			<![CDATA[
Cordial saludo,
Se adjunta Certificado Digital de Asistencia al evento Flisol 2008 Popayan.
Agradecemos mucho, su participacion. Proximamente estaremos programando otros  eventos, los cuales, estaremos anunciando oportunamente con el fin de contar con  su compañia.
Cualquier inquietud, con gusto se atendera
Comite Coordinador Flisol 2008
' __________
This certificate was generated by The Footprint Project  (footprint.dev.java.net).
			]]>
		</msg.body>
	</email>

Una vez se tuvieron los archivos necesarios, se procedió a ejecutarlo:

jorarome@spongebob:~/JoseRaul/certificados/release$  java -cp .:./lib/bcprov-jdk16- 136.jar:./lib/csvjdbc.jar:./lib/footprint-config.jar:./lib/footprint-core.jar:./lib/itext- 2.0.2.jar:./lib/mail.jar FootprintDemo
28/06/2008 05:58:51 PM net.java.dev.footprint.publisher.JdbcPublisher publish
INFO: executing query: SELECT first_name FROM demo
28/06/2008 05:58:52 PM net.java.dev.footprint.publisher.JdbcPublisher publish
INFO: file generated/fgaucho@gmail_nospam_.com.pdf successfully published.
28/06/2008 05:59:15 PM net.java.dev.footprint.mailer.DefaultMailerStrategy postProcess
GRAVE: mailer.sent.rename.failure
28/06/2008 05:59:15 PM net.java.dev.footprint.mailer.DefaultMailerStrategy send
INFO: PDF successfully sent to fgaucho@gmail_nospam_.com
28/06/2008 05:59:16 PM net.java.dev.footprint.publisher.JdbcPublisher publish
INFO: file generated/jrromero@unicauca_nospam_.edu.co.pdf successfully published.
28/06/2008 05:59:39 PM net.java.dev.footprint.mailer.DefaultMailerStrategy postProcess
GRAVE: mailer.sent.rename.failure
28/06/2008 05:59:39 PM net.java.dev.footprint.mailer.DefaultMailerStrategy send
INFO: PDF successfully sent to jrromero@unicauca_nospam_.edu.co
jorarome@spongebob:~/JoseRaul/certificados/release$ 

De esta forma es como algunos certificados fueron generados y remitidos por correo electrónco a los diferentes destinatarios que participaron en el Flisol 2008 Popayán[8], cada uno ha encontrado en su correo electrónico un mensaje con el adjunto del certificado, similar a este Certificado Demo de Asistencia FLISoL 2008, el cual puede ver y/o descargarlo.

Conclusiones

El proyecto footprint cuenta con licencia LGPL y el código fuente completo esta disponible en el repositorio SVN[10], soportara i18n., es casi el único de uso libre que hay a la fecha, con el que puede administrar los certificados asistencia de lo muchos asistentes a eventos que se realicen de una manera sencilla y ágil, teniendo en cuenta lo desgastante que es atender la organización de eventos, solo basta tener un listado con los datos esenciales de cada uno de ellos.

Un inconveniente que no se logró superar fue en la suite OpenOffice, usada para la creación de la plantilla, ya que los campos de texto para formularios, no tienen la posibilidad de transparencia, por lo que impiden que las decoraciones o filigramas colocadas como fondo de la plantilla se vean sino que muestran una mancha que desentona con la estética del certificado.

En general, el proyecto footprint, pinta bien, ya hay ciertas características que se implementarán a futuro como una GUI que permita una configuración más amigable y un sistema de gestion de documentos. Solo queda por invitar a personas que posean o no destrezas en Java, pero con deseos de aportar, para que colaboren con el desarrollo de este proyecto o que a partir de esta grandiosa idea, se generen nuevos y mejores proyectos.

Referencias

[1] footprint: Project Home Page https://footprint.dev.java.net/ (Consultada Mayo 2008)

[2] iText, a Free Java-PDF Library: Home Page http://www.lowagie.com/iText/ (Consultada Mayo 2008)

[3] The Legion of the Bouncy Castle Java Cryptography APIs http://www.bouncycastle.org/java.html (Consultada Mayo 2008)

[4] SourceForge.net: CsvJdbc - CSV file JDBC driver http://sourceforge.net/projects/csvjdbc (Consultada Mayo 2008)

[5] OpenOffice.org - The Free and Open Productivity Suite http://www.openoffice.org/ (Consultada Mayo 2008)

[6] jaxb:JAXB Reference Implementation https://jaxb.dev.java.net/ (Consultada Mayo 2008)

[7] CAcert.org http://www.cacert.org/ (Consultada Mayo 2008)

[8] FLISOL 2008 Popayán - Grupo GNU/Linux de la Universidad del Cauca http://gluc.unicauca.edu.co/wiki/index.php/FLISOL_2008 (Consultada Mayo 2008)

[9] Grupo GNU/Linux de la Universidad del Cauca - Grupo GNU/Linux de la Universidad del Cauca http://gluc.unicauca.edu.co/ (Consultada Mayo 2008)

[10] footprint: Subversion https://footprint.dev.java.net/source/browse/footprint/ (Consultada Mayo 2008)

[11] Certificado digital - Wikipedia, la enciclopedia libre http://es.wikipedia.org/wiki/Certificado_digital/ (Consultada Julio 2008)

Licencia

Este articulo esta bajo una Licencia de Creative Commons: 88x31.png

Otros

Agradecimiento muy especial a Felipe Gaucho quien por su idea y creación del proyecto footprint, ha sido un aporte muy valioso para nuestro evento.

Este articulo está dedicado a cada uno de los compañeros que con su valioso aporte, con su esfuerzo, su dedicación y cariño, colaboraron en la organización del FLISoL 2008 en la Ciudad de Popayán, siendo un éxito. También es dedicado a mi pequeño hijo, quien, cumple un año mas de vida, el dia en que se publica este articulo.

Opiniones, Comentarios, Correcciones, dudas e inquietudes son bienvenidas en Discusión footprint Gestor Certificados Digitales.


El contenido del material publicado por nuestros columnistas es responsabilidad de sus autores.

Para saber más sobre la programación y naturaleza de nuestros artículos, columnas y pistas técnicas, haga clic aquí.