# - \#2 Usando chaves compartilhadas PSK

#### Visão geral

No Zabbix cada PSK atualmente é um par de:

-   identidade não secreta PSK (texto),
-   texto secreto (valor PSK).

A identidade PSK é um texto não vazio no formato UTF-8. Por exemplo,
"PSK ID 001 Zabbix agentd". É o nome único com o qual este PSK
específico será referenciado pelos componentes do Zabbix. Não coloque
informação sensível na identidade PSK - ela será transmitida de forma
não criptografada pela rede.

O valor PSK é mais difícil de adivinhar por ser um texto hexadecimal,
por exemplo,
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

#### Limites de tamanho

Aqui temos um tamanho máximo para a identidade e para o valor PSK no
Zabbix, em alguns casos a biblioteca de criptografia tem um valor menor:

|Componente|Tamannho da identidade PSK|Tamanho do valor PSK|
|----------|--------------------------|--------------------|
|*Zabbix*|128 UTF-8 characteres|2048-bit (256-byte PSK, informado como 512 digitos hexadecimais)|
|*GnuTLS*|128 bytes (may include UTF-8 characteres)|2048-bit (256-byte PSK, informado como 512 digitos hexadecimais)|
|*mbed TLS (PolarSSL)*|128 UTF-8 characters|256-bit (limite padrão) (32-byte PSK, informado como 64 digitos hexadecimais)|
|*OpenSSL*|127 bytes (pode incluri caracteres UTF-8)|2048-bit (256-byte PSK, informado como 512 digitos hexadecimais)|

::: noteimportant
 A interface web do Zabbix permite configurar
identidades PSK de até 128 caracteres e até 2048-bit sem o uso das
bibliotecas PSK. Se algum componente do Zabbix suportar valores menores
é de responsabilidade do usuário configura ra identidade e valor PSK de
forma que ambos o aceitem. Exceder o limite de tamanho resultará em
falha de comunicação. 
:::

Antes do Zabbix Server se conectar com o agente usando PSK, o servidor
analisa a identidade e valor PSK configurados para aquele agente no
banco de dados (ou no cache de configuração). Após receber a conexão do
agente, ele usa a identidade e valor PSK de sua configuração. Se ambas
as partes tiverem o mesmo conjunto a conexão será estabelecida.

::: noteimportant
 É de responsabilidade do usuário garantir que não
existam duas chaves PSK com o mesmo conteúdo, mas com valores
diferentes. Isso poderá causar interrupções imprevisíveis de comunicação
entre os componentes. 
:::

#### Gerando a PSK

Por exemplo, uma chave PSK de 256-bit (32 bytes) pode ser gerada através
destes comandos:

-   com *OpenSSL*:

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

-   com *GnuTLS*:

```{=html}
<!-- -->
```
      $ psktool -u psk_identity -p database.psk -s 32
      Gerando uma chave randômica para o usuário 'psk_identity'
      A chave é armazenada no arquivo database.psk
      
      $ cat database.psk 
      psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Observe que o utilitário "psktool" acima gera um arquivo de dados com a
identidade PSK e a associação PSK. O Zabbix espera apenas um PSK no
arquivo, então o identificador (':') precisa ser removido do arquivo.

##### Configurando PSK para a comunicação server-agent (exemplo básico)

No host do agente salve o valor PSK em um arquivo, por exemplo,
`/home/zabbix/zabbix_agentd.psk`. O arquivo precisa conter o PSK em sua
primeira linha, por exemplo:

    1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Defina o permissionamento do arquivo, somente o usuário Zabbix deverá
conseguir lê-lo.

Edite os parâmetros de TLS no arquivo de configuração do agente
`zabbix_agentd.conf`:

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

O agente irá se conectar com o servidor (verificação ativa) e aceitará
do servidor e do `zabix_get` apenas conexões usando PSK. Neste caso a
identidade PSK será "PSK 001".

Reinicie o agente. Agora você pode fazer um teste de conexão utilizando
o `zabbix_get`:

    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 mudar o tipo de
conexão em [gerenciamento de conexão
criptografada](/manual/encryption?&#connection_encryption_management)).

Configure o PSK para este host na interface web do Zabbix.

-   Acesse *Configuração → Hosts*
-   Selecione o host desejado, clique em seu nome
-   Clique na aba **Criptografia**

Exemplo:

![psk\_config.png](../../../assets/en/manual/encryption/psk_config.png)

Após a atualização do cache de configuração do Zabbix Server/Proxy as
comunicações começarão a ocorrer através de conexões criptografadas com
PSK. Eventuais erros podem ser localizados tanto no log do agente quanto
no log do servidor

##### Configurando o PSK para comunicação entre Zabbix Server e Zabbix Proxy (ativo) (exemplo básico)

Salve o arquivo de valor PSK do proxy em um arquivo, por exemplo,
`/home/zabbix/zabbix_proxy.psk`. O arquivo precisa conter o valor em sua
primeira linha:

    e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Defina o permissionamento do arquivo, somente o usuário Zabbix deverá
conseguir lê-lo.

Edite os parâmetros de TLS no arquivo de configuração do agente
`zabbix_proxy.conf`:

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

O proxy vai se conectar ao servidor usando PSK e a identidade PSK será
"PSK 002".

(Para minimizar o tempo de indisponibilidade veja como mudar o tipo de
conexão em [gerenciamento de conexão
criptografada](/pt/manual/encryption?&#connection_encryption_management)).

Configure o PSK para este proxy na interface web do Zabbix.

-   Acesse *Administração → Proxies*
-   Selecione o proxy desejado, clique em seu nome
-   Clique na aba **Criptografia**
-   Em *Conexões do proxy* marque a opção *PSK*
-   No campo *Identidade PSK* Informe o valor "PSK 002"
-   No campo *PSK* Informe o valor
    "e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9"
-   Clique no botão *Atualizar*

Reinicie o proxy. Ele irá se comunicar com o servidor usando conexão
criptografada baseada em PSK. Verifique os logs do proxy e do server por
mensagens de erro.

Para proxies passivos o processo é muito similar, a única diferença é
que tem que se configurar o parâmetro `TLSAccept=psk` no arquivo de
configuração do proxy e definr o campo *Conexões com o proxy* na
interface web do Zabbix para `PSK`.
