# Сервисный сертификат

```{attention}
Сервисный сертификат, описанный в этом разделе, отличается по назначению от сертификата для перехвата трафика (MITM), описанного в разделе [Установка MITM-сертификата](./install-mitm-cert.md). Обратите внимание на различие: последний устанавливается в доверенное хранилище Android и используется, чтобы приложение доверяло прокси для перехвата трафика. Сервисный сертификат — это файл в формате PEM, который загружается на стороне сервера FIRERPA и хранится у клиента; он используется для шифрования канала связи FIRERPA и проверки личности посетителя.
```

В этой главе описывается генерация и развёртывание сервисного сертификата FIRERPA. По умолчанию на сервере FIRERPA проверка подлинности отключена: любой посетитель в той же сети, знающий IP-адрес и порт устройства, может подключиться к удалённому рабочему столу, вызвать API или использовать SSH. Если вам нужно работать в недоверенной сетевой среде или требуется TLS-шифрование связи, следует включить контроль доступа с помощью сервисного сертификата.

```{note}
При установке сервера через приложение вы можете включить аутентификацию в **настройках** приложения, и приложение автоматически сгенерирует и установит сертификат, поэтому выполнять описанную ниже генерацию не требуется. При использовании модуля Magisk или ручной установке необходимо сгенерировать и развернуть сертификат вручную согласно шагам этой главы.
```

Перед генерацией сертификата необходимо на ПК выполнить [Подготовка инструментов](./tools-prepare.md), клонировать репозиторий `lamda` и установить зависимости Python в каталоге `tools`. Выполните `cert.py` в каталоге `tools`, заменив аргумент на имя хоста, используемое при доступе к устройству.

```bash
python3 cert.py mydevice.local
```

После успешного выполнения в текущем каталоге будут созданы `mydevice.local.pem`, а также `root.crt` и `root.key`. Файл `.pem` используется сервером для включения TLS и клиентом для проверки подлинности; `root.crt` и `root.key` представляют собой пару корневого сертификата и ключа, обычно не участвуют в повседневных подключениях, но их следует надёжно хранить для последующей замены или диагностики.
<br>
<br>
Первая строка созданного PEM-файла — это метаданные-комментарий, где значение поля `PASSWD` является учётными данными по умолчанию для входа в удалённый рабочий стол. Не редактируйте вручную закрытый ключ или содержимое сертификата в PEM-файле, иначе это может привести к сбою запуска сервера или ошибкам проверки на стороне клиента. Формат файла сертификата показан ниже; каждый блок следует в порядке `key`, `cert`, `CA`, и этот порядок должен строго соблюдаться.

```text
LAMDA SSL CERTIFICATE (CN=mydevice.local,PASSWD=e908d358...)
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEA33YUKkfUkLeWtsCe7A1yzIZsqOTd1a8XWr9+Vh0ombOdtnqK...
-----END RSA PRIVATE KEY-----
-----BEGIN CERTIFICATE-----
MIIC1DCCAbygAwIBAgIQBKjY0w1FbPJooD5mJ1CWwDANBgkqhkiG9w0BAQsFADAz...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDAzCCAeugAwIBAgIQR9OCJbQGGQT5Pgp7PmLrDTANBgkqhkiG9w0BAQsFADAz...
-----END CERTIFICATE-----
```

После генерации сертификата необходимо настроить сервер FIRERPA на загрузку этого сертификата при запуске, иначе контроль доступа не вступит в силу. При развёртывании через Magisk можно переименовать PEM-файл в `lamda.pem` и поместить его в пакет модуля согласно разделу Magisk в [Установка сервера](./install-server.md). После применения конфигурации и перезапуска службы удалённый рабочий стол, API и сопутствующие инструменты будут работать по HTTPS и в соответствии с требованиями сертификата.
<br>
<br>
При ручной установке можно передать сертификат, добавив к `launch.sh` параметр командной строки `--certificate=/path/to/lamda.pem`, или использовать параметр `cert`, заданный в [Конфигурация службы](./properties.md).

```{note}
После включения сервисного сертификата [удалённый рабочий стол](./remote-desktop.md) необходимо открывать по протоколу https://, а в WebUI потребуется ввести указанный выше пароль. Вы также можете задать резервный пароль входа через параметр ssl-web-credential в [Конфигурация службы](./properties.md). При подключении клиента Python укажите путь к PEM-файлу в конструкторе Device (см. [Подготовка API](./api-prepare.md)). Для инструментов командной строки в каталоге tools путь задаётся переменной окружения CERTIFICATE (см. [Подготовка инструментов](./tools-prepare.md)).
```