# Instalação e configuração de certificados SSL

## Obtenção de certificados SSL

Sherpa AIServer suporta conexões HTTPS para garantir comunicação segura. Este guia descreve as maneiras de obter certificados SSL para uso no sistema.

### Recomendações para obtenção de certificados

{% hint style="warning" %}
**Importante:** Antes de obter certificados, consulte o administrador da sua rede interna ou o centro de certificação da sua empresa. Certificados corporativos geralmente são fornecidos pelo departamento de TI e garantem melhor integração com a infraestrutura de segurança existente.
{% endhint %}

Se certificados corporativos não estiverem disponíveis, considere as seguintes opções para obter certificados para domínios externos nas seções a seguir.

### Obtenção de certificados corporativos

Se sua organização possui um centro de certificação (CA) interno, entre em contato com o administrador do sistema para obter os certificados. Informe o domínio para os certificados e receba 2 arquivos: certificado (`.crt`) e chave privada (`.key`). Após recebê-los, instale-os da seguinte forma:

```bash
# Crie diretórios para os certificados
mkdir -p ./oais/backend/config/certs/
mkdir -p ./embed-server/certs/

# Para o servidor principal (renomeie os arquivos conforme recebido)
cp your_certificate.crt ./oais/backend/config/certs/aiserver.crt
cp your_private.key ./oais/backend/config/certs/aiserver.key
```

<details>

<summary>💡 Comentários sobre a obtenção de certificados corporativos</summary>

**mkdir -p ./oais/backend/config/certs/** - cria o diretório para os certificados do servidor principal

* `-p` - cria diretórios pai se necessário

**mkdir -p ./embed-server/certs/** - cria o diretório para os certificados do serviço de embedding

**cp your\_certificate.crt ./oais/backend/config/certs/aiserver.crt** - copia o certificado **cp your\_private.key ./oais/backend/config/certs/aiserver.key** - copia a chave privada

**chmod 644 ./oais/backend/config/certs/\*.crt** - define permissões de leitura para os certificados **chmod 600 ./oais/backend/config/certs/\*.key** - define permissões apenas para o proprietário nas chaves

</details>

### Obtenção de certificados confiáveis através do Let's Encrypt

Para obter certificados confiáveis gratuitos do Let's Encrypt, use o Certbot em uma máquina com acesso à internet.

#### Instalação do Certbot

```bash
# No Ubuntu/Debian
sudo apt update
sudo apt install certbot

# No CentOS/RHEL
sudo yum install certbot

# No macOS (com Homebrew)
brew install certbot
```

<details>

<summary>💡 Comentários sobre a instalação do Certbot</summary>

**Ubuntu/Debian:**

* `sudo apt update` - atualiza a lista de pacotes
* `sudo apt install certbot` - instala o Certbot

**CentOS/RHEL:**

* `sudo yum install certbot` - instala o Certbot via yum

**macOS:**

* `brew install certbot` - instala o Certbot via Homebrew

</details>

#### Obtenção de certificado para o domínio

```bash
# Obtenha o certificado para seu domínio (substitua yourdomain.com pelo seu domínio)
sudo certbot certonly --standalone -d yourdomain.com

# Ou para certificado wildcard (requer DNS challenge)
sudo certbot certonly --manual --preferred-challenges=dns -d yourdomain.com -d *.yourdomain.com
```

<details>

<summary>💡 Comentários sobre a obtenção do certificado</summary>

**sudo certbot certonly --standalone -d yourdomain.com** - obtém o certificado para o domínio

* `certonly` - obtém apenas os certificados, sem configurar o servidor web
* `--standalone` - inicia um servidor web temporário para o desafio HTTP-01
* `-d yourdomain.com` - especifica o domínio para o certificado

\**sudo certbot certonly --manual --preferred-challenges=dns -d yourdomain.com -d .yourdomain.com* - obtém o certificado wildcard

* `--manual` - modo manual (requer registro DNS)
* `--preferred-challenges=dns` - utiliza o desafio DNS-01
* `-d *.yourdomain.com` - domínio wildcard

</details>

#### Localização dos certificados obtidos

Após a obtenção bem-sucedida dos certificados, eles estarão localizados no diretório `/etc/letsencrypt/live/yourdomain.com/`:

```bash
# Verifique o conteúdo do diretório com os certificados
sudo ls -la /etc/letsencrypt/live/yourdomain.com/

# A saída deve conter:
# cert.pem (certificado)
# chain.pem (cadeia de certificados)
# fullchain.pem (cadeia completa)
# privkey.pem (chave privada)
```

<details>

<summary>💡 Comentários sobre a localização dos certificados</summary>

**sudo ls -la /etc/letsencrypt/live/yourdomain.com/** - mostra o conteúdo do diretório com os certificados

* `/etc/letsencrypt/live/` - diretório padrão do Let's Encrypt
* `yourdomain.com/` - subdiretório para o domínio

**Arquivos de certificados:**

* `cert.pem` - certificado do domínio
* `chain.pem` - cadeia de certificados intermediários
* `fullchain.pem` - certificado completo com a cadeia
* `privkey.pem` - chave privada

</details>

#### Transferência de certificados para a máquina de destino

Copie os certificados para a máquina onde o Sherpa AI Server será instalado:

```bash
# Crie um diretório para os certificados na máquina de destino
mkdir -p ./oais/backend/config/certs/

# Copie os certificados (substitua yourdomain.com pelo seu domínio)
sudo scp /etc/letsencrypt/live/yourdomain.com/fullchain.pem user@target-server:./oais/backend/config/certs/aiserver.crt
sudo scp /etc/letsencrypt/live/yourdomain.com/privkey.pem user@target-server:./oais/backend/config/certs/aiserver.key

# Para o serviço de embedding
mkdir -p ./embed-server/certs/
sudo scp /etc/letsencrypt/live/yourdomain.com/fullchain.pem user@target-server:./embed-server/certs/embed.crt
sudo scp /etc/letsencrypt/live/yourdomain.com/privkey.pem user@target-server:./embed-server/certs/embed.key
```

<details>

<summary>💡 Comentários sobre a transferência de certificados</summary>

**mkdir -p ./oais/backend/config/certs/** - cria o diretório para os certificados do servidor principal

**sudo scp /etc/letsencrypt/live/yourdomain.com/fullchain.pem user\@target-server:./oais/backend/config/certs/aiserver.crt** - copia o certificado

* `scp` - secure copy
* `fullchain.pem` - certificado completo com a cadeia
* Renomeado para `aiserver.crt`

**sudo scp /etc/letsencrypt/live/yourdomain.com/privkey.pem user\@target-server:./oais/backend/config/certs/aiserver.key** - copia a chave privada

* `privkey.pem` - chave privada
* Renomeado para `aiserver.key`

**De forma semelhante para o serviço de embedding:**

* Diretório: `./embed-server/certs/`
* Nomes dos arquivos: `embed.crt` e `embed.key`

</details>

### Criação de certificados autoassinados (para testes)

{% hint style="warning" %}
**ATENÇÃO:** Certificados autoassinados não são confiáveis e causarão avisos de segurança em navegadores. Use este método apenas para testes ou em redes isoladas!
{% endhint %}

#### Criação de um certificado autoassinado com OpenSSL

```bash
# Crie um diretório para os certificados
mkdir -p ./oais/backend/config/certs/

# Gere a chave privada
openssl genrsa -out ./oais/backend/config/certs/aiserver.key 2048

# Crie um certificado autoassinado
openssl req -new -x509 -key ./oais/backend/config/certs/aiserver.key -out ./oais/backend/config/certs/aiserver.crt -days 365 -subj "/C=BR/ST=Estado/L=Cidade/O=Organização/CN=aiserver.sherparpa.ru"

# Para o serviço de embedding
mkdir -p ./embed-server/certs/
openssl genrsa -out ./embed-server/certs/embed.key 2048
openssl req -new -x509 -key ./embed-server/certs/embed.key -out ./embed-server/certs/embed.crt -days 365 -subj "/C=BR/ST=Estado/L=Cidade/O=Organização/CN=embed.sherparpa.ru"
```

<details>

<summary>💡 Comentários sobre a criação de certificados autoassinados</summary>

**mkdir -p ./oais/backend/config/certs/** - cria o diretório para os certificados

**openssl genrsa -out ./oais/backend/config/certs/aiserver.key 2048** - gera a chave privada

* `genrsa` - geração de chave RSA
* `-out file.key` - arquivo de saída
* `2048` - comprimento da chave em bits

**openssl req -new -x509 -key keyfile.key -out certfile.crt -days 365 -subj "/C=BR/..."** - cria um certificado autoassinado

* `req -new -x509` - cria um novo certificado autoassinado\* `-key keyfile.key` - usa a chave privada especificada
* `-out certfile.crt` - arquivo de saída do certificado
* `-days 365` - período de validade (1 ano)
* `-subj "/C=RU/ST=State/L=City/O=Organization/CN=domain.com"` -

</details>


---

# 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.sherparpa.ru/pt/sherpa-ai/sherpa-ai-server/ustanovka-sherpa-ai-server/ustanovka-i-nastroika-ssl-sertifikatov.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.
