Manual de Instalacion y Despliegue 2-3
Manual de Instalacion y Despliegue 2-3
Manual de Instalacion y Despliegue 2-3
Versión: 2.3
CONTROL DE VERSIONES
2
Kit de Integración FIRe
2.3 11-10-2018 SGAD Cifrado de contraseñas, información de migración
y consideraciones adicionales.
3
Kit de Integración FIRe
ÍNDICE
2 INTRODUCCIÓN............................................................................................. 7
4 COMPONENTE CENTRAL.............................................................................. 11
4.1 Dependencias Externas ................................................................................ 11
4.2 Despliegue ................................................................................................... 12
4.3 Requisitos Software ..................................................................................... 13
4.3.1 Requisitos del usuario...................................................................................................... 14
4.4 Configuración – Ficheros de Propiedades .................................................... 15
4.4.1 Fichero config.properties................................................................................................. 16
4.4.2 Fichero platform.properties ............................................................................................ 20
4.4.3 Fichero provider_clavefirma.properties .......................................................................... 23
4.4.4 Fichero provider_clavefirmatest.properties ................................................................... 24
4.4.5 Fichero provider_fnmt.properties ................................................................................... 25
4.5 Configuración – Base de Datos..................................................................... 28
4.5.1 Creación – Base de Datos ................................................................................................ 28
4.6 Configuración – Registro (Log) ..................................................................... 30
4.7 Configuración de clases gestoras de documentos ........................................ 31
4.8 Cifrado de propiedades ................................................................................ 33
5
Kit de Integración FIRe
1 OBJETO DEL DOCUMENTO
El presente manual detalla la arquitectura de FIRe, los requisitos software de su kit integración y los pasos a
seguir para su despliegue y configuración.
6
Kit de Integración FIRe
2 INTRODUCCIÓN
FIRe es un sistema para la generación de firmas electrónicas con certificado de usuario. Las aplicaciones web
que deseen integrar la firma electrónica de datos como parte de su flujo de operación pueden utilizar FIRe
para tal fin.
FIRe se compone principalmente de un API cliente (Componente distribuido) y unos servicios de firma en
servidor (Componente Central). Por medio de este API cliente es posible invocar a funciones para la firma de
uno o varios documentos (firma de lote) y posteriormente recuperar el resultado de estas operaciones. La
principal ventaja de FIRe es que permite a los usuarios firmar tanto con sus certificados locales como con sus
certificados en la nube sin que la aplicación que lo utiliza tenga que definir flujos de trabajo distintos para
cada una de estas opciones.
Para que el componente central admita las peticiones realizadas por una aplicación, esta deberá haberse
registrado en el sistema. Este registro puede hacerlo un administrador a través del módulo de administración
de FIRe, mediante el cual dará de alta la nueva aplicación, establecerá el certificado con el que deberá au-
tenticarse y obtendrá como resultado el código alfanumérico que deberá utilizar el componente distribuido
como identificador de aplicación (AppId).
Opcionalmente, si sólo habrá una única aplicación dada de alta en el sistema, es posible omitir el despliegue
y uso de una base de datos y el componente de administración. En este caso, el administrador del compo-
nente central dará de alta el certificado cliente que debe usar la aplicación y un identificador de aplicación
cualquiera directamente en el fichero config.properties.
Los certificados en la nube utilizados por FIRe son los certificados de firma de Cl@ve Firma. Estos certificados
están custodiados por el Cuerpo Nacional de Policía (CNP) y se hace uso de los mismos por medio de la pa-
sarela de la Gerencia Informática de la Seguridad Social (GISS).
FIRe, por defecto, permitirá a los usuarios seleccionar el origen de los certificados de firma (local o cualquiera
de los proveedores de firma en la nube), pero una aplicación puede configurar que se utilice directamente
un proveedor si desea que el usuario firme con unos certificados concretos.
En caso de que el usuario seleccione un proveedor y no tenga certificados emitidos por él, si el proveedor lo
soporta, FIRe permitirá emitir nuevos certificados al usuario y realizar con ellos la operación de firma. Esto
se realizará de forma totalmente transparente para la aplicación.
7
Kit de Integración FIRe
3 ARQUITECTURA SOFTWARE
El sistema de firma FIRe cuenta con un componente central encargado de atender las distintas solicitudes de
firma. Este componente central puede dar servicio a múltiples aplicaciones cliente, que harán uso del API o
componente distribuido de FIRe.
Cada una de estas aplicaciones cliente deberá autenticarse ante el componente central mediante certificado
e identificador de aplicación. El componente central almacena la información de autenticación de cada una
de las aplicaciones cliente en base de datos. Para asistir al administrador del sistema en esta tarea, existe un
componente de administración cuya finalidad es exclusivamente gestionar qué aplicaciones cliente pueden
conectar con el componente central.
En el caso excepcional en el que sólo se fuese a dar servicio a una única aplicación cliente, sería posible omitir
el uso de la base de datos, haciendo innecesario el uso de la herramienta de administración. Para esto se
incluiría la información de autenticación en uno de los ficheros de configuración del componente central en
lugar de en la base datos.
Las peticiones al componente central se realizan por medio de un componente cliente o distribuido, que el
integrador podrá utilizar a modo de API desde su aplicación. La comunicación entre el componente distri-
buido y el componente central siempre se debe realizar sobre una conexión SSL con autenticación cliente. El
certificado SSL cliente que utilice la aplicación es el que usará el componente central para autenticarla. Para
permitir este modelo de autenticación, el servidor de aplicaciones no debe restringir las peticiones según el
certificado cliente utilizado. Será el propio componente central el que lo haga.
Existen implementaciones del componente distribuido en lenguaje Java, .Net y PHP, de tal forma que un
integrador podrá elegir el que mejor se ajuste a su aplicación.
FIRe permite la firma electrónica de datos mediante certificados en los almacenes locales del usuario y me-
diante los certificados en la nube de diversos proveedores.
Las firmas mediante certificados locales se realizan mediante el Cliente @firma. Este permitirá al usuario
utilizar los certificados del almacén interno de su navegador web y de dispositivos criptográficos externos
(como el DNIe). En el caso de contar con PIN o contraseña el almacén de claves seleccionado, será el propio
almacén (o el Cliente @firma cuando se delegue esta tarea) el que se encargue de pedírselo al usuario.
En el caso de las firmas con certificados en la nube, FiRe incorpora los conectores de varios proveedores,
aunque el administrador del sistema es libre de incorporar otros nuevos.
Entre los conectores por defecto de FIRe, destaca el de Cl@ve Firma. Cl@ve Firma utiliza certificados de firma
custodiados por el Cuerpo Nacional de Policía (CNP) a los que accede a través de la pasarela proporcionada
por la Gerencia Informática de la Seguridad Social (GISS). En este caso el usuario deberá autorizar las opera-
ciones de firma mediante la inserción de su PIN y una clave OTP desde una web de la GISS a la que se le
redirigirá.
8
Kit de Integración FIRe
FIRe también incorpora un conector para el uso de certificados de funcionario de la FNMT y un conector a
un servicio de pruebas que emula el comportamiento de Cl@ve Firma. Con este último, las distintas aplica-
ciones pueden probar su integración con FIRe en entornos distintos a los de producción.
Todas las firmas realizadas por FIRe se realizan en 3 fases, donde la primera fase (composición de los datos a
firmar) y la tercera fase (composición de la firma electrónica) se realizarán en el componente central, mien-
tras que la segunda fase (firma digital), que es la única que involucra a la clave privada del certificado, se
realiza en el equipo del usuario, en el caso de la firma local; o en los servidores proveedor, en el caso de la
firma con certificado remoto. Todo este proceso es transparente para las aplicaciones que integran FIRe.
Si así lo indica la aplicación cliente, es posible que tras realizar una firma electrónica deba actualizarse ésta a
un formato longevo. Esto es, incrustarle información adicional como, por ejemplo, un sello de tiempo o in-
formación de revocación. Estas actualizaciones de firma se realizan por medio de la Plataforma @firma, por
lo que el componente central deberá tener acceso a una instancia de la Plataforma @firma si desea permitir
que las aplicaciones cliente realicen mejoras de firma.
Los componentes software que se incluyen en el kit de integración y su correspondencia con los bloques del
diagrama son los siguientes:
Componente central:
o fire-signature.war
10
Kit de Integración FIRe
4 COMPONENTE CENTRAL
El objetivo del componente central es concentrar en un solo elemento todas las funciones de firma que ten-
gan las aplicaciones de un organismo. De esta forma, las conexiones con las distintas plataformas y provee-
dores (Plataforma @firma, GISS, CNP…) sólo deben configurarse desde este componente.
A continuación, se detallan los diferentes aspectos que deben tenerse en cuenta para desplegar y configurar
el componente central.
Los administradores del sistema en el que se despliegue el componente central deben habilitar el acceso de
red a estos sistemas.
4.2 DESPLIEGUE
El componente central de FIRe expone una serie de servicios que sólo deben estar disponibles en el entorno
en el que se encuentren las aplicaciones web que se conecten a él por medio de los componentes distribui-
dos. Sin embargo, es necesario que otros servicios y recursos del componente central estén disponibles de
cara a los usuarios finales y, por tanto, que se despliegue en un entorno público o DMZ.
Los recursos y servicios que pueden solicitarse desde los entornos cliente son aquellos que se encuentran en
la ruta “public” del módulo “fire-signature”. Esto significa que se debe configurar el que, por defecto,
sería el contexto “fire-signature/public” para que sea visible desde el exterior.
Por otra parte, es necesario configurar el servidor de aplicaciones para que los accesos al componente central
sólo puedan realizarse sobre SSL con certificado cliente. Con esto se consigue que sólo puedan hacer uso de
sus servicios las aplicaciones que se hayan dado de alta en el sistema y se autentiquen mediante el certificado
cliente con el que se registrasen.
Sin embargo, las mismas páginas web, servicios y recursos del componente central que se publican de cara
al usuario (ruta “public” del módulo “fire-signature”) deberán ser accesibles sin necesidad de autenti-
cación, por lo que se deberá configurar una conexión SSL sin autenticación cliente para el acceso a ellos. Si
se requiriese certificado cliente para acceder a estos recursos, el navegador web o Java se lo pediría directa-
mente al usuario, dando lugar a un diálogo de selección que puede confundirle. Esto significa que se debe
configurar el que, por defecto, sería el contexto “fire-signature/public” para que no solicite certificados
cliente. Disponer esta configuración podría requerir del uso de un servidor web.
12
Kit de Integración FIRe
En el contexto “fire-signature/public” también se despliegan algunos servicios que requiere el Cliente @firma
para su funcionamiento. Si en nuestro despliegue de FIRe habilitamos el proveedor “local” para permitir
que las aplicaciones habiliten los procesos de firma con certificado local, es importante tener en cuenta que
el Cliente @firma comprueba la validez de los certificados SSL. Para evitar incidencias al respecto, debemos
utilizar en nuestro despliegue un certificado SSL válido, correspondiente al dominio en el que se realiza el
despliegue y reconocido por defecto por Java. En caso contrario, es posible que AutoFirma no pueda conec-
tarse con los servicios del componente central de FIRe. Como alternativa, sobre todo para los entornos de
desarrollo, el usuario podría dar de alta la URL del contexto “/public” en el que se encuentre la aplicación en
el listado de sitios seguros de la configuración de Java de su equipo. De esta forma, el Cliente @firma no
tendrá problemas para acceder a los servicios del componente central.
Por ejemplo, si tuviésemos un servidor de aplicaciones Apache Tomcat y, como frontal, el servidor web Apa-
che HTTPD con virtualhosts configurados, podríamos establecer esta configuración de la siguiente manera:
…
SSLEngine on
SSLVerifyClient none
13
Kit de Integración FIRe
Si el servidor de aplicaciones utilizado no nos permitiese dejar sin autenticación SSL cliente el subcontexto
“/public”, mientras que sí está activado para el resto, se debería contar con un servidor web como frontal
que nos permita configurar los accesos de esta manera. Esto ocurre, por ejemplo, con Apache Tomcat, que
para establecer esta configuración debería estar antecedido por un servidor web Apache, con el que se po-
dría comunicar por AJP. Consulte el apartado Despliegue para más información sobre esto.
En caso de contar con un servidor de servlets, se desplegará la distribución de los servicios compuesta de
archivos WAR.
En caso de contar con un servidor completo de aplicaciones JEE, se podrá desplegar la distribución compuesta
de archivos WAR o el fichero EAR del proyecto.
Para saber cómo realizar el despliegue de aplicaciones en su servidor, consulte la documentación de su soft-
ware.
Los controladores JDBC del sistema de gestión de base de datos elegido deberán estar instalados en el class-
path del servidor de aplicaciones.
El entorno de ejecución del usuario de FIRe también debe cumplir con ciertos requisitos cuando se permita
u obligue al uso de certificados locales. Estos requisitos, varían según la herramienta de firma que se confi-
gure. Los requisitos recomendados son:
Navegador web:
o Microsoft Internet Explorer
o Microsoft Edge
o Mozilla Firefox
o Google Chrome
o Apple Safari
Java:
o Java 8 o superior
En caso de que un usuario utilice Internet Explorer, la firma se intentará realizar mediante el MiniApplet
@firma, en cuyo caso sólo es necesario disponer de Java 7 o superior. En caso de no disponer de él o que el
usuario rechazase los permisos solicitados por el MiniApplet, se intentará utilizar AutoFirma.
Si en el componente central se ha configurado el uso de AutoFirma nativo, el usuario deberá tener esta apli-
cación instalada en el sistema. Si, en cambio, se ha configurado el uso de AutoFirma WebStart, el usuario
deberá tener instalado Java 8 o superior.
IMPORTANTE: El usuario debe disponer de todo el software necesario antes de iniciar el trámite. Es respon-
sabilidad de la aplicación que conecta con FIRe notificar al usuario esta necesidad, ya que es posible que una
vez se acceda a las páginas de FIRe ya no se puedan instalar sin interrumpir el trámite.
14
Kit de Integración FIRe
En la página de firma con certificado local, se muestran al usuario los requisitos que necesita basándose en
el entorno detectado.
Si desea exponer estos requisitos a sus usuarios antes de iniciar el trámite web, puede permitir mostrarles la
página web localizada en “public/static/miniapplet_compatibility.html” dentro del compo-
nente central de FIRe:
config.properties
o Configura las conexiones con la base de datos, ficheros temporales, comportamiento del
Cliente @firma, el sistema de estadísticas y los proveedores que se pueden utilizar para fir-
mar.
platform.properties
o Configura el acceso a la Plataforma @firma en caso de desear mejorar las firmas.
15
Kit de Integración FIRe
o Este fichero sólo se utilizará cuando las aplicaciones soliciten la actualización a formatos lon-
gevos de las firmas generadas. No es necesario incorporarlo si nuestras aplicaciones no ne-
cesitan esto.
PROVEEDOR_config.properties
o Por cada proveedor de firma en la nube configurado en el fichero “config.properties”, se
puede crear un fichero “PROVEEDOR_config.property” en donde “PROVEEDOR” es el nom-
bre asignado al proveedor en cuestión.
o Cada uno de estos ficheros será utilizado para configurar su conector correspondiente.
o Estos ficheros se podrán guardar junto al resto de ficheros de configuración de FIRe.
El fichero config.properties contiene la configuración con la base de datos, ficheros temporales, el iden-
tificador de Google Analytics, el comportamiento del Cliente @firma y la firma de lotes, el sistema de esta-
dísticas, la clase para el descifrado de propiedades y el conector de backend que se debe utilizar. El listado
completo de claves que se puede configurar son:
bbdd.driver (opcional)
o Clase del driver JDBC que se desea utilizar. Si no se especifica esta propiedad, no se cargará
el controlador para acceder a la base de datos. Revise la propiedad bbdd.conn, para más
detalles de cómo evitar el uso de base de datos.
bbdd.conn (opcional)
o Cadena de conexión a la base de datos del sistema.
Si esta propiedad no se encuentra en el fichero o su valor es none, se descartará el uso de base de
datos, lo cual sólo permitiría el acceso a una única aplicación cliente. Si no se configura esta propie-
dad, será obligatorio incluir las siguientes dos propiedades de seguridad:
o default.appId
Identificador de la única aplicación que puede solicitar firmas. Este identificador se
comprobará cada vez que se reciba una petición.
o default.certificate
Certificado codificado en base 64 con el que se autentica la aplicación.
cipher.class (opcional)
o Nombre de la clase encargada de descifrar propiedades de este o el resto de ficheros de
configuración del componente central.
o La clase configurada debe implementar la interfaz “es.gob.fire.server.decipher.Pro-
pertyDecipher” localizada en el módulo fire-signature-decipher.
o Los valores o fragmentos cifrados del fichero de configuración deberán expresarse de la
forma: {@ciphered: DATO_CIFRADO_BASE64 }
o Consulte el apartado Cifrado de propiedades para más información.
google.trackingId (opcional)
16
Kit de Integración FIRe
o Identificador de estadísticas de Google Analitycs.
o No es necesario configurar esta propiedad si no se desean recopilar estadísticas de la aplica-
ción.
afirma.appId (opcional)
o Clave con la que se identifica el sistema frente a la Plataforma @firma para realizar la actua-
lización de las firmas generadas.
o No es necesario configurar esta propiedad si no se desea conectar con la Plataforma @firma
para la actualización de firmas.
signature.alternativeXmldsig
o Parámetro para notificar que se incluyen bibliotecas Xerces entre las extensiones del servidor
de aplicaciones.
o En caso de detectar errores al generar firmas XAdES, podemos establecer a true esta pro-
piedad para intentar corregirlos.
o Este caso es común al realizar el despliegue en servidores JBoss.
batch.maxDocuments
o Número máximo de documentos que se pueden agregar a un lote de firma. Si se intentan
agregar más documentos, la operación de agregar documento devolverá un error. Si se es-
tablece el valor 0, se considerará que no hay límite de tamaño de lote.
o Por defecto, 10.
temp.dir
o Ruta del directorio para el almacenamiento temporal de documentos. Si no se indica, se uti-
lizará el directorio de temporales del sistema.
o Se recomienda que se configure esta propiedad ya que sobre este directorio se aplicara la
política de borrado de ficheros caducados.
temp.fire.timeout
o Número de segundos que pueden transcurrir antes de considerar caducado un fichero tem-
poral de FIRe. Pasado ese tiempo, la sesión se considerará caducada y el fichero podría bo-
rrarse.
o Por defecto, 10 minutos.
temp.afirma.timeout
o Número de segundos que pueden transcurrir antes de considerar caducado un fichero tem-
poral de intercambio del Cliente @firma. Pasado ese tiempo el fichero podría borrarse.
o Por defecto, 10 minutos.
sessions.dao
o Gestor para la gestión conjunta de sesiones entre nodos balanceados.
o Esto solo debe usarse cuando se despliegue el componente central en varios nodos balan-
ceados y no se compartan los objetos en memoria entre ellos.
o Por defecto, ninguno.
o Valores disponibles:
filesystem
17
Kit de Integración FIRe
Gestión de sesiones en disco.
http.cert.attr
o Nombre del atributo en el que buscar los certificados SSL cliente cuando no se encuentren
como atributos de la operación.
o Esto puede ser necesario cuando se conecta un Apache y el servidor de aplicación con un
proxy-pass en lugar de mediante AJP.
o Comúnmente no será necesario configurar este parámetro.
o Por defecto, “X-Client-Cert”.
docmanager.default
o Gestor de documentos por defecto. Este es el gestor que se aplicará cuando no se indique
ningún otro.
o Este valor sólo debería cambiarse cuando el comportamiento de todas las aplicaciones que
hagan uso del componente central obtienen y almacenan la configuración mediante un
mismo gestor, distinto al por defecto, y se desea simplificarles la integración para que omitan
el parámetro.
o Por defecto, es.gob.fire.server.services.document.DefaultFIReDocumentManager
o Consulte el apartado Configuración de clases gestoras de documentos para saber más de las
clases gestoras de documentos.
pages.title
o Título que aparecerá en las páginas web del componente central.
o Se permite el uso de entidades HTML para insertar caracteres que puedan producir proble-
mas de codificación ("á", "ñ", "&"...)
o Por defecto, FIRma Electrónica – FIRe
pages.logo
o URL externa del logotipo que mostrar en las páginas web del componente central.
o Por defecto, no se proporciona un valor y se muestra el logotipo de Gobierno de España.
pages.public.url
o URL base desde la que acceder al contexto público del componente central (páginas y servi-
cios que deben estar accesibles para los usuarios finales).
o Esta propiedad sólo se debería configurar cuando en el servidor web se establezcan URL di-
ferenciadas para el acceso al contexto público y el general del componente central. A la URL
que se configure siempre se le agregará el sufijo “/public”. Esto puede ser necesario
cuando no se pueda o no se desee exponer los servicios privados de FIRe de cara a Internet.
o Si se realizan dos despliegues separados del componente central (uno para atender las lla-
madas de los usuarios y otro para atender las llamadas del servidor) será necesario configu-
rar la propiedad "sessions.dao" para permitir compartir las sesiones entre ellos.
o Por defecto, no se proporciona un valor y se accederá a las páginas utilizando el contexto de
despliegue del WAR seguido de “/public”.
clienteafirma.forceAutoFirma
18
Kit de Integración FIRe
o Establece si se debe forzar el uso de AutoFirma en lugar de intentar cargar previamente el
MiniApplet @firma.
o Por defecto, false
clienteafirma.forceNative
o Establece si, en caso de usarse AutoFirma, debe forzarse el uso de una versión nativa previa-
mente instalada en el equipo del usuario, en lugar de cargar AutoFirma mediante el desplie-
gue JNLP
o Por defecto, false.
providers
o Listado de proveedores habilitados para su uso por parte de las aplicaciones.
o Los valores se ponen consecutivos, separados por comas (',').
o Al usuario se le mostraran todos los proveedores configurados en el orden que se indique en
esta propiedad, salvo que la aplicación cliente defina una selección de proveedores. En ese
caso, se mostrarán sólo los proveedores solicitados y en el orden indicado por la aplicación.
o Si sólo se define un proveedor, FIRe lo seleccionará automáticamente sin necesidad de que
lo haga el usuario.
o Si el nombre de algún proveedor se antecede del carácter arroba ('@'), se considerará que
es imprescindible que aparezca y se mostrará al usuario incluso si no estaba entre la selec-
ción de proveedores de la aplicación. Esta opción debe manejarse con cuidado pues puede
conllevar que en una aplicación se firme con certificados distintos a los esperados.
o El nombre de proveedor "local", permite el uso de certificados locales.
o Todos los proveedores distintos de "local" deben declarar en este fichero su clase conec-
tora mediante una propiedad llamada "provider.NOMBRE_CONECTOR".
o Por cada proveedor distinto de “local” se debería agregar un fichero
“NOMBRE_CONECTOR_config.properties” con la configuración de su conector.
o Por defecto, clavefirmatest,local
provider.NOMBRE_CONECTOR
o Propiedad que deberá establecerse por cada proveedor definido en la propiedad “provi-
der”.
o Deberá asignarse a esta propiedad el nombre completo de la clase conectora del proveedor.
o FIRe integra, por defecto las siguientes clases conectoras de proveedores en la nube:
es.gob.fire.server.connector.clavefirma.ClaveFirmaConnector
Clase conectora de Cl@ve Firma
es.gob.fire.server.connector.test.TestConnector
Clase conectora del simulador de Cl@ve Firma
es.fnmt.fire.signature.connector.TrustedXConnector
Clase conectora del proveedor de la FNMT.
Para que este conector sea funcional es necesario el despliegue del servicio
“fnmt-fire-service.war”.
19
Kit de Integración FIRe
o Consulte el apartado Componentes adicionales para saber cómo agregar nuevos proveedo-
res en FIRe.
bbdd.driver=com.mysql.jdbc.Driver
bbdd.conn=jdbc:mysql://172.24.31.110:3306/fire_db?user=clave&password=123
cipher.class=
google.trackingId=UA-12345678-1
afirma.appId=minhap.seap.dtic.clavefirma
signature.alternativeXmldsig=false
batch.maxDocuments=30
temp.dir=C:/pruebas/temp_clavefirma
temp.fire.timeout=600
temp.afirma.timeout=600
docmanager.default=es.gob.fire.server.services.document.DefaultFIReDocumentManager
pages.title=FIRe
clienteafirma.forceAutoFirma=false
clienteafirma.forceNative=true
providers=clavefirma,local
provider.clavefirma=es.gob.test.server.connector.clavefirma.ClaveFirmaConnector
En este fichero se indica que la cadena de conexión JDBC con la base de datos de administración es
“jdbc:mysql://172.24.31.110:3306/fire_db?user=clave&password=1234” (consulte con la documentación de
su controlador JDBC para determinar el formato apropiado para su cadena de conexión), no se indica clase
de descifrado de propiedades (ya que no se indican cifradas) y el identificador de estadísticas de Google
Analytics es “UA-12345678-1”. El identificador de la aplicación frente a la Plataforma @firma será “min-
hap.seap.dtic.clavefirma” (para la propia conexión con la plataforma será necesario configurar el fichero
platform.properties). Se ha definido que el número máximo de documentos que se puede adjuntar a
un lote será 30 y cuál es el directorio para el guardado de temporales. Se han dejado diversas propiedades a
sus valores por defecto (tiempos de espera, configuración de firma XML, comportamiento de AutoFirma,
etc). Se han definido dos proveedores: “clavefirma”, que tiene la clase conectora “es.gob.test.server.connec-
tor.clavefirma.ClaveFirmaConnector” y permite usar los certificados de Cl@ve Firma, y “local”, que permite
utilizar los certificados disponibles en el equipo del usuario.
20
Kit de Integración FIRe
Este fichero configura la conexión con la Plataforma @firma para permitir la actualización de las firmas ge-
neradas a formatos longevos. Si no se fuesen a realizar mejoras de firma a formatos longevos, no será nece-
sario configurar este fichero ni acceder a la Plataforma @firma.
Para poder hacer uso de una instancia de la Plataforma @firma, el administrador de la misma deberá dar de
alta su aplicación y habilitarle las credenciales de acceso correspondientes. Consulte con el administrador de
la Plataforma @firma a la que desea acceder para más detalles.
Este fichero de propiedades sigue el formato definido en las bibliotecas Integr@, y necesita tener definidas
al menos las siguientes claves:
webservices.timeout
o Tiempo de espera a las conexiones, en milisegundos
webservices.authorization.method
o Tipo de autenticación contra la Plataforma @firma. Debe tener siempre el valor BinarySecu-
rityToken.
webservices.endpoint
o URL del servicio general de la Plataforma @firma, debe tener la barra “/” al final.
o La URL del servicio la proporciona el administrador de la instancia de la Plataforma @firma.
webservices.service.signupgrade
o Nombre del servicio Web de mejora de firmas.
o El nombre del servicio lo proporciona el administrador de la instancia de la Plataforma
@firma.
webservices.service.certverify
o Nombre del servicio Web de verificación de certificados.
o El nombre del servicio lo proporciona el administrador de la instancia de la Plataforma
@firma.
com.trustedstore.path
o Ruta del almacén con los certificados servidor de confianza para las conexiones SSL seguras.
o Debe estar configurado de tal forma que los servidores de la instancia de la Plataforma
@firma a la que se conecta sea den de confianza.
com.trustedstore.password
o Contraseña del almacén con los certificados servidor de confianza para las conexiones SSL
seguras.
com.trustedstore.type
o Tipo del almacén con los certificados servidor de confianza para las conexiones SSL seguras.
Puede tener los valores:
JKS
Almacén de claves de Java (Recomendado).
PKCS12
Almacén de claves PKCS#12.
webservices.authorization.ks.path
21
Kit de Integración FIRe
o Almacén de claves que contiene los certificados y claves privadas para las conexiones seguras
SSL con certificado cliente de autenticación contra la Plataforma @firma.
o El administrador de la instancia de la Plataforma @firma en cuestión deberá habilitar el ac-
ceso por medio de la clave pública del certificado que se desee utilizar.
webservices.authorization.ks.type
o Tipo del almacén de claves que contiene los certificados y claves privadas para las conexiones
seguras SSL con certificado cliente de autenticación contra la Plataforma @firma. Puede te-
ner estos valores:
JKS
Almacén de claves de Java (Recomendado)
PKCS12
Almacén de claves PKCS#12.
webservices.authorization.ks.password
o Contraseña del almacén de claves que contiene los certificados y claves privadas para las
conexiones seguras SSL con certificado cliente de autenticación contra la Plataforma @firma.
webservices.authorization.ks.cert.alias
o Alias del certificado a usar para las conexiones seguras SSL con certificado cliente de auten-
ticación contra la Plataforma @firma dentro del almacén indicado. Se recomienda que se
evite el uso de alias con caracteres no ASCII.
webservices.authorization.ks.cert.password
o Contraseña del certificado a usar para las conexiones seguras SSL con certificado cliente de
autenticación contra la Plataforma @firma dentro del almacén indicado.
Un ejemplo de fichero de propiedades para acceso a la Plataforma @firma para mejora de firmas podría ser
el siguiente, a expensas de rellenar los datos proporcionados por el administrador de su proveedor de servi-
cios de @firma.
# Metodo de autenticacion
webservices.authorization.method = BinarySecurityToken
webservices.service.signupgrade=
webservices.service.certverify=
Es el fichero de configuración del conector de Cl@ve Firma. Este fichero sólo será necesario cuando se con-
figure la clase conectora “es.gob.test.server.connector.clavefirma.ClaveFirmaCon-
nector”. En caso de que el administrador cambiase el nombre de proveedor que configura esta clase co-
nectora, será necesario cambiar el nombre de este fichero a como corresponda.
providerName
o Configura el nombre de proveedor con el que se identifica el servicio contra la GISS.
o Este parámetro es obligatorio, debe ir en MAYÚSCULAS y se forma de la concatenación del
NIF del organismo y del código DIR3 unidos por un guion bajo (NIF_DIR3), tal como se ha
especificado en al ACL (formulario) de alta en el sistema de la GISS.
allowRequestNewCert
o Configura si el proveedor debe permitir a los usuarios el generar certificados cuando no ten-
gan ninguno expedido (true) o que no se permita generarlos (false).
o Por defecto, true.
URL_GATEWAY
o URL hacia la pasarela de firma centralizada.
AUTH_STORE
o Ruta hacia el almacén PKCS#12 con el certificado cliente autorizado para acceder al servidor
remoto de firma centralizada.
AUTH_STORE_PASS
o Contraseña del almacén PKCS#12 con el certificado cliente autorizado para acceder al servi-
dor remoto de firma centralizada indicado anteriormente.
providerName=S1234567E_E12345678
allowRequestNewCert=true
23
Kit de Integración FIRe
URL_GATEWAY=https://xxxx/ClaveFirmaService
AUTH_STORE=//users/apache/clavefirma/auth.p12
AUTH_STORE_PASS=12345678
Es el fichero de configuración del conector del simulador de pruebas de Cl@ve Firma. Este fichero sólo será
necesario cuando se configure la clase conectora “es.gob.test.server.connector.test.Test-
Connector”. En caso de que el administrador cambiase el nombre de proveedor que configura esta clase
conectora, será necesario cambiar el nombre de este fichero a como corresponda.
endpoint
o Permite configurar la ruta base de los servicios de prueba.
o Si no se establece esta propiedad o se establece vacía, se interpretará que la URL base de los
servicios de prueba es:
https://127.0.0.1:8443/clavefirma-test-services/
allowRequestNewCert
o Configura si el proveedor debe permitir a los usuarios el generar certificados cuando no ten-
gan ninguno expedido (true) o que no se permita generarlos (false).
o Esta opción permite emular a la propiedad homónima del conector de Cl@ve Firma.
o Por defecto, true.
ssl.keystore
o Ruta absoluta del almacén de claves de autenticación en caso de que el servicio de pruebas
se encuentre en un servidor con SSL con autenticación cliente.
ssl.keystorePass
ssl.keystoreType
ssl.truststore
24
Kit de Integración FIRe
o Ruta absoluta del almacén de certificados de confianza en caso de querer configurar un al-
macén particular en lugar del por defecto de Java. Si no se desean realizar autenticaciones
sobre el certificado SSL del servidor, se puede configurar el valor “all”.
ssl.truststorePass (Opcional)
ssl.truststoreType (Opcional)
endpoint=https://clavefirmagiss:8443/clavefirma-test-services
ssl.keystore=C:/Users/ClaveFirma/certificados/client_ssl.jks
ssl.keystorePass=12341234
ssl.keystoreType=JKS
ssl.truststore=all
#ssl.truststorePass=
#ssl.truststoreType=
Este es el fichero de configuración del conector con el servicio de firma en la nube de la FNMT y sólo será
necesario cuando se configure la clase conectora “es.fnmt.fire.signature.connector.Trus-
tedXConnector”. En caso de que el administrador cambiase el nombre de proveedor que configura esta
clase conectora, será necesario cambiar el nombre de este fichero a como corresponda.
El conector de la FNMT está inicialmente preparado para la firma con certificados de empleado público y las
opciones de configuración incluidas sólo admiten actualmente valores orientados a tal fin.
25
Kit de Integración FIRe
Las propiedades de este fichero deberían ser proporcionadas por la FNMT en base al acuerdo alcanzado
con ella. En este apartado se muestran los valores comunes para la configuración del uso de certificados de
empleado público.
dtsCacher
o Indica la clase Java que se encargará del almacén temporal de firmas en el sistema.
o Por defecto, debe utilizarse el valor “es.fnmt.fire.signature.connector.DataTo-
SignCacherFileSystem”.
trustedXUrl
trustedXUser
trustedXPassword
trustedXClientId
trustedXApiKey
authServiceId
defaultDomain
definedLabels
o Etiquetas que debe tener una identidad de firma para ser utilizada en el sistema (separadas
por comas).
o Por defecto, debe utilizarse el valor “grupo2,x509:keyUsage:contentCommit-
ment,cloudid,fnmt”.
codeService
26
Kit de Integración FIRe
o URL del servicio de gestión de redirecciones Oauth. Este es un servicio auxiliar que acompaña
a FIRe y que deberá desplegarse única y exclusivamente cuando se configure este conector.
o Por ejemplo, “http://demo.com:8080/fnmt-fire/OauthHelper”.
scopeAttrsManageAndUserList
scopeProfile
o Scope de perfil.
o Por defecto, debe utilizarse el valor “urn:safelayer:eidas:sign:identity:pro-
file”.
scopeProfileAndServer
27
Kit de Integración FIRe
4.5 CONFIGURACIÓN – BASE DE DATOS
La base de datos del sistema de firma centralizada se utiliza para la configuración del sistema y la autentica-
ción de las peticiones de firma. Queda a elección del integrador crear una nueva base de datos para el sistema
o utilizar una ya existente.
El Sistema de Gestión de Base de Datos queda a elección del integrador, pero se debe tener encuentra que
el componente central deberá poder acceder a la misma a través de un controlador JDBC. Tanto el driver
JDBC a utilizar como la cadena de conexión deben quedar reflejadas en el fichero de configuración del com-
ponente central.
Para la creación de las tablas de la base de datos dispondremos de scripts, para los SGBD MySQL y ORACLE.
No obstante, la creación de las tablas necesarias deberá ser realizada o supervisada por el Administrador del
SGBD en cuestión.
Se distribuye junto a los servicios de firma centralizada las sentencias DDL (fichero “01_clave-
firma_ddl.sql”) para la creación de las tablas de base de datos.
Tabla de aplicaciones
28
Kit de Integración FIRe
Tabla de certificados
Tabla de usuarios
29
Kit de Integración FIRe
Restricciones tabla aplicaciones
Estas tablas estarán inicialmente vacías a excepción de una contraseña inicial para el acceso al componente
de administración, que se realizará mediante una sentencia de inserción en la tabla tb_usuarios ante-
riormente creada:
Tabla=tb_usuarios
registro:
nombre_usuario = ‘admin’
clave='D/4avRoIIVNTwjPW4AlhPpXuxCU4Mqdhryj/N6xaFQw=', codificado como SHA-
256 clave=1111.
nombre='default name',
apellidos='default surnames'
usu_defecto=1
30
Kit de Integración FIRe
Consulte la documentación de su entorno de ejecución de Java (JRE) y de su servidor de aplicaciones JEE para
configurar apropiadamente el registro:
https://docs.oracle.com/javase/7/docs/technotes/guides/logging/
https://docs.oracle.com/javase/7/docs/api/java/util/logging/LogManager.html
https://docs.oracle.com/javase/7/docs/technotes/guides/logging/overview.html
El sistema no implementa ningún otro sistema de registro (Apache Log4J, etc.).
Para el uso de este escenario es necesario implementar una “clase gestora de documentos”. Esta clase será
la que defina de dónde se deben obtener los datos indicados por la aplicación cliente y cómo tratar y alma-
cenar la firma resultante.
Si un integrador desease conectarse con FIRe y utilizar una clase gestora de documentos, debería, primera-
mente, solicitar el permiso del administrador de FIRe, ya que este es el que debe habilitar el uso de esa clase
gestora.
31
Kit de Integración FIRe
La confianza que se tiene en el integrador y el desarrollo que haga de la clase gestora. Hay que tener
en cuenta que este desarrollo se ejecutará en el servidor del componente central, con los mismos
permisos que tenga el usuario con el que se ejecute el servidor de aplicaciones, y tendrá acceso a sus
recursos.
Que el desarrollo realizado no incluya dependencias incompatibles con las de FIRe, el servidor de
aplicaciones o alguna otra clase gestora, ya que estas deberán desplegarse también como parte del
componente central.
La posibilidad y conveniencia de dar acceso a los recursos de red que necesite la clase gestora para
la carga de los datos y el tratamiento y guardado de la firma.
En caso de dar el visto bueno al uso de la clase gestora, el integrador deberá proporcionar al administrador
esta clase (empaquetada en forma de JAR), el nombre completo de la clase, las bibliotecas de las que de-
penda, el listado exacto de recursos y entornos a los que se deberá tener acceso (para habilitar los permisos
del sistema y permisos de red necesarios) y, si procede, el fichero de configuración de la clase y las instruc-
ciones para configurarlo.
32
Kit de Integración FIRe
4. Si el integrador ha proporcionado instrucciones para la configuración del fichero de configuración,
seguir estás instrucciones.
5. Habilitar el acceso a los recursos y entornos de red necesarios para el funcionamiento de la clase
lectora indicados por el integrador.
6. Proporcionar al integrador el nombre que hemos designado para referenciar a la clase gestora de
documentos.
Por ejemplo:
o bbddMinisterio
Para poder utilizar valores cifrados en los distintos ficheros de configuración del componente central se de-
berá:
1. Establecer los valores o fragmentos cifrados y codificados en base 64 en las propiedades que se
deseen de los distintos ficheros de configuración. Esto se hará mediante la cadena:
{@ciphered: CONTRASENA_CIFRADA_B64 }
Por ejemplo:
bbdd.conn=jdbc:mysql://127.0.0.1:3306/fire_db?user=miusuario&pass-
word={@ciphered: aDbb+4nmBHk7ifT= }
Por ejemplo:
cipher.class = es.gob.miapp.fire.MiDecipher
4. Agregar al CLASSPATH del servidor de aplicaciones la clase de descifrado. Por ejemplo, se podría
empaquetar esta clase en un JAR y agregar este al WAR “fire-signature.war“ antes de desple-
garlo.
33
Kit de Integración FIRe
5 SIMULADOR DE CL@VE FIRMA
Junto con el componente central se distribuye un servicio de prueba que simula la comunicación con Cl@ve
Firma, permitiendo así probar el comportamiento de nuestras aplicaciones sin necesidad de tener conexión
con ningún proveedor real de firma en la nube.
5.1 DESPLIEGUE
Para poder conectar el componente central con el servicio simulador de Cl@ve Firma hay que realizar los
siguientes pasos:
4. Modificar el fichero “config.properties“ del componente central para permitir la conexión con
el servicio de pruebas:
o Modificar el valor de la propiedad providers para que utilice el conector con el servicio de
prueba:
providers=clavefirmatest,local
5. Configurar el fichero ”provider_clavefirmatest.properties“ del componente central para
permitir la conexión con el servicio de pruebas:
34
Kit de Integración FIRe
o Establecer a través de las distintas propiedades que empiezan por “test.ssl.” la confi-
guración para la conexión con el servicio de pruebas.
test.ssl.keyStore (Opcional)
Ruta del almacén de claves para la autenticación mediante certificado con el
servicio simulador.
test.ssl.keyStorePassword (Opcional)
Contraseña del almacén de claves de autenticación SSL.
test.ssl.keyStoreType (Opcional)
Tipo del almacén de claves del certificado de autenticación SSL: “JKS” (al-
macén de Java) o “PKCS12” (almacén PKCS12/PFX). Por defecto, “JKS”.
test.ssl.trustStore (Opcional)
Ruta del almacén de certificados de confianza SSL. Esto se usa cuando el cer-
tificado con el que se ha montado el SSL del componente central no está en
el almacén de confianza de Java y se desea establecer un almacén de con-
fianza alternativo.
En caso de querer desactivar la comprobación del certificado SSL del servi-
dor, se puede configurar el valor “all”.
test.ssl.trustStorePassword (Opcional)
Contraseña del almacén de confianza.
test.ssl.trustStoreType (Opcional)
Tipo del almacén de confianza: “JKS” (almacén de Java) o “PKCS12” (alma-
cén PKCS12/PFX). Por defecto, “JKS”.
o Usuario: 00001
o Contraseña: 1111
Usuario sin certificado para la prueba de las operaciones de generación de certificado. Durante la
prueba de este servicio se dará al usuario la posibilidad de modificar la contraseña. Dado que este
servicio tiene como único objetivo ayudar a la integración del servicio, los datos introducidos por el
usuario se ignorarán y la contraseña siempre será la aquí indicada:
o Usuario: 00002
o Contraseña: 1111
35
Kit de Integración FIRe
Usuario con certificado bloqueado:
o Usuario: 00003
o Usuario: 00004
Agregar, si procede, el certificado del nuevo usuario en el mismo directorio y con el mismo nombre
pero extensión “.p12”.
Puede hacer uso del servicio de prueba desde su propia aplicación o desde la aplicación de ejemplo que se
distribuye con FIRe. Recuerde que esta aplicación de ejemplo no está pensada para ser subida a producción.
Para obtener más información consultar el capítulo 9 del manual del integrador (“MAN - Manual de integra-
dor.docx”).
36
Kit de Integración FIRe
6 COMPONENTE DISTRIBUIDO
El componente distribuido consiste en una biblioteca que permite acceder a las funcionalidades proporcio-
nados por el componente central del sistema.
Se distribuyen tres implementaciones diferentes del componente distribuido para facilitar su integración en
las aplicaciones cliente: Java, .NET y PHP.
6.1 JAVA
Se requiere un entorno de ejecución de Java en versión 6 o superior, en 32 o 64 bits.
La versión de Java del componente distribuido es un JAR de Java firmado digitalmente, que se acompaña de
2 bibliotecas externas con las que mantiene dependencias.
El primer paso para el uso del componente distribuido es agregar estas bibliotecas al CLASSPATH de su apli-
cación o del JRE que queramos usar para la integración. Para esto último, consulte la documentación de su
JRE. Típicamente, lo normal es añadir directamente estas bibliotecas dentro de la variable de entorno
CLASSPATH (https://docs.oracle.com/javase/tutorial/essential/environment/paths.html) o hacer uso de al-
gún gestor de dependencias como Apache Maven.
Adicionalmente, si no se le indica al objeto cliente la configuración para la conexión con el componente cen-
tral, esta se cargará del fichero de configuración:
client_config.properties
Este debe ser un fichero de propiedades y contener aquellas necesarias para la conexión con el componente
central.
fireUrl
o URL del servicio del componente central.
37
Kit de Integración FIRe
javax.net.ssl.keyStore (Opcional)
o Ruta del almacén de claves para la autenticación mediante certificado con el componente
central. Este certificado debe estar dado de alta en la base de datos del componente central,
asignado al identificador de la aplicación cliente en la que se esté integrando el componente
distribuido.
o Si se omite este parámetro se usará la configuración establecida a nivel global en la JRE.
javax.net.ssl.keyStorePassword (Opcional)
o Contraseña del almacén de claves de autenticación SSL.
javax.net.ssl.keyStoreType (Opcional)
o Tipo del almacén de claves del certificado de autenticación SSL: “JKS” (almacén de Java) o
“PKCS12” (almacén PKCS12/PFX).
o Por defecto, se considera que el almacén es de tipo JKS.
javax.net.ssl.trustStore (Opcional)
o Ruta del almacén de certificados de confianza SSL. Esto se usa cuando el certificado con el
que se ha montado el SSL del componente central no está en el almacén de confianza de
Java y se desea establecer un almacén de confianza alternativo.
o En caso de querer desactivar la comprobación del certificado SSL del servidor, se puede con-
figurar el valor “all”.
o Si se omite este parámetro se usará la configuración establecida a nivel global en la JRE. Por
defecto, se confiará en los certificados dados de alta en el almacén “cacerts”.
javax.net.ssl.trustStorePassword (Opcional)
o Contraseña del almacén de confianza.
javax.net.ssl.trustStoreType (Opcional)
o Tipo del almacén de confianza: “JKS” (almacén de Java) o “PKCS12” (almacén PKCS12/PFX).
o Por defecto, se considera que el almacén es de tipo JKS.
fireUrl=https://localhost:8443/fire-signature/fireService
javax.net.ssl.keyStore=app_fire.jks
javax.net.ssl.keyStorePassword=11111111
javax.net.ssl.keyStoreType=JKS
En caso de utilizarse este fichero de configuración, debe estar en el directorio que se haya proporcionado a
la aplicación mediante la propiedad “fire.config.path” de Java o, si no se ha configurado, en el
CLASSPATH del servidor de aplicaciones.
Consulte la documentación de su servidor de aplicaciones o contenedor de aplicaciones Web Java para co-
nocer como proporcionarle propiedades o como introducir ficheros de propiedades dentro del CLASSPATH
de las aplicaciones.
Consulte el manual de integración de FIRe para más información sobre cómo hacer uso de FIRe desde sus
aplicaciones.
38
Kit de Integración FIRe
6.1.1 TRAZAS DE REGISTRO DEL COMPONENTE DISTRIBUIDO JAVA
El componente distribuido Java utiliza SLF4J como biblioteca para la generación de trazas de registro. Esta
biblioteca permite que el integrador enlace los logs del componente distribuido de FIRe con los del resto de
su aplicación por medio de la “biblioteca puente“ correspondiente a su sistema de logs (Log4J, Log4J 2, Apa-
che Logging API,…). Para más información, consulte el manual del integrador de FIRe.
Todos los logs del componente distribuido Java de FIRe se imprimen con el nombre de la clase que los genera.
Así, pueden recogerse todos utilizando el nombre “es.gob.fire.client”.
6.2 .NET
Se requiere un entorno de ejecución de Microsoft .NET en versión 4 o superior.
La versión .NET del componente distribuido se encuentra en formato de biblioteca de enlace dinámico (DLL)
de .NET (construida con C#). Esta biblioteca se llama fire.dll.
La instalación de la biblioteca necesita que esta se encuentre en uno de los directorios de carga de bibliotecas
de la aplicación que la utilice, que típicamente son:
1. El mismo directorio que la aplicación (EXE, DLL, etc.) que use el componente distribuido.
2. Un directorio dentro del PATH del sistema.
3. El directorio de bibliotecas del sistema, normalmente %SystemRoot%/System32
https://msdn.microsoft.com/en-us/library/7314433t%28v=vs.90%29.aspx
Los servicios del componente central a los que accederá esta biblioteca y la configuración de acceso deben
establecerse en el registro de Windows dentro de la clave “HKEY_CURRENT_USER\Software\FIRe” con
los nombres de valor:
fire_service: URL del servicio de FIRe.
ssl_client_pkcs12: Ruta absoluta del almacén PKCS#12/PFX con las clave y certificado para la
autenticación cliente SSL contra el componente central.
ssl_client_pass: Contraseña del almacén PKCS#12/PFX para la autenticación cliente SSL contra
el componente central.
admit_all_certs: Opcional. Indica si debe obviarse la autenticación del certificado SSL (“true”) o
si debe comprobarse la validez y confianza del certificado como el algoritmo, la fecha de caducidad,
que se encuentre en el almacén de confianza de Windows, etc. (“false”). Por defecto, realizarán las
comprobaciones de seguridad.
Estas claves deben ser de tipo cadena de texto.
39
Kit de Integración FIRe
Para agregarse estas claves al registro de Windows puede utilizarse un fichero REG como el que se indica a
continuación de ejemplo:
[HKEY_CURRENT_USER\Software\FIRe]
"fire_service"="https://servidor.com/fire-signature/fireService"
"ssl_client_pkcs12"="C:/users/usuario/Documents/client_ssl.pfx"
"ssl_client_pass"="12345678"
"admit_all_certs"="true"
En este ejemplo, se configura la URL de acceso del servicio localizado en el dominio de ejemplo “servi-
dor.com”. Además, las peticiones al servicio se autenticarán con el certificado cliente del almacén indicado y
no se comprobará la validez y confianza del certificado SSL del servidor.
Dado que la configuración del registro se almacena en la rama de usuario del registro, la importación debe
hacerse con el mismo usuario que se utilice para ejecutar la aplicación que haga uso de la DLL del compo-
nente distribuido.
6.3 PHP
Se requiere un entorno de ejecución de PHP, en versión 5 o superior, y la extensión “php_curl” habilitada. Si
se va a utilizar la función auxiliar parse_certificate(), también será necesario activar la extensión
“php_openssl”.
El componente distribuido PHP se presenta como un único fichero PHP llamado “fire.php”. Su integración
requiere únicamente su referencia desde el fichero PHP que haga uso de él. En este fichero se incluyen las
variables de configuración con las URL de los servicios del componente central y la propia lógica comunica-
ción.
Las variables para la configuración de las URL de los servicios del componente central son:
<?php
…
40
Kit de Integración FIRe
En este ejemplo, se configura las URL de acceso del servicio localizado en el dominio de ejemplo “servi-
dor.com”.
También será necesario configurar la conexión SSL cliente contra el componente centralizado a través de
cURL. Para esto, estableceremos en el array de propiedades “$client_ssl_curl_options” que se en-
cuentra al principio de “fire.php” con las propiedades necesarias.
$client_ssl_curl_options = array(
CURLOPT_SSLCERT => "ssl_client_cert.pem", // Ruta certificado SSL cliente
CURLOPT_SSLCERTTYPE => "PEM", // Formato del certificado
CURLOPT_SSLKEY => "ssl_client_key.pem", // Ruta clave del certificado
CURLOPT_SSLKEYTYPE => "PEM", // Formato de clave privada
CURLOPT_SSLKEYPASSWD => "password", // Contraseña de la clave privada
CURLOPT_SSL_VERIFYPEER => 0 // Verificar certificado SSL del servidor
);
Se puede consular la información completa sobre estos y otros parámetros de configuración de cURL en la
web: https://curl.haxx.se/libcurl/c/easy_setopt_options.html
Puede importar el componente de distribuido PHP desde su aplicación cliente PHP, mediante el comando
include.
Por ejemplo:
<html>
<head>
<title>Ejemplo de importacion</title>
</head>
<body>
<?php
include 'fire.php';
…
41
Kit de Integración FIRe
7 COMPONENTE DE ADMINISTRACIÓN
La aplicación de administración es independiente al componente central y permite gestionar qué aplicacio-
nes cliente tienen permiso para acceder a él. El componente de administración parte con un único usuario
administrador; el usuario “admin”, con contraseña “1111”. Un administrador de FIRe debería acceder al mó-
dulo de administración, cambiar esta contraseña por defecto y, opcionalmente, dar de alta otros usuarios
para el resto de administradores si los hubiera.
Para saber más de las opciones de administración de FIRe, consulte el manual del módulo de administración.
bbdd.driver
o Clase del driver JDBC que se desea utilizar.
bbdd.conn
o Cadena de conexión a la base de datos del sistema.
cipher.class
o Nombre de la clase encargada de descifrar valores del resto de propiedades. Esta clase debe
implementar la interfaz es.gob.fire.server.decipher.PropertyDecipher. El uso de
esta funcionalidad es igual a la descrita en el apartado “Cifrado de propiedades” para el ci-
frado de propiedades del componente central.
bbdd.driver=com.mysql.jdbc.Driver
bbdd.conn=jdbc:mysql://172.24.31.110:3306/fire_db?user=clave&password={@ci-
phered: Gh76/bas6FtC4ep= }
cipher.class=es.gob.miapp.fire.MiPasswordDecipher
42
Kit de Integración FIRe
8 COMPONENTES ADICIONALES
Los componentes relevantes de FIRe se han descrito en los anteriores apartados, pero pueden existir otros
componentes que den soporte a alguna de las funcionalidades agregadas a FIRe, como conectores para el
uso de proveedores en la nube o gestores de datos para la recuperación y guardado de los datos procesados
por FIRe.
En este apartado se describen los componentes adicionales que se distribuyen junto a FIRe. Considere que
estos componentes sirven a un fin concreto y, según el despliegue o la funcionalidad configurada en FIRe, es
posible que no sea necesario su despliegue.
43
Kit de Integración FIRe
9 CONFIGURACIÓN DE NUEVOS PROVEEDORES
FIRe permite configurar múltiples proveedores de firma en la nube. En la distribución básica de FIRe se dis-
tribuyen los conectores de varios proveedores, pero se pueden agregar otros nuevos, que se distribuyan de
forma independiente o desarrollados por su organismo, y que se deseen incorporar en un despliegue de FIRe.
Es muy importante comprobar que los conectores que se desean incorporar a FIRe proceden de entidades
de confianza. Estos conectores se ejecutarán dentro del servidor de aplicaciones de su organismo, con lo cual
pueden llegar a afectar a FIRe u otras aplicaciones desplegadas, así como acceder a información de los usua-
rios de FIRe y los documentos que se procesan. No despliegue en FIRe conectores de dudosa procedencia o
que crea que pueden suponer un riesgo para la seguridad de su información o de sus usuarios.
Tenga en cuenta que el despliegue de un nuevo conector implica la modificación del despliegue actual y
debería realizarse con el servidor de aplicaciones detenido para garantizar el correcto funcionamiento. Pre-
pare todo de antemano antes de realizar el despliegue e intente realizarlo en un momento de baja carga de
trabajo del servidor. En un despliegue sobre múltiples nodos puede ir abordando esta tarea de forma se-
cuencial para no interrumpir el servicio.
En este apartado se describen los pasos genéricos para el despliegue de nuevos conectores en el componente
central de FIRe. Es probable que a estos pasos se agreguen otros específicos para cada conector particular.
Consulte la documentación de los conectores que desee integrar para conocer las necesidades concretas de
estos y las opciones de configuración que soportan.
45
Kit de Integración FIRe
10 DESPLIEGUE EN ENTORNOS BALANCEADOS
Los componentes distribuidos y de administración de FIRe no almacenan datos temporales o de sesión en el
servidor, por lo que pueden desplegarse en un entorno balanceado sin necesidad de realizar ninguna actua-
ción adicional para garantizar su funcionamiento.
Para simplificar el despliegue en entornos balanceados, el componente central permite el guardado de se-
siones para su compartición entre los distintos nodos en los que se ha desplegado el componente central.
Para el uso de esta facilidad, se deberán seguir los siguientes pasos:
1. Disponer de almacenamiento compartido entre todos los nodos que desplieguen el componente
central. Es imprescindible que todos estos nodos tengan acceso a este almacenamiento compartido.
2. Configurar que los objetos temporales del componente central se almacenen en el almacenamiento
compartido. Esto se realizará a través de la propiedad ”temp.dir” del fichero ”config.proper-
ties”, mediante la cual se configura la ruta del directorio de ficheros temporales de la aplicación.
3. Mantener la hora de todos los nodos sincronizados en la medida de lo posible. Cada uno de los nodos
puede ejecutar revisiones periódicas de los ficheros temporales para eliminar aquellos que se consi-
deren caducados. En caso de desincronización, un nodo podría escribir un fichero y otro, con una
hora más, eliminarlo de inmediato por considerarlo caducado según su reloj.
4. Configurar un gestor para la compartición de sesiones a través del fichero de configuración del com-
ponente central.
o Se puede establecer el gestor de sesiones a través de la propiedad “sessions.dao” del
fichero “config.properties”.
o Los valores aceptados son:
filesystem
Gestor que comparte las sesiones a través de disco. Para ello utiliza el direc-
torio configurado en la propiedad “temp.dir”.
o No se debería configurar un gestor de sesiones si no se está realizando un despliegue en un
entorno balanceado, ya que su uso implica la realización de tareas innecesarias cuando el
despliegue se realiza en un único nodo.
5. Configurar que los objetos temporales del servicio simulador se almacenen en el almacenamiento
compartido. Esto se realizará a través de la propiedad ”tmp_dir” del fichero ”test-ba-
ckend.properties”, mediante la cual se configura la ruta del directorio de ficheros temporales de
la aplicación.
46
Kit de Integración FIRe
47
Kit de Integración FIRe
ANEXO I. MIGRACIÓN A FIRE 2.3
FIRe 2.2 introdujo la posibilidad de gestionar una mayor cantidad de elementos desde su módulo de admi-
nistración, lo que implicó cambios en su base de datos y en cómo el componente central accede a la infor-
mación de las aplicaciones.
Se distribuye junto a FIRe un script SQL para actualizar las bases de datos Oracle y MySQL desde versiones
anteriores de FIRe (“Migracion_fire_2_-_2_2.sql”). Este script creará las nuevas tablas de base de datos
necesarias y migrará los datos de su base de datos al nuevo modelo para que no tenga que hacer nada de
forma manual.
Algunos datos de las nuevas tablas, se rellenarán con datos por defecto por no haber existido hasta el mo-
mento. Consulte el manual de administración e FIRe para conocer las ventajas del nuevo módulo de admi-
nistración y como, opcionalmente, completar estos datos.
Si tiene problemas al migrar a la nueva versión de FIRe, pruebe a eliminar el resto de tablas de la base de
datos, ejecutar los scripts de su anterior versión de FIRe y copiar los datos de la tabla “tb_aplicacio-
nes_old” a “tb_aplicaciones”.
Si se utiliza un SGBD distinto a Oracle y MySQL, su administrador (DBA), deberá generar las sentencias SQL
necesarias para generar el nuevo modelo de dato y migrar los datos de uno a otro.
1. Traspasar los datos de usuario por defecto creado en la tabla tb_configuracion, a tb_usua-
rios donde el campo parametro se corresponderá con el campo nombre_usuario y el campo
valor se corresponde con el campo clave. Los campos nombre y apellidos al ser obligato-
rios deberán rellenarse con algún dato por defecto al insertarlos.
48
Kit de Integración FIRe
Traspasar los datos de los certificados de la tabla tb_aplicaciones a la nueva tabla tb_cer-
tificados. Los campos cer y huella a los campos cert_principal y huella_princi-
pal respectivamente. Se debe tener en cuenta que, al crear los registros en la nueva tabla, el campo
id_certificado que es auto-numérico se corresponderá con la nueva tabla tb_aplicacio-
nes con el campo fk_certificado y deberá tener un nombre para el certificado, en los ejem-
plos de los scripts de traspaso para MySQL y ORACLE el nombre del certificado se compone de
“CERT_” + campo id de la tabla tb_aplicaciones.
Traspasar los datos de la anterior tabla de tb_aplicacione a la nueva tabla, sin los datos ante-
riormente mencionados de certificados (cer y huella). En dicho traspaso se deberán también in-
dicar el dato numérico en el campo fk_certificado correspondiente al campo id_certi-
ficado creado anteriormente en la tabla de certificados.
FIRe 2.2 introduce nuevas opciones de configuración, así como el nuevo sistema multiproveedor que permite
agregar nuevos proveedores y obliga a que estos se configuren de forma independiente.
Para reutilizar la configuración de su FIRe 2.1/2.1.1 en el nuevo FIRe 2.2 deberá aplicar los siguientes cambios:
Fichero config.properties
providers=clavefirmatest,local
provider.clavefirmatest=es.gob.fire.server.connector.test.TestConnector
49
Kit de Integración FIRe
Agregue a su fichero de configuración la propiedad “providers” con el
valor “clavefirma,local”.
providers=clavefirma,local
provider.clavefirma=es.gob.fire.server.connector.clavefirma.ClaveFirmaConnector
clavefirma.providerName
Fichero gatewayapi.properties
Fichero provider_clavefirma.properties
o Este fichero configura el comportamiento del conector de Cl@ve Firma y debe contener la
propiedad “clavefirma.providerName” extraída del fichero “config.properties” y
todas las propiedades del fichero “gatewayapi.properties”.
o Este fichero también permite configurar nuevas propiedades. Consulte el apartado Fichero
provider_clavefirma.properties para conocerlas.
o Por ejemplo:
clavefirma.providerName=MI_PROVIDER_NAME
URL_GATEWAY=https://direccionclavefirma.gob.es:452/servicio
AUTH_STORE=RUTA_ABSOLUTA_ALMACEN_PKCS12
AUTH_STORE_PASS=CONTRASEÑA_ALMACEN_PKCS12
50
Kit de Integración FIRe
Fichero provider_clavefirmatest.properties
o Este fichero configura el comportamiento del conector del simulador de Cl@ve Firma para
pruebas y debe contener las propiedades que comenzaban por “test.” del fichero “con-
fig.properties”.
o Por ejemplo:
test.endpoint=https://127.0.0.1:8443/clavefirma-test-services
test.ssl.keystore=C:/Users/usuario/SSL/client_ssl.jks
test.ssl.keystorePass=12345678
test.ssl.keystoreType=JKS
test.ssl.truststore=all
#test.ssl.truststorePass=
#test.ssl.truststoreType=
Consulte el apartado Fichero config.properties para identificar si la nueva versión de FIRe incluye alguna
nueva propiedad de configuración que pueda ser de interés para su despliegue.
Las aplicaciones que utilicen FIRe no deberán realizar ningún cambio en su código. Sin embargo, es necesario
que actualicen el componente distribuido que estén utilizando (Java, .NET o PHP) por el correspondiente de
la versión de FIRe que se haya desplegado.
En el caso de utilizar el componente distribuido Java, también será necesario importar en la aplicación la
biblioteca de SLF4J (versión 1.7.25) y la biblioteca correspondiente al sistema de log que se desee utilizar.
Consulte el manual del integrador de FIRe para más información.
No es necesario realizar ningún cambio en la base de datos para migrar de FIRe 2.2 a FIRe 2.3.
No es necesario realizar ningún cambio en la configuración del componente central para migrar de FIRe 2.2
a FIRe 2.3.
Las aplicaciones que utilicen el componente distribuido de FIRe 2.2 no deberán realizar ningún cambio en su
código. Los componentes distribuidos de FIRe 2.2 son compatibles con FIRe 2.3, por lo que tampoco es obli-
gatoria su actualización, aunque sí aconsejable para aprovechar las nuevas características integradas en esta
versión.
51
Kit de Integración FIRe
Para actualizar al nuevo componente distribuido sólo es necesario sustituir el antiguo componente por el
nuevo (JAR, DLL o fichero PHP).
En el caso de utilizar el componente distribuido Java, también será necesario importar en su aplicación la
biblioteca de SLF4J (versión 1.7.25) y la biblioteca correspondiente al sistema de log que se desee utilizar.
Consulte el manual del integrador de FIRe para más información.
52
Kit de Integración FIRe
ANEXO II. DESPLIEGUE DE DEMOSTRACIÓN SOBRE APACHE
TOMCAT
En el kit de integración se ofrece un despliegue de demostración realizado sobre Apache Tomcat para que
sirva de referencia y de ayuda en el uso de los diferentes ficheros de configuración.
Este Tomcat:
Tiene desplegado los WAR del componente central (fire-signature.war), la aplicación de ejem-
plo (fire-test-jsp.war), el servicio de prueba (clavefirma-test-services.war) y el com-
ponente de administración (fire-admin-jsp.war).
Tiene configurado en el fichero “catalina.properties” una nueva ruta al CLASSPATH para que
los ficheros de configuración se puedan cargar desde “webapps/fire_config”.
Tiene configurado en el fichero “server.xml” el uso de SSL con autenticación cliente y un TrustMa-
nager a medida para que deje pasar peticiones independientemente del certificado utilizado. El cer-
tificado SSL servidor se incluye en el propio Tomcat.
Para hacer funcionar la aplicación de prueba de FIRe sobre este despliegue es necesario:
53
Kit de Integración FIRe
ADVERTENCIA: El componente de firma local AutoFirma incluye como medida de seguridad no firmar
cuando se ejecuta desde una web desplegada en local (127.0.0.1 o localhost). Para poder utilizar las
funciones de firma con certificado local, se deberá optar por una de las siguientes opciones:
Puede cambiarse la ruta en la que están desplegados los servicios backend de pruebas a través del
fichero de configuración del componente central. Si no se establece, se buscará por defecto en
“https://127.0.0.1:8443/clavefirma-test-services/”.
54
Kit de Integración FIRe
ANEXO III. PROBLEMAS CONOCIDOS
55
Kit de Integración FIRe