PortableSigner (I): Instalación de Java en Linux

 

 

PortableSigner es una aplicación libre, con licencia LGPL y multiplataforma por estar programada en Java, que nos permite firmar un documento PDF desde un interfaz de usuario gráfico o desde la consola, lo que nos permite integrar el sistema de firma en otros sistemas, por lo que tiene licencia de librería. Para ello, podemos usar cualquier certificado X.509 almacenado en un contenedor de claves PKS12, por ejemplo, nuestro certificado de la FNMT.

Entre las ventajas de este programa, además de la comentada portabilidad a varias plataformas, tenemos la posibilidad de que varios usuarios firmen un mismo documento al mismo tiempo, o la de añadir un sello adicional con los datos de la firma digital visible. Todo ello, lo veremos a su tiempo, mediante un artículo dividido en tres partes. En esta primera, al ser una aplicación que funciona con Java, veremos la forma de instalar y configurar Java en nuestro sistema; en la segunda veremos la forma de instalar PortableSigner y en la tercera aprenderemos a usar este programa y a verificar las firmas usando Acroread...

Comencemos por instalar y configurar Java en nuestro sistema, para ello, descargaremos la última versión disponible desde la página de descarga, que en este momento es la Versión 6 Update 12. Para ello, haremos clic sobre el botón "Descarga gratuita de Java" que nos aparece en la página.

Ahora nos aparecerá una ventana con una serie de opciones; como veremos, hay opciones para 32 y 64 bits, además de archivos RPM autoextraibles y autoextraibles. El problema de la versión de 64 bits es que no nos funcionará con el navegador Mozilla Firefox, que es de 32 bits, el applet de Java. En mi caso, que uso una distribución Mandriva, suelo elegir la primera opción, es decir, RPM autoextraible de 32 bits. De esta forma, Java se instalará automáticamente en el directorio /usr/linux/nombre_version y configurará algunas cosas más, que de otro modo habría que configurar a mano. Si usamos la opción autoextraible sin RPM, después de descomprimir el paquete en algún sitio, tendremos que copiar los ficheros como root al directorio /usr/java y modificar los enlaces simbólicos latest y default, para que apunten adecuadamente, cosa que nos ahorramos si optamos por la primera opción. Los enlaces anteriores deberían quedar así:

default -> /usr/java/latest/
latest -> /usr/java/jre1.6.0_12/

Para bajar el archivo haremos clic sobre él y lo guardaremos en un directorio de nuestro sistema. Hecho esto, abriremos una consola como root y e iremos al directorio en el que hemos almacenado el archivo de instalación. Para poder usarlo, lo primero que tenemos que hacer es lograr que sea ejecutable, para ello, usaremos el siguiente mandato:

chmod +x jre-6u12-linux-i586-rpm.bin

Después, comenzaremos la instalación con el mandato:

./jre-6u12-linux-i586-rpm.bin

Lo primero que nos saldrá en la pantalla es la licencia de Java. Para leerla entera, iremos pulsando la barra espaciadora hasta que nos pida confirmación de que aceptamos los términos de la licencia, a lo que contestaremos "yes", con todas las letras, seguido de la tecla Enter. En pocos segundos, habremos terminado de instalar Java en nuestro sistema.

Ahora tenemos que configurarlo adecuadamente, lo que haremos en dos fases: plugin del navegador Mozilla Firefox y entorno de usuario.

Comencemos por lo primero, para lo que hay varias opciones. Los plugins de Mozilla Firefox se pueden instalar de forma global mediante directorio /plugins/ que encontraremos en el directorio de instalación de Mozilla Firefox, normalmente en /usr/local/mozilla, o de forma particular para cada usuario, en el directorio /home/usuario/.mozilla/plugins. Vamos a optar por la primera opción por ser la más cómoda ya que lo instala para todos los usuarios al mismo tiempo. Para ello, abriremos una consola como root, e iremos al directorio en el que tengamos instalados los plugins de Mozilla Firefox. En mi caso, ese directorio es /usr/local/firefox3/plugins/, pero como he dicho, puede variar dependiendo de cada instalación y sistema. Si ya teníamos instalada una versión anterior del plugin de Java en nuestro sistema, tendremos que borrar primero el enlace simbólico al plugin de Java que nos aparece; para ello, usaremos el mandato siguiente:

rm -f libjavaplugin_oji.so

Ahora ya podemos crear el nuevo enlace simbólico al plugin, de forma que apunte al lugar adecuado, para ello, usaremos el mandato siguiente:

ln -s /usr/java/jre1.6.0_12/plugin/i386/ns7/libjavaplugin_oji.so libjavaplugin_oji.so

No vale copiar el archivo libjavaplugin_oji_so en el directorio /plugins/; es obligatorio usar un enlace simbólico, ya que de otro modo no funcionaría adecuadamente. Hay que señalar que versiones distintas del navegador pueden necesitar plugins distintos; la otra opción la encontraremos en /usr/java/jre1.6.0_12/plugin/i386/ns7-gcc29.

Para probar que funciona, cerraremos el navegador Firefox, arrancaremos como un usuario cualquiera y escribiremos about:plugins en la barra de navegación. Si nos movemos por la página que nos aparece en pantalla, nos debería aparece algo así:

Java(TM) Plug-in 1.6.0_12-b04

File name: libjavaplugin_oji.so
Java(TM) Plug-in 1.6.0_12

Alternativamente, podemos ir a la página de descarga de Java y hacer clic sobre el enlace que dice ¿Tengo Java? y luego, hacer clic sobre el botón "Verificar la versión de Java" que aparece en la pantalla . Debemos tener en cuenta que si usamos Noscript en nuestro navegador, antes de ello, debemos permitir la ejecución de Java para esa página en concreto. A los pocos segundos, nos debe aparecer en el navegador un mensaje similar al siguiente:

Versión de Java comprobada
Enhorabuena.
Tiene instalada la versión de Java recomendada (Version 6 Update 12).

Ahora vamos a configurar Java en el entorno de los usuarios. Primero, comprobaremos la versión de Java que aparece en cada entorno, para ello, abriremos una consola como un usuario normal del sistema y usaremos el mandato:

which java

En mi caso, me devuelve claramente que no tengo configurada adecuadamente la versión que se acaba de instalar y que apunta a una versión anterior:

/usr/java/jre1.6.0_07/bin/java

Para configurar el entorno de forma permanente para cada usuario, lo mejor es editar el archivo /home/usuario/.bash_profile. Hay que observar, que este es un archivo oculto, por lo que su nombre aparece con un punto delante. Para editarlo, usaremos el mandato siguiente, desde la consola que tenemos abierta para ese usuario, hay que recordar no hacerlo como root:

vi /home/usuario/.bash_profile

Después, pulsaremos la letra "i", para poder editar (en la parte inferior de la pantalla, nos aparecerá la palabra "INSERTAR" y editaremos el archivo, o añadiremos las líneas necesarias al final del mismo, para que muestren esto:

export PATH=/usr/java/jre1.6.0_12/bin:$PATH
JAVA_HOME="/usr/java/jre1.6.0_12/"
export JAVA_HOME

Para grabar las modificaciones pulsaremos la tecla Escape, después escribiremos dos puntos “:”, seguidos de las letras "w" y "q" y finalizaremos con la pulsación de la tecla Enter. Si el usuario se siente más cómodo con otro editor como Kedit, no hay problema en usarlo, reconozco que el editor "vi" no es apto para todos los públicos.

Lo que acabamos de decir habrá que hacerlo con cada usuario que desee usar Java desde su entorno y que tener cuidado al teclear o modificar estas líneas, ya que si nos equivocamos Java no le funcionará a ese usuario y por supuesto lo que he puesto son ejemplos; habrá que adaptar el contenido de estas líneas a la versión de Java que estemos instalando y al directorio de instalación de Java que estemos usando en nuestro sistema. Para que los cambios anteriores sean efectivos, será necesario cerrar la sesión de Kde o Gnome de ese usuario y volver a abrirla. Después de hacerlo, si abrimos otra consola como ese mismo usuario y volvemos a usar el mandato:

which java

Ahora nos deberá salir la trayectoria correcta a la versión de Java que hemos instalado:

/usr/java/jre1.6.0_12/bin/java

Si no nos sale, algo hemos hecho mal y debemos revisar todo cuidadosamente ya que es relativamente normal y sencillo equivocarse.

En este punto, ya podemos eliminar de /usr/java/ el directorio, o los directorios, correspondientes a versiones anteriores de Java, si es que tuviéramos alguna instalada. Para ello, podemos abrir una consola como root y usar el mandato siguiente desde dentro del directorio /usr/java, o el que corresponda para las instalaciones de Java en nuestro sistema:

rm -rf jre1.6.0_07/

Como en el caso anterior, debemos adaptar este mandato al directorio, o directorios, con instalaciones anteriores de Java que deseemos borrar de nuestro sistema.

"Copyleft 2009 Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved".

Comentarios

Selecciona arriba tu forma preferida de visualizar los comentarios y pulsa el botón para guardar tu elección para próximas visitas (sólo si eres usuario registrado).
Gargamel's picture

Java en hardy 64. El problema


Java en hardy 64.

El problema de la versión de 64 bits es que no nos funcionará con el navegador Mozilla Firefox, que es de 32 bits, el applet de Java. En mi caso, que uso una distribución Mandriva, suelo elegir la primera opción, es decir, RPM autoextraible de 32 bits.

.

Hola Fernando, sobre este comentario , uso Hardy 64 , una compilación de Firefox 32-64 y hay un enlace para el plugin de java en firefox en la carpeta /usr/java/jre1.6.0_12/lib/amd64.

Por lo menos al verificar en la pagina de SUN me dice que Esta instalada la ultima versión.

* la orden which java no me devuelve ningun valor
* en vi /home/miuser/.bash_profile ... solo me crea un archivo vacío.

Saludos y gracias por tu trabajo

Gargamel -> Vamos a Cambiar el Mundo

ID: 9841AC9E

Fernando Acero's picture

Gargamel gracias por la información


Hola Gargamel:

Gracias por la información sobre el plugin para Firefox de 64 bits. El caso es que en la página de descarga de Java pone esto y dicha información me ha llevado al huerto:

* Utilice la versión de 32 bits para el applet de Java...

Sería bueno que el Administrador añadiera esta información como una actualización al artículo para futuras referencias. Desgraciadamente no tengo experiencia con sistemas de 64 bits y no lo he podido probar.

Respecto a la orden which java, debería entregar la trayectoria completa a java, si no la muestra, es que no está definida adecuadamente la variable de entorno para Java, o dicho de otro modo, los programas Java no encontrarán las librerías y todo lo que necesitan para funcionar.

Prueba a escribir manualmente:

export PATH=/usr/java/jre1.6.0_12/bin:$PATH
JAVA_HOME="/usr/java/jre1.6.0_12/"
export JAVA_HOME

Y luego vuelve a probar con which java, a ver lo que te sale. Supongo que ahora sí te saldrá la trayectoria adecuada.

El problema es que estas trayectorias que has introducido manualmente no son permanentes y se perderán cuando vuelvas a iniciar el sistema o cambies de usuario. Por ello, yo las he metido en el archivo /home/miuser/.bash_profile. Tendrás que buscar la forma de hacerlas permanentes en tu sistema introduciendo estas líneas en el archivo de configuración adecuado.

Un saludo, Fernando Acero

"Copyleft Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved. Quotation is allowed."

anónimo's picture

¿Por qué reinstalar Java?


Por lo que he visto, PortableSigner funciona con cualquier versión de Java modernita.

Fernando Acero's picture

Por supuesto que no es necesaerio, aunque sí recomendable


En el artículo he querido tratar las dos opciones, por supuesto, no es necesario actualizar Java si ya tienes uno instalado y funciona.

Un saludo, Fernando Acero

"Copyleft Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved. Quotation is allowed."

primolarry's picture

Y para verificar?


Fernando, el programa tiene muy buena pinta, he conseguido firmar un par de pdfs pero.. ¿conoces algún programa libre con el que verificar un pdf firmado?

Gracias, un saludo

Fernando Acero's picture

En teoría....


Hola:

En teoría con la librería iText para manipular documentos en PDF deberías poder hacerlo, tiene licencia LGPL.

http://itextpdf.sourceforge.net/howtosign.html

De forma rápida y sencilla, mucho me temo que lo mejor que se puede hacer es recurrir al omnipresente Acrobat Reader.

Un saludo, Fernando Acero

"Copyleft Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved. Quotation is allowed."

anónimo's picture

Pues qué bien


Tanto código libre para tener que usar un tutorial para instalar java y luego recurrir a Acrobat Reader??

Fernando Acero's picture

Para que veas lo bueno que es el SL y su comunidad.


Estimado anónimo, no te contesté en su momento, sin hacer unas pocas consultas y unas pocas sugerencias.

He de decir que Kpdf, aunque no verifica las firmas, sí las visualiza cuando los documentos están firmados con sello visible. Pero puesto al habla con los responsables de un importante proyecto de SL para la firma de documentos PDF, me han comentado que para la siguiente versión está previsto que se puedan verificar los documentos firmados desde la misma aplicación, sin necesidad de recurrir al Acroread. Lo que espero que se haga realidad en breve. Para que luego digan que el SL no es genial.

Un saludo, Fernando Acero

"Copyleft Fernando Acero Martí­n. Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved. Quotation is allowed."

anónimo's picture

sinadura


Existe también otra herramienta de software libre desarrollada en Euskadi por ESLE (la asociación de empresas de Software Libre de Euskadi) para firmar documentos PDF.

Sinadura, actualmente dispone de una versión estable y tiene previsto un roadmap durante el 2009en el que se contempla la mejora y evolución del código existente e implementación de nuevas funcionalidades.

http://www.sinadura.net

Os animamos a colaborar con ella ;-)

anónimo's picture

He intentado usar sinadura


He intentado usar sinadura en una plataforma hardy 64.

Me reporta error y en la pagina el sitio para reportar error no funciona.