# Autenticación SSL en la API de GBDS

## Introducción

La API de GBDS provee autenticación SSL para la conexión entre cliente y servidor usando el protocolo TLS, habilitando una nueva capa de seguridad. Este manual cubre los procesos para habilitar la autenticación SSL en la API de GBDS.

## Certificados

La autenticación SSL usando TLS requiere autenticación mutua, por lo que el primer paso es la generación de los certificados del cliente y del servidor, los cuales deben tener un formato válido. Los pasos para permitir la autenticación de ambos lados se explican a continuación.

### Certificados del Servidor

Un archivo *Keystore* y un archivo *Truststore* deben ser creados en el servidor y ubicados en `/etc/griaule/keystore`. Los dos archivos deben tener formato PKCS12 (`.pfx` o `.p12`).

Las cadenas públicas de certificación de los certificados del cliente y del servidor deben ser añadidas al *Truststore* para permitir la autenticación.

### Certificados del Cliente

Un archivo *Keystore* y un archivo *Truststore* deben ser creados en el cliente. Estos serán usados para la autenticación de la aplicación.

La cadena pública de certificación que pertenece al servidor debe ser añadida al *Truststore* de la aplicación cliente.

## Configuración de la API

Algunos parámetros de configuración deben ser editados o añadidos para permitir la autenticación SSL en la API de GBDS. Cuando todos los parámetros estén correctamente incluidos, el servicio de la API debe ser reiniciado para aplicar los cambios en el archivo de configuración.

{% hint style="warning" %}
Al habilitar la autenticación SSL en la API de GBDS, será necesaria autenticación TLS para cualquier comunicación con el puerto de la API, sin posibilidad de comunicación vía HTTP.
{% endhint %}

La ruta del archivo de configuración de la API es `/etc/griaule/conf/gbsapi/gbdsapi.properties` y los parámetros que deben modificarse son los siguientes:

**security.require-ssl**

> Este parámetro define si SSL es necesario para la comunicación con la API. Su valor debe establecerse como `true` para habilitar la autenticación SSL.
>
> *value*: `true`

**server.ssl.protocol**

> Este parámetro define el protocolo SSL que se utilizará en la autenticación. Su valor debe establecerse como `TLS`.
>
> *value*: `TLS`

**server.ssl.client-auth**

> Este parámetro define si la autenticación del cliente es necesaria para la comunicación con la API. Su valor debe establecerse como `need`.
>
> *value*: `need`

**server.ssl.key-store**

> Este parámetro define la ruta al archivo *Keystore* que será utilizado en el servidor.
>
> *value*: `/etc/griaule/keystore/<keystore>.pfx`

**server.ssl.key-store-password**

> Este parámetro define la contraseña que se utilizará al acceder al archivo *Keystore* para la validación del certificado.
>
> *value*: `contraseña del keystore`

**server.ssl.trust-store**

> Este parámetro define la ruta al archivo *Truststore* que será utilizado en el servidor.
>
> *value*: `/etc/griaule/keystore/<trustore>.pfx`

**server.ssl.trust-store-password**

> Este parámetro define la contraseña que se utilizará al acceder al archivo *Truststore* para la validación del certificado.
>
> *value*: `<contraseña del truststore>`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.griaule.com/gbs/es/instalacion-de-gbds/sslapi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
