Для того, чтобы все данные между браузером и сервером, на котором установлен MeshCentral, передавались в зашифрованном виде и не могли быть перехвачены третьими лицами, необходимо настроить доступ к веб-интерфейсу MeshCentral с использованием протокола HTTPS. При подключении к MeshCentral через него проходит большое количество довольно чувствительной информации − логины, пароли, токены, команды управления компьютерами и даже удалённые сессии. Без HTTPS всё это передаётся в открытом виде, что очень небезопасно. Некоторые функции в MeshCentral, такие как автоматическое обновление клиентов и использование WebRTC для удалённого управления, могут работать только при наличии защищённого соединения. Если на веб-сайте MeshCentral не настроен HTTPS, браузер может просто отказаться открывать его. Либо покажет предупреждение о небезопасном подключении, особенно если включён HSTS.
Дефолтным менеджером HTTPS-сертификатов в MeshCentral является Let’s Encrypt. С его использованием MeshCentral может получать и продлевать SSL-сертификаты.
В настоящей статье разберём, как настроить HTTPS-доступ к веб-сайту MeshCentral.
Предварительная настройка
Настройка доступа по протоколу HTTPS к сайту MeshCentral возможна при соблюдении некоторых условий.
Настройка доменного имени для сайта MeshCentral
Во-первых, к виртуальному серверу должно быть привязано имя домена, при помощи которого будет открываться веб-сайт. Такая привязка осуществляется с использованием специальной DNS-записи, а именно A-записи. На сайте RUVDS данная возможность реализована в разделе Домены
, где можно добавить домен и привязать его к уже существующему серверу.

В определённых случаях осуществить связывание доменного имени с конкретным IP-адресом можно на сайте регистратора домена. Проверить соответствие имени домена и IP-адреса вы можете, запустив ICMP-запросы в адрес конкретного доменного имени при помощи команды ping
:
ping your-site-name.ru
Предварительная настройка системы
Во-вторых, необходимо открыть доступ к виртуальной машине для TCP-порта 80. 80-й порт используется при получении SSL-сертификата от Let’s Encrypt для прохождения HTTP-валидации домена. MeshCentral временно запускает HTTP-сервер на порту 80. Это необходимо для того, чтобы Let’s Encrypt мог подключиться и запросить специальный файл. Таким образом происходит подтверждение того, что вы действительно контролируете данный домен.
Чтобы открыть доступ к порту 80, добавьте в брандмауэр UFW соответствующее разрешающее правило:
$ sudo ufw allow 80
В Linux-системах такие порты, как 80 и 443, по умолчанию доступны только суперпользователю. Это сделано для того, чтобы предотвратить возможное злоупотребление, например, запуск фальшивых сервисов. Но в случае с MeshCentral это ограничение мешает запуску HTTPS и HTTP на стандартных портах. Вместо того чтобы запускать весь сервер с root-доступом, что не является безопасной практикой, необходимо точечно дать Node.js право слушать нужные порты. Такой подход − это компромисс между безопасностью и функциональностью. Вместо запуска всего процесса с полными правами нужно добавить строго необходимое исключение. Следующая команда даёт исполняемому файлу Node.js специальное разрешение на использование привилегированных портов, таких как 80 и 443, без необходимости запускать его от имени учётной записи root
:
$ sudo setcap 'cap_net_bind_service=+ep' $(which node)
Кроме того, чтобы MeshCentral сам смог получить и в дальнейшем продлить HTTPS-сертификат от Let’s Encrypt без вмешательства администратора, необходимо установить в систему библиотеку acme-client
. Данная библиотека позволяет выполнять ACME-запросы, получая автоматическую настройку протокола HTTPS для конкретного домена. MeshCentral для работы с Let’s Encrypt требует наличие библиотеки acme-client
именно версии 4.2.5. Данная версия является проверенной и совместимой с текущей реализацией кода внутри MeshCentral. Исходя из чего, перейдите в каталог, в котором установлен MeshCentral, и при помощи Node Package Manager проинсталлируйте библиотеку acme-client
версии 4.2.5:
$ cd /opt/meshcentral
$ sudo npm install --no-audit --no-optional --omit=optional acme-client@4.2.5
Как настроить HTTPS-доступ к MeshCentral
Для настройки HTTPS-доступа к веб-интерфейсу MeshCentral необходимо отредактировать его конфигурационный файл:
$ sudo nano /opt/meshcentral/meshcentral-data/config.json
В файле конфигурации активируйте, удалив перед их названиями знак подчёркивания (_
), добавьте и приведите в соответствие параметры, выделенные в тексте ниже:
"settings": {
"cert": "your-site-name.ru",
"WANonly": true,
"_LANonly": true,
"sessionKey": "MyReallySecretPassword1",
"port": 443,
"_aliasPort": 443,
"redirPort": 80,
"_redirAliasPort": 80,
"redirToHttps": true
},
"domains": {
"": {
"_title": "MyServer",
"_title2": "Servername",
"_minify": true,
"_newAccounts": true,
"_userNameIsEmail": true
}
},
"letsencrypt": {
"__comment__": "Requires NodeJS 8.x or better, Go to https://letsdebug.net/ first before trying Let's Encrypt.",
"email": "admin@your-site-name.ru",
"names": "your-site-name.ru",
"skipChallengeVerification": false,
"production": true
}
В частности:
"cert"
− имя домена, для которого будет запрашиваться сертификат Let’s Encrypt;"WANonly"
− запускает MeshCentral в режиме “только для доступа из интернета”, что отключает специфические LAN-функции, такие как обнаружение устройств в локальной сети;"sessionKey"
− ключ для подписи и шифрования пользовательских сессий, используемый для генерации токенов доступа и защиты от подделки сессий;"port"
− указывает порт, через который будет работать веб-сайт MeshCentral, в нашем случае это 443;"redirPort"
− указывает на порт, на котором запускается HTTP-сервер с последующим перенаправлением на порт 443;"redirToHttps"
− включает автоматическое перенаправление всех HTTP-запросов на HTTPS;"letsencrypt"
− название секции, отвечающей за взаимодействие с Let’s Encrypt;"email"
− адрес электронной почты, которую Let’s Encrypt будет использовать для уведомлений о сертификатах;"names"
− доменное имя, для которого будет получен сертификат;"skipChallengeVerification"
− значениеfalse
указывает на то, что Let’s Encrypt должен проверить домен через HTTP-валидацию перед тем, как выдать сертификат;"production"
− значениеtrue
указывает на то, что сертификат будет запрошен у боевого сервера Let’s Encrypt, а не будет использоваться в качестве теста.
Значение параметра "sessionKey"
представляет собой секретный ключ, который используется для шифрования и подписи пользовательских сессий. От данного параметра зависит безопасность всех сессий. Он должен быть случайным, секретным и стабильным в рамках одной установки MeshCentral. Сгенерировать значение параметра "sessionKey"
можно при помощи команды:
$ openssl rand -base64 32
По завершении редактирования закройте файл с сохранением внесённых изменений.
После чего перезапустите сервис MeshCentral:
$ sudo systemctl restart meshcentral
И наконец, откройте браузер и перейдите на https://your-site-name.ru
, где your-site-name.ru
замените на доменное имя вашего сайта MeshCentral.

Обратите внимание на значок замка в строке навигации. Сообщение вида Подключение защищено
говорит о том, что подключение к веб-интерфейсу MeshCentral осуществляется с использованием протокола HTTPS.