JAVA Implementación de referencia con Servicio de Firma con Cédula de identidad electrónica - wiki - Seguridad
Wiki
JAVA Implementación de referencia con Servicio de Firma con Cédula de identidad electrónica
Código fuente de la implementación de referencia: https://github.com/agesic-eid/esign
Prerequisitos para la maqueta:
- Instalar maven
- Instalar BouncyCastle Provider
- Bajar la última versión del Provider v1.57 actualemente (https://www.bouncycastle.org/download/bcprov-ext-jdk15on-157.jar)
- Editar archivo $JAVA_HOME/jre/lib/security/java.security, en la lista de security providers agregar bouncycastle con la siguiente linea
- security.provider.N=org.bouncycastle.jce.provider.BouncyCastleProvider (siendo N el último número de la lista +1)
- Copiar la librería BouncyCastle a la carpeta $JAVA_HOME/jre/lib/ext
Clonar el repositorio del git, ejecutar el comando mvn build
Se descargarán todas las dependencias necesarias para que el proyecto funcione.
Luego se deberán editar los archivos de configuración: application.properties y application-{ambientes}.properties
application.properties
Se pueden configurar el puerto y contexto en el cuál correrá la aplicación.
También se puede cambiar el nivel de logging y el tamaño de archivos que se permiten subir para firmar.
application-{ambiente}.properties
Estos archivos están pensados para que cada ambiente tenga su configuración particular. Para el caso de la maqueta editar únicamente el ambiente dev ya que es el que corre por defecto. (esto está definido en el archivo pom.xml)
Integración con DSS de AGESIC
Para poder utilizar el DSS es necesario darse de alta como RP (Relaying Party). Para esto hay que completar un formulario completando fundamentalmente lo siguiente:
- Nombre de servicio - este campo se relaciona con el valor "dss.service.name" en el archivo application.properties
- URL de respuesta - este campo se relaciona con el valor "dss.response.url" en el archivo applicacion.properties
- También se debe adjuntar un certificado público del firmante para poder validar el request que se envía al DSS para firmar, por otro lado se recibirá el certificado público del DSS de AGESIC para poder validar el response del DSS firmado
Se deben editar las rutas donde se tiene el keystore para firmar el pedido al DSS y el keystore que valida la respuesta del DSS. Para crear un keystore se puede utilizar el comando openssl o usar alguna aplicación como por ejemplo keystore explorer