Тоже сейчас настраиваю недавно приобретенный контроллер.
У контроллера должен быть один штатный интерфейс для интеграции с ним снаружи. На него должен быть способ установить пароль и настроить tls. Эти настройки ничего не должны ломать внутри контроллера. Кажется, это здравый смысл.
Я тоже хочу настроить авторизацию mosquitto и настроить на нем tls. Ввиду того, что mosquitto центральный сервис контроллера, пытаюсь понять, как не поломать взаимодействия с ним других компонентов. Не хотелось бы об этом вообще думать, но приходится, т.к. деталей о взаимодействии внутренних компонентов нет, а печальный опыт советует все проверить перед таким изменением.
Что я пока вижу в mosquitto:
- listener 0 /var/run/mosquitto/mosquitto.sock - я не сумел найти какие процессы работают с этим сокетом
- listener 1883 (на “нулях”) - в дефолтной конфигурации почему-то к нему коннектится wb-mqtt-gpio
- listener 18883 lo - в дефолтной конфигурации его использует nginx
В официальной доке по обеспечению безопасности mqtt написано, что нужно запрещать анонимный доступ на 1883.
Это подразумевает, что listener 1883 предназначен для внешних интеграций.
То, что при этом отваливается wb-mqtt-gpio - выглядит как недоработка разработчиков, которые в его конфигурации указали порт 1883 вместо специально предназначенного listener для внутренних взаимодействий контроллера.
Напрашивается вопрос для общего понимания:
- Расскажите пожалуйста и дополните доку о том, как весь набор сервисов wb-mqtt-* взаимодействует через mqtt. Через istener 18883 lo я не вижу коннектов. Через /var/run/mosquitto/mosquitto.sock - тоже. При этом у топикстартера ничего кроме wb-mqtt-gpio не сломалось.
Напрашиваются следующие фиксы:
- Listenter 1883 зарезервировать только для внешних интеграций и позволить пользователю выключать на нем анонимный доступ.
- Настроить wb-mqtt-gpio так, чтобы он работал с mosquitto как с ним работают другие сервисы wb-mqtt-*, не через 1883 порт.
- Сделать так, чтобы webui контроллера тоже работал с mosquitto либо через свой listener, либо так-же как с ним работают другие сервисы wb-mqtt-*. Тогда в UI не будет раздела-недоразумения “Веб-интерфейс/подключение к MQTT брокеру”. В нем просто отпадет надобность.
Пока данная проблема не решена напрашивается решение: для внешних интеграций, требующих аутентификации, настраивать свой listener.