Skip to content

alexjcm/firmadigital-servicio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FirmaEC: Servicio

License: AGPL v3

FirmaEC Servicio es una plataforma para recibir documentos desde sistemas transversales, para luego ser firmados digitalmente del lado del cliente.

Introducción

Los siguientes pasos le permitirán obtener una copia del proyecto para correrla en la máquina local para propósitos de desarrollo y pruebas.

Pre-requisitos

  • JDK 11

  • WildFly 33.- Para desplegar la aplicación se necesita un servidor de aplicaciones Jakarta EE 10 disponible en wildfly.org

  • Maven 3.- Para compilar y empaquetar se utiliza Apache Maven.

  • Postgresql 12.6 o superior

  • Librería firmadigital-libreria compilada para realizar las operaciones de firma digital.

  • Servicio web certificacion-electronica-documentos para recepción temporal de documentos firmados.

Configuración inicial

Configurar base de datos

Opción 1:

Se puede utilizar Docker. Por ejemplo, para ejecutar un servidor PostgreSQL 12, se puede ejecutar:

docker run -d --name postgresql_firmadigital -e POSTGRESQL_USER=firmadigital -e POSTGRESQL_PASSWORD=firmadigital -e POSTGRESQL_DATABASE=firmadigital -p 5432:5432 centos/postgresql-12-centos7

Opción 2:

Instalar Postgresql localmente.

Configurar Wildflty

  1. Descargar driver de PostgreSQL:

sudo wget https://jdbc.postgresql.org/download/postgresql-42.2.13.jar
  1. Generar una llave JWT ejecutando la clase token/jwt/ServicioTokenJwt.java, y el resultado configurarlo en el archivo /opt/wildfly/standalone/configuration/standalone.xml en la siguiente sección:

</extensions>
<system-properties>
<property name="jwt.key" value="value="tYdX9if......=="/>
</system-properties>
<management>
  1. Iniciar el servidor Wildfly:

/opt/wildfly/bin/standalone.sh
  1. Configurar datasource

Para configurar el DataSource de PostgreSQL que apunta al contenedor, en WildFly ejecutar el siguiente script para JBoss CLI:

Ejecutar /opt/wildfly/bin/jboss-cli.sh -c y luego el siguiente script:

batch

module add --name=org.postgresql --resources=/home/Downloads/postgresql-42.2.13.jar --dependencies=javax.api,javax.transaction.api

/subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql,driver-module-name=org.postgresql,driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)

data-source add --name=FirmaDigitalDS --jndi-name=java:/FirmaDigitalDS --driver-name=postgresql --connection-url=jdbc:postgresql://localhost:5432/firmadigital --user-name=firmadigital --password=firmadigital --valid-connection-checker-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLValidConnectionChecker --exception-sorter-class-name=org.jboss.jca.adapters.jdbc.extensions.postgres.PostgreSQLExceptionSorter

run-batch

Despliegue

Compilar ejecutando el siguiente comando:

mvn clean package

Esto produce el WAR en target/servicio.war el cual debe ser copiado en el directorio /opt/wildfly/standalone/deployments/

Al desplegar dicho archivo se crearán las tablas necesarias automaticamente.

Creación de apiKey

  1. Generar un hash SHA-256 utilizando cualquiera de las siguientes opciones:

Opción 1:

MacOS:

export API_KEY=$(openssl rand -base64 32 | shasum -a 256 | cut -d' ' -f1)
echo "El API-KEY a utilizar es: $API_KEY"
export API_KEY_HASH=$(echo -n $API_KEY | shasum -a 256 | cut -d' ' -f1)
echo "El hash SHA-256 del API-KEY a insertar en la base de datos es: $API_KEY_HASH"

Linux:

export API_KEY=$(pwgen 32 -1 | sha256sum | cut -d' ' -f1)
echo "El API-KEY a utilizar es: $API_KEY"
export API_KEY_HASH=$(echo -n $API_KEY | sha256sum | cut -d' ' -f1)
echo "El hash SHA-256 del API-KEY a insertar en la base de datos es: $API_KEY_HASH"

Opción 2:

  1. Guardar apiKey

En la tabla "sistema" de la base de datos de firmadigital insertar el hash SHA-256 generado, en el campo url se debe insertar el endpoint a utilizar para receptar el documento firmado (certificacion-electronica-documentos)

INSERT INTO sistema(id, url, apikey, apikeyrest, descripcion, nombre)
VALUES (1, 'http://localhost:7776/recepcion/receiveDocument/saveSignedFile', '$API_KEY_HASH', '$API_KEY_HASH', 'Módulo de certificación electrónica', 'mce');

Versiones

Usamos SemVer para versionar.

Documentación

Cambios

Se ha realizado pequeños ajustes en las siguientes clases java del proyecto: - ServicioDescargaCrl - TokenTimeout - ServicioDocumento - ServicioEliminacionDocumento - ServicioSistemaTransversal

Autores

Licencia

Este proyecto está licenciado bajo la licencia AGPL v3. Revise el archivo LICENSE para más detalles.