Skip to content

alexjcm/firmadigital-servicio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 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

  • Open JDK 11

  • WildFly Application Server 26.1.1.- Para desplegar la aplicación se necesita un servidor de aplicaciones Java EE 11 disponible en wildfly.org

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

  • Postgresql 12.6 o superior

  • Proyecto firmadigital-libreria compilado

Instalación

Para compilar se debe ejecutar el siguiente comando:

mvn clean package

Esto produce el WAR en target/fservicio.war

Despliegue

Balanceo de carga

Se debe generar una llave a través de la clase `token/jwt/ServicioTokenJwt.java y el resultado configurarlo dentro del archivo de configuración Wildfly en la siguiente sección

</extensions>
<system-properties>
	<property name="jwt.key" value="value="tYdX9if......=="/>
</system-properties>
<management>

Se debe comentar el siguiente código dentro de la clase crl/ServicioDescargaCrl.java para generar el compilado que no realice descargas de CRL

@PostConstruct
public void init() {
	crearTablaSiNoExiste();
	importarCrls();
}

Después de este proceso, se descomentará y se generará otro compilado para el servidor que realice las descargas de CRL

Desarrollo

Para facilitar el desarrollo se puede utilizar Docker. Se puede instalar las dependencias de infraestructura, como la base de datos, utilizando contenedores. 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

Se necesita un registro en la tabla "sistema" para poder probar, para lo cual primero generamos un hash SHA256 utilizando cualquiera de las siguientes dos opciones:

Opción 1:

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-256 del API-KEY, a insertar en la base de datos, es $API_KEY_HASH"

Opción 2:

En la tabla "sistema" de la base de datos se debería insertar el hash generado (Para el ambiente de DESARROLLO o PRODUCCION):

# Para crear:
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');

# Para actualizar:
UPDATE sistema
SET url = 'http://localhost:7776/recepcion/receiveDocument/saveSignedFile',
  apikey = '$API_KEY_HASH',
  apikeyrest = '$API_KEY_HASH',
  descripcion = 'Módulo de certificación electrónica',
  nombre = 'mce'
WHERE id = 1;

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

Ejecutar 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

Versiones

Usamos SemVer para versionar.

Documentación

Autores

Licencia

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