# Autenticação SSL na API do GBDS

## Introdução

A API do GBDS provê autenticação SSL para a conexão entre cliente e servidor usando o protocolo TLS, habilitando uma nova camada de segurança. Este manual cobre os processos para habilitar a autenticação SSL na API do GBDS.

## Certificados

A autenticação SSL usando TLS requer autenticação mútua, então o primeiro passo é a geração dos certificados do cliente e do servidor, os quais devem ter um formato válido. Os passos para permitir a autenticação dos dois lados são explicados abaixo.

### Certificados do Servidor

Um arquivo *Keystore* e um arquivo *Truststore* devem ser criados no servidor e alocados em `/etc/griaule/keystore`. Os dois arquivos devem ter formato PKCS12 (`.pfx` ou `.p12`).

As cadeias públicas de certificação dos certificados do cliente e do servidor devem ser adicionadas ao *Truststore* para permitir a autenticação.

### Certificados do Cliente

Um arquivo *Keystore* e um arquivo *Truststore* devem ser criados no cliente. Esses serão usados para a autenticação da aplicação.

A cadeia pública de certificação que pertence ao servidor deve ser adicionada à *Truststore* da aplicação cliente.

## Configuração da API

Alguns parâmetros de configuração devem ser editados ou adicionados para permitir a autenticação SSL na API do GBDS. Quando todos os parâmetros estiverem corretamente incluídos, o serviço da API deve ser reiniciado para aplicar as mudanças no arquivo de configuração.

{% hint style="warning" %}
Ao habilitar a autenticação SSL na API do GBDS, será necessária autenticação TLS para qualquer comunicação com a porta da API, não havendo possibilidade de comunicação via HTTP.
{% endhint %}

O caminho do arquivo de configuração da API é `/etc/griaule/conf/gbsapi/gbdsapi.properties` e os parâmetros a serem modificados são os seguintes:

**security.require-ssl**

> Esse parâmetro define se SSL é necessário para comunicação com a API. Seu valor deve ser definido como `true` para habilitar a autenticação SSL.
>
> *value*: `true`

**server.ssl.protocol**

> Esse parâmetro define o protocolo SSL a ser utilizado na autenticação. Seu valor deve ser definido como `TLS`.
>
> *value*: `TLS`

**server.ssl.client-auth**

> Esse parâmetro define se a autenticação do cliente é necessária para a comunicação com a API. Seu valor deve ser definido como `need`.
>
> *value*: `need`

**server.ssl.key-store**

> Esse parâmetro define o caminho para o arquivo *Keystore* que será utilizado no servidor.
>
> *value*: `/etc/griaule/keystore/<keystore>.pfx`

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

> Esse parâmetro define a senha a ser utilizada ao acessar o arquivo *Keystore* para validação do certificado.
>
> *value*: `keystore password`

**server.ssl.trust-store**

> Esse parâmetro define o caminho para o arquivo *Truststore* que será utilizado no servidor.
>
> *value*: `/etc/griaule/keystore/<trustore>.pfx`

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

> Esse parâmetro define a senha a ser utilizada ao acessar o arquivo *Truststore* para validação do certificado.
>
> *value*: `<truststore password>`


---

# 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/instalacao-do-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.
