Como funciona Firma Electrónica Quipux

De Quipux

Contenido

Esquema General de la Firma Electrónica en Quipux

EsquemaFirma.png 

En la figura anterior se puede observar los elementos que deben configurarse para que funcione la firma electrónica en Quipux. En esta guía explica la configuración de los mismos.

Diagrama de la Firma No 1. Relación con los servicios Web utilizados

FirmaQuipuxNivel1.png

Este es el esquema de firma digital que utiliza el Quipux en estos momentos. Por un lado en la parte izquierda esta el Quipux (Servidor Institución) y en la parte derecha el Servicio de Firma. Se muestran también los servicios web que participan en el proceso de firma.

Diagrama No 2. Relación de la Firma en Quipux con las interfaces de Usuario

FirmaQuipux2.png

En este diagrama se observan las interfaces de usuario y su relación con los sistemas que intervienen en la firma. Cuando el usuario presiona aceptar en Envío de documentos Electrónicos, se dispara el applet por un lado (applet.php) esto dentro del sistema de firma. Y por el otro se invoca al servicio web wsFirma.php.

Cuando el usuario presiona firmar dentro del applet se llama a un servicio web en tomcat wsappletfirmadigital64 (responsable de traer los archivos para que el usuario los firme).

Cuando termina de firmar se llama a la pantalla confirmar.php dentro del servicio de firma y al cerrar esta pantalla se llama al servicio ws_firma_digital.php, para enviar los archivos firmados al Quipux.

En el caso de la verificación cuando se presiona verificar un documento, se llama nuevamente al servicio wsappletfirmadigital64, quien recibe como parámetro un documento y verifica si se encuentra válido y fue correctamente firmado.

En resumen estos son los servicios web que participan en la firma : wsFirma.php (php dentro del servidor firma) wsAppletFirmaDigital64 (para uso del applet) ws_firma_digital (Dentro del Quipux)


Requisitos para que funcione la firma electrónica en Quipux

  • Apache ( Desde la versión 2 en adelante )
  • BD de datos en Postgres ( Desde la versión 8.2 en Adelante )
  • Apache Tomcat ( Pueden usarse versiones desde la 6 en adelante)
  • Servidor NTP
  • Java ( Desde la 1.6 en Adelante. )


Se puede obtener el código fuente de la firma electrónica en Quipux de 2 formas, descargándolo [1] en formato tar.gz [2] , o via subversión dentro del repositorio de Quipux [3] (si utiliza esta opción y necesita ayuda, mire en los foros [4] de la Comunidad Quipux )

Dentro de la carpeta de firma se encuentran los siguientes archivos:

/firma/bdd
/firma/instalacion   
/firma/instalacion/bdd
/firma/instalacion/bdd/BDD_certificados.backup  Este archivo ya no es necesario
/firma/instalacion/bdd/BDD_firma.backup
/firma/instalacion/tomcat
/firma/instalacion/tomcat/postgresql-8.3-603.jdbc3.jar
/firma/instalacion/tomcat/WsAppletFirmaDigital64.war
/firma/instalacion/tomcat/wsFirmaDigitalQuipux_1_3.war
/firma/lib
/firma/propiedades
/firma/verificar_firma
/firma/applet.php
 /firma/config2.php
/firma/confirmar.php
/firma/firma2.wsdl
/firma/funciones.php
/firma/logo.png
 /firma/proyFirma_2.jar
/firma/spinner.gif
/firma/spinner_16.gif
/firma/ws_cliente_firma.php
/firma/wsFirma.php


Configurando el Servidor Apache en Linux

En esta guía suponemos que se va ha instalar el código fuente de Quipux, conjuntamente con el de firma, dentro del mismo servidor Apache. Si ese es el caso, copiar el contenido de los archivos de firma al directorio apache donde esta instalado quipux

Dentro del Código de Quipux buscamos el archivo config.php y editamos la linea donde se encuentra declarada la variable $servidor_firma debemos agregar la dirección web donde esta ejecutándose el código firma. Por ejemplo, si la dirección URL donde esta nuestro sitio web funcionando y donde esta copiado el código que ejecuta el applet de firma es http://quipux.info/firma es la que debemos poner, en la siguiente línea

Ubicamos la linea dentro del archivo config.php

$servidor_firma = "http://nombre_del_servidor_de_firma";

Modificamos de modo que esta variable apunte al servidor de firma

$servidor_firma = "http://quipux.info/firma";

Nos ubicamos dentro del código de firma , y ejecutamos lo siguiente:

cp config2.php config.php

Modificamos el archivo config.php.


<?php
/////////	CONFIGURACION DE LA BASE DE DATOS	///////////////

Estos parametros deben ser llenados en base a la información de la siguiente Sección Configuración de la Base de Datos para Firma

$bdd_servidor = "127.0.0.1";
$bdd_puerto = "5432";
$bdd_nombre = "firma";
$bdd_usuario = "postgres";
$bdd_clave = "postgres";
$bdd_debug = false; //guarda en la tabla log_debug todos los queries ejecutados
$bdd_email_admin = "email@administrador.com";

Llenar la misma información que puso en el config.php del Código de Quipux

$servidor_nombre = "http://nombre_del_servidor_de_firma";

La siguiente línea es para configurar donde se encuentra funcionando el servidor tomcat que maneja las peticiones de firma. En este caso para verificar los archivos firmados.

// Verificacion de firma
$servidor_verifica_firma_cms = "http://SERVIDOR_TOMCAT_FIRMA/wsFirmaDigitalQuipux_1_3";

?>

Nos ubicamos dentro del código de firma , y ejecutamos lo siguiente:

cp firma2.wsdl firma.wsdl

Modificar el archivo firma.wsdl al final buscar la referencia a location

 <service name="soapapifirmaService">
   <port name="soapapifirmaPort" binding="typens:soapapifirmaBinding">
   <soap:address location="http://SERVIDOR_FIRMA/wsFirma.php"/>
   </port>
 </service>

Cambiar la información, debe tener el mismo nombre que se puso en la variable $servidor_nombre del archivo config.php del codigo de firma. Esta es la dirección al WebService que se encarga de procesar las peticiones de verificación y enviar los archivos firmados a la base de datos de firma.

Ejemplo <soap:address location="http://nombre_del_servidor_de_firma/wsFirma.php"/>

Configuración de la Base de Datos para Firma

Crear en postgres la base de datos firma

CREATE DATABASE firma with owner=postgres encoding='UTF8'; 

Restaurar el backup ( este archivo se encuentra dentro del directorio de firma /firma/instalacion/bdd/BDD_firma.backup ) en la base nueva

 pg_restore -i -h localhost -p 5432 -U postgres -d firma -v BDD_firma.backup 

Cuando se configura el tomcat y el directorio apache firma, debe tener en cuenta el usuario y la clave de la base de datos. Si usa postgres como usuario de la base de datos, la siguiente línea es útil para asignar una clave al usuario postgres

passwd postgres 

En la tabla sistema de la Base de Datos de firma debe llenarse el campo nombre y dir_firma. En el campo nombre debe ingresar la dirección URL del servidor Quipux. El nombre que ingrese en este campo esta relacionado con la variable $nombre_servidor del archivo config.php dentro del Código de Quipux. En el campo dir_firma debe ingresar la información de la ruta del Web Service de Interconexión ( Dentro del Código de Quipux se encuentra un directorio llamado interconexion. Este Web Service se encarga de enviar el archivo firmado a la base de datos ).


 Ejemplos   nombre  http://DIRECCION_URL_QUIPUX   
           dir_firma  http://DIRECCION_URL_QUIPUX/interconexion/ws_firma_digital.php?wsdl


Configurando el Servidor Apache Tomcat en Linux

Se descarga tomcat [5] y se lo descomprime ( es necesario tener instalado java (Se ha probado con éxito con la versión para linux de java sun-java6-jdk) instalado previamente). Una vez hecho esto se observan algunos directorios como los siguientes

-bin
-conf
-lib
-logs
-temp
-webapps

Dentro del directorio bin se encuentra el archivo catalina.sh. Agregar las siguientes lineas al comienzo del archivo. Se necesitan para indicarle a tomcat donde esta la maquina virtual de java, parámetros de memoria y donde esta instalado el tomcat.

JAVA_HOME=/usr/java/jdk1.6.0_06/ 
CATALINA_OPTS="-Xms256m -Xmx512m" 
CATALINA_HOME=/DIRECTORIO_INSTALACION_TOMCAT6/apache-tomcat-6.0.16.5/

Dentro del código fuente de Quipux [6], se encuentra el archivo firma.zip (en la versión tar.gz[7]) o dentro del repositorio svn Quipux-Firma-Digital [8]

Dentro del directorio firma buscamos los subdirectorios instalacion\tomcat, allí deben encontrarse los siguientes archivos:

postgresql-8.3-603.jdbc3.jar
WsAppletFirmaDigital64.war
wsFirmaDigitalQuipux_1_3.war

El archivo postgresql-8.3-603.jdbc3.jar debe copiarse /DIRECTORIO_INSTALACION_TOMCAT6/apache-tomcat-6.0.16.8/lib/

Los siguientes cambios se necesitan hacerlos en los archivos .war. Es necesario editarlos . Descomprima el archivo WsAppletFirmaDigital64.war. Ejecute los siguientes comandos.

 mkdir directorioWar
 cp WsAppletFirmaDigital64.war directorioWar
 cd directorioWar
 jar -xvf WsAppletFirmaDigital64.war   (dentro de directorioWar ejecute el comando)

Dentro de directorioWar se crean una lista de directorios y archivos es necesario editar los siguientes:

  META-INF/context.xml
  WEB-INF/propiedades/parametros.properties

En archivo parametros.properties editar la información

 bd=firma       #El nombre de la Base de Datos que se creo anteriormente 
 bd_cert=NOMBRE_BDD_CERTIFICADOS    #Este linea no es necesaria
 servidor_tiempo=192.168.20.1     #Ponga aquí la dirección del servidor NTP que este usando
 direccionLDAP=ldap://ldap.bce.ec/o=BCE,c=EC    #Conexión con el Banco Central para verificar revocados (Esta línea ya no es útil )

En el archivo context.xml edite la información referente a la Base de Datos firma configurada en la sección anterior.

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/WsAppletFirmaDigital64">
 <Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="30" maxIdle="1000" 
  maxWait="100" name="jdbc/NOMBRE_BDD_FIRMA" password="PASSWORD_DBB_FIRMA" removeAbandoned="true" 
  removeAbandonedTimeout="15" type="javax.sql.DataSource" url="jdbc:postgresql://SERVIDOR_BDD_FIRMA:PUERTO_BDD_FIRMA/NOMBRE_BDD_FIRMA" username="USUARIO_BDD_FIRMA"/>
  Ejemplo jdbc:postgresql://IP_SERVIDOR_BD:5432/firma
   La siguiente información sobre BDD_CERTIFICADOS ya no es util ( no es necesario editar )
  <Resource auth="Container" driverClassName="org.postgresql.Driver" maxActive="30" maxIdle="1000" 
  maxWait="100" name="jdbc/NOMBRE_BDD_CERTIFICADOS" password="PASSWORD_BDD_CERTIFICADOS" removeAbandoned="true" 
  removeAbandonedTimeout="15" type="javax.sql.DataSource" url="jdbc:postgresql://SERVIDOR_BDD_CERTIFICADOS:PUERTO_BDD_CERTIFICADOS/NOMBRE_BDD_CERTIFICADOS"  username="USUARIO_BDD_CERTIFICADOS"/>
</Context>


Una vez editados los cambios volver a comprimir el archivo war.

cd directorioWar
rm WsAppletFirmaDigital64.war  
jar -cvf WsAppletFirmaDigital64.war *

Luego vuelva a copiar los archivos editados .war en la siguiente ubicación: /DIRECTORIO_INSTALACION_TOMCAT6/apache-tomcat-6.0.16.8/webapps, si esta configurado tomcat automaticamente se desplegaran. Cuando se despliegan los archivos war ( mirar dentro del directorio webapps) se observan una serie de directorios, con los nombres de los archivos enunciados arriba.

No es necesario modificar el archivo wsFirmaDigitalQuipux_1_3.war, se debe copiarlo a la siguiente ubicación: /DIRECTORIO_INSTALACION_TOMCAT6/apache-tomcat-6.0.16.8/webapps

Si necesita administración web del tomcat es necesario agregar al archivo tomcat-users.xml ( dentro del directorio /DIRECTORIO_INSTALACION_TOMCAT6/apache-tomcat-6.0.16.8/conf/ ) lo siguiente:

 <tomcat-users> 
  <role rolename="manager"/> 
   <role rolename="tomcat"/> 
   <role rolename="role1"/> 
   <user username="tomcat" password="xxxx" roles="tomcat,role1,manager"/> 
   <user username="both" password="tomcat" roles="tomcat,role1"/> 
   <user username="role1" password="tomcat" roles="role1"/> 
 </tomcat-users>
Herramientas personales