[comment]: # ({14d0ad91-14d0ad91})
# 2 Usando chaves pré-compartilhadas

[comment]: # ({/14d0ad91-14d0ad91})

[comment]: # ({3935bdee-3935bdee})
#### Visão geral

Cada chave pré-compartilhada (PSK) no Zabbix é na verdade um par de:

- string de identidade PSK não secreta,
- valor da string PSK secreta.

A string de identidade PSK é uma string UTF-8 não vazia. Por exemplo, "ID PSK
001 Zabbix agentd". É um nome único pelo qual este PSK específico é
referido pelos componentes Zabbix. Não coloque informações confidenciais em
Cadeia de identidade PSK - é transmitida pela rede sem criptografia.

O valor PSK é uma sequência de dígitos hexadecimais difícil de adivinhar, por exemplo,
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

[comment]: # ({/3935bdee-3935bdee})

[comment]: # ({540b9ee2-a75bbda5})
#### Limites de tamanho

Existem limites de tamanho para a identidade e o valor do PSK no Zabbix, em alguns casos uma biblioteca de criptografia pode ter um limite menor:

|Componente|Tamanho máximo da identidade do PSK|Tamanho mínimo do valor do PSK|Tamanho máximo do valor do PSK|
|----------|-----------------------------------|------------------------------|------------------------------|
|*Zabbix*|128 caracteres UTF-8|128 bits (16 bytes de PSK, inseridos como 32 dígitos hexadecimais)|2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais)|
|*GnuTLS*|128 bytes (pode incluir caracteres UTF-8)|\-|2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais)|
|*OpenSSL 1.0.x, 1.1.0*|127 bytes (pode incluir caracteres UTF-8)|\-|2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais)|
|*OpenSSL 1.1.1*|127 bytes (pode incluir caracteres UTF-8)|\-|512 bits (64 bytes de PSK, inseridos como 128 dígitos hexadecimais)|
|*OpenSSL 1.1.1a e posteriores*|127 bytes (pode incluir caracteres UTF-8)|\-|2048 bits (256 bytes de PSK, inseridos como 512 dígitos hexadecimais)|

::: noteimportant
 O frontend do Zabbix permite configurar uma string de identidade de PSK com até 128 caracteres e um PSK de até 2048 bits, independentemente das bibliotecas de criptografia utilizadas.<br>
Se alguns componentes do Zabbix suportarem limites menores, é responsabilidade do usuário configurar a identidade e o valor do PSK com o comprimento permitido para esses componentes.<br>
Exceder os limites de comprimento resulta em falhas de comunicação entre os componentes do Zabbix.
:::

Antes que o servidor Zabbix se conecte ao agent usando PSK, o servidor procura a identidade e o valor do PSK configurados para esse agent no banco de dados (na verdade, no cache de configuração). Ao receber uma conexão, o agent usa a identidade e o valor do PSK de seu arquivo de configuração. Se ambas as partes tiverem a mesma string de identidade de PSK e o mesmo valor de PSK, a conexão poderá ser bem-sucedida.

::: noteimportant
 Cada identidade de PSK deve ser emparelhada com apenas um valor. É responsabilidade do usuário garantir que não existam dois PSKs com a mesma string de identidade, mas com valores diferentes. Não fazer isso pode levar a erros imprevisíveis ou interrupções na comunicação entre os componentes do Zabbix que usam PSKs com essa string de identidade de PSK.
:::

[comment]: # ({/540b9ee2-a75bbda5})

[comment]: # ({3e166db9-3e166db9})
#### Gerando PSK

Por exemplo, um PSK de 256 bits (32 bytes) pode ser gerado usando o
seguintes comandos:

- com *OpenSSL*:

```{=html}
<!-- -->
```
       $ openssl rand -hex 32
       af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429

- com *GnuTLS*:

```{=html}
<!-- -->
```
       $ psktool -u psk_identity -p database.psk -s 32
       Gerando uma chave aleatória para o usuário 'psk_identity'
       Chave armazenada em database.psk
      
       $ cat database.psk
       psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Observe que "psktool" acima gera um arquivo de banco de dados com uma identidade PSK
e seu PSK associado. O Zabbix espera apenas um PSK no arquivo PSK, então
a string de identidade e os dois pontos (':') devem ser removidos do arquivo.

[comment]: # ({/3e166db9-3e166db9})

[comment]: # ({43b9af4e-0c5c40b9})
#### Configurando PSK para comunicação server-agent (exemplo)

No host do agent, grave o valor de PSK em um arquivo, por exemplo,
`/home/zabbix/zabbix_agentd.psk`. O arquivo deve conter a PSK na primeira
string de texto, por exemplo:

    1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Defina os direitos de acesso ao arquivo PSK - ele deve ser legível apenas pelo usuário Zabbix.

Edite os parâmetros TLS no arquivo de configuração do agent `zabbix_agentd.conf`,
por exemplo, defina:

    TLSConnect=psk
    TLSAccept=psk
    TLSPSKFile=/home/zabbix/zabbix_agentd.psk
    TLSPSKIdentity=PSK 001

O agent se conectará ao server (verificações ativas) e aceitará do server
e do `zabbix_get` apenas conexões usando PSK. A identidade PSK será "PSK
001".

Reinicie o agent. Agora você pode testar a conexão usando `zabbix_get`,
por exemplo:

    zabbix_get -s 127.0.0.1 -k "system.cpu.load[all,avg1]" --tls-connect=psk --tls-psk-identity="PSK 001" --tls-psk-file=/home/zabbix/zabbix_agentd.psk

(Para minimizar o tempo de indisponibilidade, veja como alterar o tipo de conexão em [Gerenciamento
de criptografia
de conexão](/manual/encryption#connection-encryption-management)).

Configure a criptografia PSK para este agent no frontend do Zabbix:

-   Vá para: *Coleta de dados → Hosts*
-   Selecione o host e clique na aba **Encryption**

Exemplo:

![psk\_config.png](../../../assets/en/manual/encryption/psk_config.png){width="600"}

Todos os campos de entrada obrigatórios são marcados com um asterisco vermelho.

Quando o cache de configuração for sincronizado com o banco de dados, as novas
conexões usarão PSK. Verifique os arquivos de log do server e do agent em busca de mensagens de erro.

[comment]: # ({/43b9af4e-0c5c40b9})

[comment]: # ({5b4b0ac1-2200dfcb})
#### Configurando PSK para comunicação entre server e proxy ativo (exemplo)

No proxy, grave o valor de PSK em um arquivo, por exemplo,
`/home/zabbix/zabbix_proxy.psk`. O arquivo deve conter a PSK na primeira
linha de texto, por exemplo:

    e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Defina as permissões de acesso ao arquivo de PSK - ele deve ser legível apenas pelo usuário Zabbix.

Edite os parâmetros TLS no arquivo de configuração do proxy `zabbix_proxy.conf`, por
exemplo, defina:

    TLSConnect=psk
    TLSPSKFile=/home/zabbix/zabbix_proxy.psk
    TLSPSKIdentity=PSK 002

O proxy se conectará ao server usando PSK. A identidade PSK será "PSK
002".

(Para minimizar o tempo de indisponibilidade, veja como alterar o tipo de conexão em [Gerenciamento
de criptografia de
conexão](/manual/encryption#connection-encryption-management)).

Configure a PSK para este proxy no frontend do Zabbix. Vá para
*Administration→Proxies*, selecione o proxy e acesse a aba "Encryption". Em
"Connections from proxy", marque `PSK`. Cole "PSK 002" no campo "PSK identity" e
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" no
campo "PSK". Clique em "Update".

Reinicie o proxy. Ele começará a usar conexões criptografadas baseadas em PSK com o
server. Verifique os arquivos de log do server e do proxy em busca de mensagens de erro.

Para um proxy passivo, o procedimento é muito semelhante. A única diferença é:
defina `TLSAccept=psk` no arquivo de configuração do proxy e configure "Connections to
proxy" no frontend do Zabbix como `PSK`.

[comment]: # ({/5b4b0ac1-2200dfcb})
