[comment]: # translation:outdated

[comment]: # ({new-14d0ad91})
# 2 Использование pre-shared ключей

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

[comment]: # ({new-3935bdee})
#### Обзор

Каждый pre-shared key (PSK) в Zabbix является парой:

-   несекретной строкой идентификации PSK,
-   секретным строковым значением PSK.

Строкой идентификации PSK является не пустая UTF-8 строка. Например,
"PSK ID 001 Zabbix agentd". Это уникальное имя, по которому этот
конкретный PSK упоминается Zabbix компонентами. Не помещайте
чувствительную информацию в строку идентификации PSK - она передается
незашифрованной по сети.

Значением PSK является сложно угадываемой строкой из шестнадцатеричных
цифр, например,
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9".

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

[comment]: # ({new-dcbe370b})
#### Ограничения размера

В Zabbix имеется ограничение на размеры идентификатора и значения PSK, в
некоторых случаях крипто библиотеки могут иметь меньшее ограничение:

|Компонент|Макс размер идентификатора PSK|Мин размер значения PSK|Макс размер значения PSK|
|------------------|------------------------------------------------------|----------------------------------------|------------------------------------------|
|*Zabbix*|128 UTF-8 символов|128-бит (16-байт PSK, введенные как 32 шестнадцатеричных цифр)|2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)|
|*GnuTLS*|128 байт (может включать UTF-8 символы)|\-|2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)|
|*mbed TLS (PolarSSL)*|128 UTF-8 символы|\-|256-бит (ограничение по умолчанию) (32-байт PSK, введенные как 64 шестнадцатеричных цифр)|
|*OpenSSL 1.0.x, 1.1.0*|127 байт (может включать UTF-8 символы)|\-|2048-бит (256-байт PSK, введенные как 512 шестнадцатеричных цифр)|
|*OpenSSL 1.1.1*|127 байт (может включать UTF-8 символы)|\-|512-бит (64-байт PSK, введенные как 128 шестнадцатеричных цифр)|

::: noteimportant
 Веб-интерфейс Zabbix позволяет указать до
128-символов строки идентификатора PSK и до 2048-бит PSK вне зависимости
от использованной крипто библиотеки.\
Если некоторые компоненты Zabbix поддерживают меньшую длину, только
пользователь несет ответственность за настройку идентификатора и
значения PSK в соответствии с разрешенной длиной в этих компонентах.\
Превышение ограничений длины приведет к ошибкам в подключениях между
Zabbix компонентами. 
:::

Перед тем как Zabbix сервер подключится к агенту с использованием PSK,
сервер поищет идентификатор PSK и значение PSK этого агента в базе
данных (в действительности в кэше конфигурации). После приема
подключения агент использует идентификатор PSK и значение PSK из своего
файла конфигурации. Если обе пары имеют одинаковые идентификаторы PSK и
значения PSK, соединение может быть успешным.

::: noteimportant
 Пользователь несет ответственность за обеспечение
того, что не будет двух PSK с одинаковыми строками идентификации, но
разными значениями. Несоблюдение этого требования может привести к
непредсказуемым сбоям связи между компонентами Zabbix, которые
используют PSK с этими строками идентификатора PSK. 
:::

[comment]: # ({/new-dcbe370b})

[comment]: # ({new-3e166db9})
#### Генерирование PSK

Например, можно сгенерировать 256-битный (32 байт) PSK при помощи
следующих команд:

-   с *OpenSSL*:

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

-   с *GnuTLS*:

```{=html}
<!-- -->
```
      $ psktool -u psk_identity -p database.psk -s 32
      Generating a random key for user 'psk_identity'
      Key stored to database.psk
      
      $ cat database.psk 
      psk_identity:9b8eafedfaae00cece62e85d5f4792c7d9c9bcc851b23216a1d300311cc4f7cb

Обратите внимание, что команда "psktool" выше генерирует файл базы
данных с идентификатором PSK и со связанным с ним PSK. Zabbix ожидает
просто PSK в файле с PSK, то есть необходимо удалить строку
идентификации и двоеточие (':').

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

[comment]: # ({new-0c5c40b9})
#### Настройка PSK для соединения сервер-агент (простой пример)

На хосте агента запишите значение PSK в файл, например,
`/home/zabbix/zabbix_agentd.psk`. Этот файл должен содержать PSK в
первой строке текста, например:

    1f87b595725ac58dd977beef14b97461a7c1045b9a1c963065002c5473194952

Задайте права доступа к PSK файлу - он должен быть доступен для чтения
только пользователю Zabbix.

Измените параметры TLS в файле конфигурации `zabbix_agentd.conf`,
например, задайте:

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

Агент будет подключаться к серверу (активные проверки) и принимать от
сервера и `zabbix_get` только те соединения, которые используют PSK.
Идентификатором PSK будет "PSK 001".

Перезапустите агента. Теперь вы можете протестировать подключение,
используя `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

(Чтобы свести к минимуму время простоя, смотрите как изменить тип
подключения в [Управлении зашифрованными
соединениями](/ru/manual/encryption#управление_зашированными_соединениями)).

Настройте PSK шифрование этому агенту в веб-интерфейсе Zabbix.

-   Перейдите в: *Настройка → Узлы сети*
-   Выберите узел сети и нажмите на вкладку **Шифрование**

Пример:

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

Все обязательные поля ввода отмечены красной звёздочкой.

Когда кэш конфигурации синхронизируется с базой данных, новые
подключения будут использовать PSK. Проверьте файлы журналов сервера и
агента на предмет сообщений об ошибках.

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

[comment]: # ({new-2200dfcb})
#### Настройка PSK для соединения сервер - активный прокси (простой пример)

На хосте прокси запишите значение PSK в файл, например,
`/home/zabbix/zabbix_proxy.psk`. Этот файл должен содержать PSK в первой
строке текста, например:

    e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9

Задайте права доступа к PSK файлу - он должен быть доступен для чтения
только пользователю Zabbix.

Измените параметры TLS в файле конфигурации `zabbix_proxy.conf`,
например, задайте:

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

Агент будет подключаться к серверу, используя PSK. Идентификатором PSK
будет "PSK 002".

(Чтобы свести к минимуму время простоя, смотрите как изменить тип
подключения в [Управлении зашифрованными
соединениями](/ru/manual/encryption#управление_зашированными_соединениями)).

Настройте PSK этому прокси в веб-интерфейсе Zabbix. Перейдите на
*Администрирование→Прокси*, выберите прокси, перейдите на вкладку
"Шифрование". Переключите "Соединения с прокси" на `PSK`. Вставьте в
поле "Идентификатор PSK" значение "PSK 002" и
"e560cb0d918d26d31b4f642181f5f570ad89a390931102e5391d08327ba434e9" в
поле "PSK". Нажмите "Обновить".

Перезапустите прокси. Он начнет использовать зашифрованные соединения к
серверу на основе PSK. Проверьте файлы журналов сервера и прокси на
предмет сообщений об ошибках.

В случае пассивных прокси процедура очень похожа. Разница лишь в том,
что необходимо задать `TLSAccept=psk` в файле конфигурации прокси и
переключить "Подключения к прокси" в Zabbix веб-интерфейсе на `PSK`.

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