Guía del utilitario PPS
Audiencia: TPP y Bancos ·
Propósito: generar las firmas digitales de seguridad (registro DCR y client_assertion) sin tener que construirlas manualmente.
Producir los security details a mano (firmas DCR, client assertion, pruebas DPoP y x-jws-signature) es complejo y propenso a errores. El utilitario PPS automatiza esa generación a partir de los certificados y llaves del participante.
Descarga del utilitarioEl utilitario se distribuye como un
.zipque contiene elapp.jary los archivos de soporte. Descargar aquíContenido del
.zip:
app.jar— el ejecutable del utilitario.unified/— archivos de configuración (utilitiesunified_{env}.yml).works/— archivos reales del participante (certificados.pem, llaves.key,.jksy.jwks), organizados por ambiente.
1. Objetivo del utilitario
El utilitario genera firmas digitales que protegen información sensible antes de enviarla a otros sistemas. La firma permite comprobar que el mensaje:
- proviene de quien dice enviarlo, y
- no ha sido alterado en el camino.
La firma se envía por separado del mensaje, como lo exigen los estándares financieros de Open Banking.
2. Prerrequisitos
Antes de usar el utilitario, debe haberse completado el intercambio inicial con Redeban: enviar los CSR y recibir los archivos .jks y .jwks.
Desde el archivo .jwks se identifica la URL del campo x5u para descargar los certificados públicos en formato .pem. El campo use indica para qué sirve cada certificado:
use | Certificado | Uso |
|---|---|---|
tls | network | Proteger la comunicación entre sistemas (mTLS). |
sig | signing | Firmar digitalmente mensajes o solicitudes. |
Glosario breve de archivos
- CSR (solicitud de certificado)
- .jks (almacén de llaves/certificados en Java)
- .jwks (conjunto de claves públicas)
- .pem (certificado público para validación)
- .key (llave privada).
3. Configuración mínima
El utilitario se configura mediante un archivo externo que define las rutas de los archivos y los datos del participante, sin necesidad de modificar el código. Se recomienda organizar los archivos junto al .jar con esta estructura:
| Carpeta | Contenido |
|---|---|
unified/ | Archivos de configuración. Definen las rutas hacia certificados (.pem), llaves privadas (.key) y archivos .jks/.jwks. |
works/ | Archivos reales: certificados, llaves privadas, .jks y .jwks. |
Ubicación del archivo de configuración
El archivo debe estar en la misma ruta del .jar, dentro de la carpeta unified/, con el formato utilitiesunified_{env}.yml, donde {env} puede ser sandbox o cert.
Contenido del archivo
Como mínimo se configuran las rutas de las llaves privadas, los certificados públicos, el archivo .jwks, el archivo .jks y datos como el SSA y el OnboardingID.
4. Archivos clave
| Archivo | Para qué sirve |
|---|---|
| .key | Llave privada usada para generar la firma. |
| .pem | Certificado público que otros sistemas usan para validar la firma. |
| .jwks | Contiene identificadores, uso de certificados y ubicación de descarga. |
| .jks | Almacén usado por aplicaciones Java para certificados y llaves. |
5. Cómo ejecutar el utilitario
El sistema se distribuye como un archivo .jar.
Requisitos previos
- Java 21 instalado.
- Una terminal (CMD o PowerShell).
Paso 1. Seleccionar el ambiente: cert o sandbox.
Paso 2. Ejecutar el app.jar desde la terminal con el perfil correspondiente:
java --jar ./app.jar --spring.profiles.active=cert
Reemplazarcertporsandboxcuando corresponda.
Paso 3. Abrir Swagger en el navegador para probar los servicios:
http://localhost:5003/swagger-ui/index.html6. Casos de uso principales
6.1 Firma para registro (DCR)
Sirve para firmar la información requerida al registrar una aplicación. Usa el kid del certificado de signing y datos como software_id, scope y SSA.
Endpoint: en Swagger, ir a dynamic-client-registration-controller y hacer clic en Try it out para generar el DCR.

Descripción de los campos (headers y body):
| Campo | Descripción |
|---|---|
kid | Se obtiene del .jwks, de la llave de firma (la que tiene el claim use con valor sig). |
iss | Identificador del emisor del token. Se recomienda mantener el valor Redeban. |
aud | Audiencia del token. Se recomienda mantener https://authlete.com. |
scope | Para una Entidad, bank; para un TPP, payments. |
bank | true si es una Entidad, false si es un TPP. |
redirect_uris | Las mismas URLs de redirección del SSA (claim software_redirect_uris). |
software_id | El software_client_id del SSA. |
software_statement | El contenido completo del SSA. |
Para consultar el contenido del SSA puede usarse un decodificador de JWT como jwt.io.
Resultado. Se obtiene una firma que se incorpora al payload enviado al endpoint de registro del ambiente correspondiente:
| Ambiente | Endpoint de registro |
|---|---|
| Sandbox | https://api.sen.redebanopenfinance.com/register/v1 |
| Certificación | https://api.stage.redebanopenfinance.com/register/v1 |
6.2 Firma para autenticación (Client Assertion)
Permite generar un token de autenticación (client_assertion) con el que el sistema solicita acceso a otros servicios.
Datos clave: kid, sub, iss, isBank e isPreproduction.

Resultado. Se obtiene un token JWT utilizable para autenticarse ante otros servicios.
7. Relación entre archivos y carpetas
Las rutas definidas en la configuración deben apuntar correctamente a los archivos de llaves, certificados, .jwks y .jks. Estos archivos deben estar en la misma ruta del .jar, dentro de la carpeta works/, organizada por ambiente (por ejemplo sandbox y certification).
Cada llave privada debe corresponder exactamente al certificado público asociado.
Ejemplo de configuración de rutas:
utilities:
thirdPartyProviderPaths:
privateKeySigningFile: 'works/certification/{{namefile_signing}}.key'
privateKeyNetworkFile: 'works/certification/{{namefile_network}}.key'
publicKeySigningFile: 'works/certification/{{namefile_signing}}.pem'
publicKeyNetworkFile: 'works/certification/{{namefile_network}}.pem'
jwksFile: 'works/certification/{{namefile_OB}}.jwks'
jksFile: 'works/certification/{{namefile_SC}}.jks'8. Flujo resumido del proceso
- Verificar que se recibieron los archivos requeridos y descargar los certificados
.pem. - Configurar correctamente las rutas en el archivo
utilitiesunified_{env}.yml. - Ubicar los archivos en las carpetas del ambiente correspondiente.
- Ejecutar el utilitario y generar la firma o el token necesario.
9. Problemas comunes
| Síntoma | Qué revisar |
|---|---|
| Los datos no coinciden | Revisar las identificaciones y los valores enviados. |
| El sistema no encuentra los archivos | Validar que las rutas configuradas sean correctas. |
| Errores con las llaves | Verificar que el formato de los archivos sea válido y que cada llave corresponda a su certificado. |
10. Nota importante
El sistema utiliza por defecto el puerto de ejecución 5003.