# GlobalScheduler: генерация ключей шифрования

GlobalScheduler может работать без указания ключей, однако такой режим нежелателен. Основными недостатками работы без ключей являются:
- без добавления ключей не работает выполнение заданий от каких-либо пользователей, кроме указанного в настройке `btk`;
- не работает отслеживание ошибочных задач, так как данные по задачам планировщик получает с помощью ключей.

```{important}
Основным режимом работы является работа с ключами. Пароль используется на тестовых контурах для отладки работы GlobalScheduler. На проектах, в prod режиме не желательно указывать пароль в настройках btk.
```

## Генерация ключей в системе Global
Генерацию ключей можно выполнить с помощью системы Global.

Для этого в приложении **Настройки системы** откройте меню `Настройки и сервисы -> Менеджер заданий`

![Менеджер заданий](img/JobManager.png)

В открывшемся окне выполните операцию «Сгенерировать открытый и закрытый ключ»

![Генерация ключей](img/GenKeyPair.png)

В результате выполнения операции на компьютер пользователя будут скачаны два файла: `quartz.publickey.txt` (открытый ключ) и `quartz.privatekey.txt` (закрытый ключ).

## Генерация ключей сторонними утилитами
Допускается генерация ключей сторонними утилитами.

```{attention}
Открытый ключ, как и закрытый, должен содержать в себе только массив байт, созданный по алгоритму `RSA`, с размером 2048 бит.
```

Пример создания ключей с помощью криптографической библиотеки OpenSSL:

```bash
# Генерация приватного ключа в стандартном формате
openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048; \
# Генерация публичного ключа в стандартном формате
openssl rsa -in private.pem -outform PEM -pubout -out public.pem; \
# Форматирование ключей для работы с Global
sed '/-----.*-----/d' ./private.pem |  tr -d '\n' > quartz.private.pem; \
sed '/-----.*-----/d' ./public.pem | tr -d '\n' > quartz.public.pem;
```

Убедиться, что сгенерированный вами ключ был создан в подходящем для Globalscheduler формате можно при помощи следующей команды:

```bash
base64 -d ./quartz.private.pem | openssl asn1parse -inform DER | grep -q rsaEncryption && echo "Ключ верного формата" || echo "Ключ неподходящего формата"
```
