Сервисный сертификат¶
Внимание
Сервисный сертификат, описанный в этом разделе, отличается по назначению от сертификата для перехвата трафика (MITM), описанного в разделе Установка MITM-сертификата. Обратите внимание на различие: последний устанавливается в доверенное хранилище Android и используется, чтобы приложение доверяло прокси для перехвата трафика. Сервисный сертификат — это файл в формате PEM, который загружается на стороне сервера FIRERPA и хранится у клиента; он используется для шифрования канала связи FIRERPA и проверки личности посетителя.
В этой главе описывается генерация и развёртывание сервисного сертификата FIRERPA. По умолчанию на сервере FIRERPA проверка подлинности отключена: любой посетитель в той же сети, знающий IP-адрес и порт устройства, может подключиться к удалённому рабочему столу, вызвать API или использовать SSH. Если вам нужно работать в недоверенной сетевой среде или требуется TLS-шифрование связи, следует включить контроль доступа с помощью сервисного сертификата.
Примечание
При установке сервера через приложение вы можете включить аутентификацию в настройках приложения, и приложение автоматически сгенерирует и установит сертификат, поэтому выполнять описанную ниже генерацию не требуется. При использовании модуля Magisk или ручной установке необходимо сгенерировать и развернуть сертификат вручную согласно шагам этой главы.
Перед генерацией сертификата необходимо на ПК выполнить Подготовка инструментов, клонировать репозиторий lamda и установить зависимости Python в каталоге tools. Выполните cert.py в каталоге tools, заменив аргумент на имя хоста, используемое при доступе к устройству.
python3 cert.py mydevice.local
После успешного выполнения в текущем каталоге будут созданы mydevice.local.pem, а также root.crt и root.key. Файл .pem используется сервером для включения TLS и клиентом для проверки подлинности; root.crt и root.key представляют собой пару корневого сертификата и ключа, обычно не участвуют в повседневных подключениях, но их следует надёжно хранить для последующей замены или диагностики.
Первая строка созданного PEM-файла — это метаданные-комментарий, где значение поля PASSWD является учётными данными по умолчанию для входа в удалённый рабочий стол. Не редактируйте вручную закрытый ключ или содержимое сертификата в PEM-файле, иначе это может привести к сбою запуска сервера или ошибкам проверки на стороне клиента. Формат файла сертификата показан ниже; каждый блок следует в порядке key, cert, CA, и этот порядок должен строго соблюдаться.
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 в Установка сервера. После применения конфигурации и перезапуска службы удалённый рабочий стол, API и сопутствующие инструменты будут работать по HTTPS и в соответствии с требованиями сертификата.
При ручной установке можно передать сертификат, добавив к launch.sh параметр командной строки --certificate=/path/to/lamda.pem, или использовать параметр cert, заданный в Конфигурация службы.
Примечание
После включения сервисного сертификата удалённый рабочий стол необходимо открывать по протоколу https://, а в WebUI потребуется ввести указанный выше пароль. Вы также можете задать резервный пароль входа через параметр ssl-web-credential в Конфигурация службы. При подключении клиента Python укажите путь к PEM-файлу в конструкторе Device (см. Подготовка API). Для инструментов командной строки в каталоге tools путь задаётся переменной окружения CERTIFICATE (см. Подготовка инструментов).