Viafirma Platform

Configuración

Ficheros de configuración

El war de viafirma platform se entrega sin configuración, y por defecto, espera los ficheros de configuración en los siguientes paths:

Configuración de platform

/home/viafirma/viafirma_config/viafirmaConfig.properties

Configuración de EHCACHE

/home/viafirma/viafirma_config/ehcache.xml

Configuración de log4java

/home/viafirma/log4j.properties

Cambiar la ubicación de los ficheros de configuración

Para cambiar el path en el que war de viafirma espera los ficheros de configuración, los pasos a realizar son los siguientes:

Opción 1: antes del primer despliegue

  • Descomprimir el empaquetado (.war o .ear).
  • Modificar /WEB-INF/classes/viafirmaConfig.properties.

Opción 2: tras el primer despliegue

  • Parar el contenedor de aplicaciones.
  • Modificar /WEB-INF/classes/viafirmaConfig.properties.
  • Arrancar el contenedor de aplicaciones.

Parámetros de Configuración

En el kit de instalación se hacen entrega de varios ficheros de configuración de ejemplo. Con configuración mínima de uso, y con la lista completa de parámetros disponibles para la versión distribuida.

Descripción de parámetros

Configuración Básica

Param Descripción
VIAFIRMA_CONFIGURATION_PATH path en el que se encuentran los ficheros de configuración. Por ejemplo, /home/viafirma/viafirma_config
URL_APLICACION URL desde la que será visible el servicio de viafirma platform. Por ejemplo http://192.168.10.20:8080/viafirma/
CONFIG_VIAFIRMA_CLIENT config del cliente de viafirma que se usa sólo para la aplicación de ejemplo disponible en /viafirma, por ejemplo: http://192.168.10.20:8080/viafirma;http://192.168.10.20:8080/viafirma;;
PATH_CUSTODIA PATH de custodia en caso de haber seleccionado la implementación basada en filesystem. Por ejemplo, /home/viafirma/storage/custody

Configuración de Custodia

Param Descripción
REPOSITORIO_IMPL Si se omite este parámetro, la implementación por defecto será sobre filesystem. Para cambiar la custodia por defecto y definir una custodia basada en oracle o en caché, los valores posible serán: org.viafirma.util.OracleManagerFile y org.viafirma.util.CacheManagerFile respectivamente.
oracle_manager.default.datasourcename En caso de haber definido la custodia sobre oracle, en este parámetro definiremos el datasource name, por ejemplo: java:comp/env/jdbc/default_manager. El resource de conexión a la DB Oracle se deberá definir en el contexto o en la configuración específica de cada contenedor JEE según cada caso. Para poder hacer uso de la custodia consultar el capítulo 8.1 Custodia sobre Oracle en el ANEXO de esta documentación.
cache_manager.default.manager En caso de haber definido la custodia sobre CACHE este parámetro lo definiremos siempre con el valor cache. El tiempo en que se retienen los documentos en la cache de custodia es configurable mediante el fichero de configuración de ehcache, por defecto se retiene durante 25 minutos.
CSV_PREFIX En caso de haber definido este parámetro, el valor informado se incorporará delante de todos los ids de firma entregados por la plataforma seguidos por la marca 'OC-', por ejemplo: si CSV_PREFIX=USH, se entregarían ids similares al siguiente: USHOC-K6YO-AHOF-LNBA-1475-1380-5532-7. Este parámetro puede ser usado como parámetro de contexto o de petición como PolicyParam
CSV_MINIMUM_SIZE En caso de haber definido este parámetro, el valor informado (tipo int) se tomará para que los códigos de firma entregados por la plataforma no tengan menos que los carácteres indicados en este parámetro, en todo caso, podrían tener más carácteres de los indicados en el parámetro. Este parámetro puede ser usado como parámetro de contexto o de petición como PolicyParam

Configuración de Viafirma Manager

Esta configuración solo será necesaria en el caso que Viafirma Platforn haga uso de la aplicación Viafirma Manager.

Param Descripción
AUDITORY_REGISTER_IMPL Tipo de implementación utilizada para la auditoría de operaciones. Valor actualmente soportado: org.viafirma.util.security.AuditorySimpleFileRegisterLog
AUDITORY_REGISTER_DIRECTORY_LOG PATH donde se persistirán los logs de auditoría que serán procesados por viafirma manager. Por ejemplo: /home/viafirma/storage/auditory/auditory_platform/
AUDITORY_REGISTER_URL URL de viafirma manager asociado, por ejemplo: http://192.168.10.20:8080/viafirmaManager
ENABLE_DEFAULT_APP Activa/desactiva aplicacion por defecto, si app por defecto está activa no se contemplan restricciones de aplicaciones. Sólo aplica si viafirma platform está integrador con viafirma manager. Valores permitidos true y false.
AUDITORY_REGISTER_LOG_NAME Nombre alternativo del fichero de logs de auditoría

Configuración de CA´s y Certificados

Param Descripción
VALIDACION_ONLINE Activa o desactiva la validación online de los certificados digitales. Valores permitidos: true y false.
PARAM_CERTIFICATE_VALIDATION_CLASS Se usa para indicar un plugin de validación de certificados externo. Valores válidos: Para @firma: org.viafirma.nucleo.validacion.AfirmaValidationHandler Para PSIS: org.viafirma.nucleo.validacion.PsisValidationHandler
CUSTOM_SIGNATURE_UPGRADER_CLASS Se usa para indicar un plugin de upgrade de firma externo a la plataforma. Valores válidos: Para @firma: org.viafirma.plugin.signatureUpgrader.AfirmaSignatureUpgrader
PARAM_PSIS_VALIDATOR_URL En el caso de utilizar el validador de PSIS, se indicará en este parámetro la url del servicio de validación de PSIS
PARAM_AFIRMA_VALIDATOR_URL En el caso de utilizar el validador de @firma, se indicará en este parámetro la url del servicio de validación de @firma
KEYSTORE_PATH Configuración por defecto del keystore; si esta variable no se indica se usará el path por defecto de la JVM. Por ejemplo /home/viafirma/viafirma_config/cacerts
KEYSTORE_PASS Si se ha definido el parámetro KEYSTORE_PATH, se permite indicar cual es su contraseña mediante este parámetro.
IS_FIRST_OCSP Indica si la validación de certificados se hace por OCSP antes que por CRL. Valores permitidos: true y false
PATH_XML_EXTRA Directorio para xml's de soporte externo a certificados, por ejemplo, /home/viafirma/viafirma_config/xml_supports.
Nota: Si el equipo técnico de viafirma hace entrega de ficheros .groovy, éstos deben ser copiados al path "PATH_XML_EXTRA"/caSupports. Estos soportes son prioritarios sobre los de groovy
PATH_GROOVY Directorio para groovy's de soporte externo a CA´s, por ejemplo, /home/viafirma/viafirma_config/groovy.
Nota: Si el equipo técnico de viafirma hace entrega de ficheros .groovy, éstos deben ser copiados al path "PATH_GROOVY"/caSupports.
DEFAULT_CA Activa/desactiva la carga de CA por defecto de viafirma (Recomendado 'false' para fuera de España). Valores permitidos: true y false
DISCARD_EXPIRED_CERTIFICATES Permite definir si se quieren descartar los certificados caducados para que nos se muestren en los listados de certificados expuestos por los clientes Applet, JNLP y aplicaciones nativas Windows. Valores permitidos: true y false, donde el valor 'true' indica que se descarten dichos certificados y no se muestren.
DISABLE_CRL_CACHE Indica si se habilita/deshabilita la caché de CRL, por defecto: 'false' (Nótese que el valor 'false' indica que la caché de CRLs estará activa). Valores permitidos: true y false
TSL_CODE Se debe indicar el código del país (ES, FR o EU ...) al que corresponda la URL que se configurará en el parámetro TSL_URL
TSL_URL Url donde se encuentre publicado el XML de la lista TSL, por ejemplo, para europa: https://ec.europa.eu/information_society/policy/esignature/trusted-list/tl-mp.xml o para España: https://sede.minetur.gob.es/Prestadores/TSL/TSL.xml. Si este parámetro y TSL_CODE aparecen todas las noches se actualizarán los keystores con las listas TSL dadas, además se realizará un mantenimiento de los mismos keystores para eliminar las claves públicas expiradas o duplicadas
TSL_TERRITORIES Este parámetro permite filtrar de que países cargar los certificados cuando la TSL seleccionada contiene varios países, por ejemplo, al seleccionar la TSL Europea, es posible mediante este parámetro filtrar por países indicando los códigos de país que se quieran cargar separados por punto y coma, por ejemplo: ES;FR;DE
DO_KEYSTORE_MAINTENANCE Este parámetro, si aparece y vale true permite indicar a la plataforma que durante las noches realice un mantenimiento preventivo de los keystores configurados para eliminar aqueelas claves públicas caducadas o duplicadas.
URL_SSL_AUTH_SERVICE Este parámetro opcional permite definir la URL de un servicio (WAR aparte) de autenticación con certificado de cliente vía SSL, habilitando así este método de autenticación. Disponible desde la versión 3.16.
CASUPPORT_SUSCRIPTION_ENABLED Este parámetro opcional, si aparece y vale true permite suscribir la instalación de viafirma platform a un servicio de actualización automática de soporte de CAs (jerarquía de confianza y ficheros groovy). Disponible desde la versión 3.17.
CASUPPORT_SUSCRIPTION_MODE Este parámetro puede tomar valores offline y online (valor por defecto). Si está configurado en modo offline la plataforma no intenta actualizar la configuración de soporte de CAs, debiendo realizarse manualmente.
CASUPPORT_SUSCRIPTION_STORAGE_FOLDER Este parámetro es obligatorio y especifica una ruta física donde Platform descargará o almacenará la configuración de soporte de CAs a la que se haya suscrito.
CASUPPORT_SUSCRIPTION_CONTENT Este parámetro opcional indica las ramas a las que se suscribe (véase https://casupport.viafirma.com). Por defecto vale /prod
CASUPPORT_SUSCRIPTION_PERIOD Este parámetro opcional indica los minutos que se espera entre cada comprobación de información de la suscripción a CA Support. Si toma un valor superior a 60, deberá ser múltiplo de 60 (por ejemplo, para lanzarlo cada 3 horas, se pondría un valor de 180). Aunque se aceptan, no se recomiendan valores inferiores a 60 minutos.

Configuración de Servicio de Sellado de Tiempo

Param Descripción
TSA_URL URL para el servicio de estampa de tiempo, por ejemplo, http://testtsa.avansi.com.do
TSA_CREDENTIALS Se usa en caso de que el servicio de la TSA esté securizado mediante auteticación básica. El formato es user;password
TSA_POLICY_ID (Opcional) Se usa en caso de que el servicio de la TSA requiera que se informe un OID de política en las peticiones que se le realicen.
TSA_CERTIFICATE_AUTHENTICATION_MODE (Opcional) Se usa para definir el tipo de autenticación a realizar en la TSA. Valores permitidos: TLS, CMS_ENCAPSULATION. Valor por defecto: CMS_ENCAPSULATION
TSA_CERTIFICATE_CREDENTIALS Se usa en caso de que el servicio de la TSA esté securizado mediante auteticación por certificado. El formato es alias;password, donde se especifica el alias y contraseña del certificado
TSA_PROXY_ACTIVE Prámetro que indica si se usará proxy para la conexión con TSA. El valor por defecto es true

Configuración Seguridad

Param Descripción
ALLOWED Securización de las conexiones WS entrantes. Indica aquellas IPs autorizadas. Permite el uso de máscaras, por ejemplo 10.69.44.,127.0.0.1,192.168.10.
CACHE_KEY En caso de cifrar la caché, este parámetro indica la palabra de paso, por ejemplo: 12345678
PARAMS_CIPHERED Permite cifrar valores de la configuración para evitar que se distribuyan en claro. Para cifrar, indicar como valor true, y afecta a los parámetros CACHE_KEY y TSA_CREDENTIALS. Cuando está presente Viafirma Manager este parámetro debe ponerse a true, y CACHE_KEY debe estar cifrado y no en claro.
FORCE_AUTH_PASSWORD Activa/desactiva la petición de pass en autenticaciones con smartcards. Valores permitidos: true y false. Si este parámetro no existe o vale false, la solicitud de PIN para el acceso a smartcards dependerá de la política de seguridad gesitonada por el sistema operativa, el cual permite cacheo de PIN en determinadas políticas y dispositivos.

Configuración HSM

Viafirma platform se puede configurar con HSM de los fabricantes Safenet y Thales. Si deseas configurar un HSM de otro fabricante, ponte en contacto con nosotros.

HSM Luna de Safenet
Param Descripción
KEYSTORE_HSM_SAFENET_LUNA Configuración para el almacenamiento HSM . Viafirma utilizará HSM para el manejo de certificados . Nota : Si el parámetro no está activado o vale "false" y no hay ningún Keystore configurado, Viafirma usa de almacén de certificados por defecto (cacerts). Valores permitidos true y false.
KEYSTORE_HSM_SAFENET_LUNA_PASS Clave para la conexión para el manejo de certificados mediante HSM
HSM_SLOT Slot de conexión para el manejo de certificados mediante HSM
HSM Luna de WRAP
Param Descripción
KEYSTORE_HSM_SAFENET_LUNA_UNWRAP Configuración para el almacenamiento de certificados encriptados por HSM . Viafirma utilizará HSM para el encriptado/desencriptado de certificados. Los certificados se almacenarán encriptados en un repositorio externo. Nota : Si el parámetro no está activado o vale "false" y no hay ningún Keystore configurado, Viafirma usa de almacén de certificados por defecto (cacerts). Valores permitidos true y false.
KEYSTORE_HSM_SAFENET_LUNA_PASS Clave para la conexión para el manejo de certificados mediante HSM
HSM_SLOT Slot de conexión para el manejo de certificados mediante HSM
UNWRAP_AES_ALIAS Alias de la clave AES almacenada en HSM que se utilizará para el encriptado/desencriptado de los certificados. Esta clave AES está marcada como no exportable dentro del HSM.
UNWRAP_DATASOURCE Base de datos que se usará como repositorio externo de certificados encriptados. Por ejemplo "java:comp/env/jdbc/nameWrapDataBase". Nota: la base de datos solo puede ser Oracle o PostgreSQL.
HSM nCipher de Thales
Param Descripción
PKCS11_HSM_CONFIG Ruta del fichero de configuración del HSM. Por ejemplo "/home/viafirma/hsm/hsm_ncipher_pkcs11.cfg"
HSM_REFRESH_PASS Clave de acceso a la página del refresco del HSM. Página de acceso "http://192.168.10.20:8080/viafirma/hsm/verify"
Globales
Param Descripción
ALLOW_DEFAULT_ACCESS_HSM_CERT Activa el acceso a todos los certificados de un HSM, en caso de HSM configurado por defecto. Este comportamiento sirve para aquellos entornos que tienen HSM y desean que, sin dar de alta ningun certificado, se puede firmar con todos los certificados de su Keystore, por ejemplo para entornos donde pueden firmar cientos de usuarios con el HSM en una misma aplicación no es necesario añadir todos los certificados a la aplicación en Viafirma Manager.

Configuración de Viafirma Identity

Esta configuración solo será necesaria en el caso que Viafirma Platforn haga uso de la aplicación Viafirma Identity.

Param Descripción
IDENTITY_API_URL URL de viafirma identity asociado. Por ejemplo: http://192.168.10.20:8080/identity
IDENTITY_SERVICE_USERNAME Variable opcional. Usuario para autenticacion básica en los servicios de identity
IDENTITY_SERVICE_PASSWORD Variable opcional. Contraseña del usuario para autenticacion básica en los servicios de identity
SSL_KEYSTORE_LOCATION Ruta de acceso al almacén de certificados de dónde están las claves SSL para las solicitudes HTTPS. Por ejemplo: /home/viafirma/ssl/identity_keystore.jks
SSL_KEYSTORE_PASSWORD Contraseña de acceso al keystore definido en la variable SSL_KEYSTORE_LOCATION
SSL_HOSTNAME_VERIFIER Define el host para verificar la solicitud ssl a identity. Valores permitidos ALLOW_ALL, STRICT, BROWSER_COMPATIBLE. Valor por defecto BROWSER_COMPATIBLE
REQUIRED_IDENTITY_INTEGRATION Limita el uso, solo para la aplicación indetity, de los certificados instalados en el servidor. Si no se define dicha variable, el valor por defecto será 'false'. Valores permitidos: true y false.

Otras configuraciones

Param Descripción
HIDE_ANDROID_DOWNLOAD_DOCUMENT Permite parámetro de contexto (o policy) para ocultar el botón de descargar documento desde la app Android. Requiere actualización del cliente de Android.
KEEP_INPUT_XML_ENCODING_HEADER Controla que los xml firmados en XADES, mantengan el encoding con la cabecera original, es decir, la de entrada. Por defecto si no aparece esta variable será a 'false', por lo que el encoding y cabecera por defecto será UTF-8.
DEFAULT_USER_CLIENT Define el tipo de cliente que será usado para la selección de certificados. Valores permitidos: - NATIVE: Cliente Windows (viafirma desktop), - JAVA_CLIENT: Cliente Java (Applet y JNLP)

Configuración en clúster

En los casos en los que viafirma platform se encuentra en un sistema de alta disponibilidad, es necesario configurar EHCACHE en modo clúster para que las aplicaciones, o nodos, compartan la misma caché. El archivo encargado de configurar EHCACHE se llama ehcache.xml, el cual se encuentra disponible en la carpeta externa de configuración definida en la variable de configuración VIAFIRMA_CONFIGURATION_PATH.

La configuración de caché en modo clúster requiere que las aplicaciones, y/o nodos, se vean a través de la red mediante un puerto configurable. El sistema de EHCACHE para reconocer con qué otros nodos debe sincronizarse, utiliza dos tipos de descubrimiento de pares (en adelante, peeDiscovery), automático y manual. A continuación se describen estos dos tipos de peeDiscovery para poder configurar EHCACHE según el modo que más convenga al sistema (por defecto vendrán configurados con peerDiscovery=automatic):

  1. peerDiscovery=automatic Los ficheros ehcache.xml se entregan normalmente configurados con el descubrimiento automático de otras caches con las que se debe poner en clúster. Un ejemplo de configuración de peerDiscovery=automatic es (igual para todos los pares): ```xml

Donde:
* **multicastGroupAddress**: Indica el puerto por el que se buscarán las distintas cachés.
* **multicastGroupPort**: Indica el puerto por el que se realizará el descubrimiento de cachés.
* **timeToLive**: Indica el rango de red en el que se buscarán cachés. Algo más adelante se describen todas las posibilidades.

2. peerDiscovery=manual En algunos casos, con infraestructuras de red más restrictivas, es necesario indicar en cada aplicación la configuración del lugar exacto donde se encuentran las otras caches con las que debe ponerse en clúster, para ello usaremos una configuración como la siguiente:

 #### EHCACHE de ejemplo de viafirma platform en modo manual nodo1 (hostname viafirma-01)
 ```xml
<!-- Se observa que peerDiscovery es manual y se le indica el host donde se encuentra la otra cache, el
puerto por el que se publica y el nombre de la cache concreta -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
        rmiUrls=//viafirma-02:50002/CACHE_CERTIFICADOS|
                       //viafirma-02:50002/CACHE_DOCUMENTOS|
                       //viafirma-02:50002/CACHE_CUSTODIA|
                       //viafirma-02:50002/InEhCachePrivateHandleServerAssociations|
                       //viafirma-02:50002/InEhCacheSharedHandleServerAssociations|
                       //viafirma-02:50002/CACHE_APPS_HANDLERS|
                       //viafirma-02:50002/CACHE_APPLICATION
propertySeparator="," />

<!-- En este nodo se indica el puerto por el que se publicarán las caches de esta aplicación y el nombre de este host o ip-->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=viafirma-01, port=50001"/>

EHCACHE de ejemplo de viafirma platform en modo manual nodo2 (hostname viafirma-02)

<!-- Se observa que peerDiscovery es manual y se le indica el host donde se encuentra la otra cache, el
puerto por el que se publica y el nombre de la cache concreta -->
<cacheManagerPeerProviderFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerProviderFactory"
properties="peerDiscovery=manual,
        rmiUrls=//viafirma-01:50001/CACHE_CERTIFICADOS|
                       //viafirma-01:50001/CACHE_DOCUMENTOS|
                       //viafirma-01:50001/CACHE_CUSTODIA|
                       //viafirma-01:50001/InEhCachePrivateHandleServerAssociations|
                       //viafirma-01:50001/InEhCacheSharedHandleServerAssociations|
                       //viafirma-01:50001/CACHE_APPS_HANDLERS|
                       //viafirma-01:50001/CACHE_APPLICATION
propertySeparator="," />

<!-- En este nodo se indica el puerto por el que se publicarán las caches de esta aplicación y el nombre de este host o ip-->
<cacheManagerPeerListenerFactory class="net.sf.ehcache.distribution.RMICacheManagerPeerListenerFactory"
properties="hostName=viafirma-02, port=50002"/>

Donde se debe tener en cuenta que existen dos nodos a configurar:

  • cacheManagerPeerProviderFactory donde se configuran las urls donde se encuentran las distintas cachés con las que debe ponerse en clúster, la url se forma del modo //:/, los nombres de cache serán siempre los que se indican en el ejemplo a no ser que el equipo de viafirma indique algo diferente.
  • cacheManagerPeerListenerFactory donde se indicar el nombre del host en el que se encuentra y el puerto por donde se publicarán sus cachés.

El resto de configuración de estos archivos no debe tocarse ya que se proporcionan preconfigurados.

Por otro lado, otro aspecto a tener en cuenta para la configuración en alta disponibilidad, es la configuración de un sistema de ficheros mediante NFS el cual sea accesible desde ambos nodos. Esto último es necesario siempre y cuando tengáis configurada la aplicación para que custodie los ficheros firmados en disco. Esto se puede comprobar desde el fichero de configuración de la aplicación, y ver si existe la variable de configuración PATH_CUSTODIA. Cuando se configure el NFS, habría que cambiar la ruta en esta variable de configuración apuntando a la carpeta montada con conexión al NFS

Si por el contrario, se tiene configurada la aplicación para que no custodie en disco, si no que por tiempo limitado estén los documentos firmados disponibles en caché, no habría que configurar nada en tema de custodia.

Una vez configurados los dos nodos en cluster, se deberá montar un balanceador que apunte a ambos nodos.