MyTetra Share
Делитесь знаниями!
Время создания: 07.12.2024 17:49
Автор: alensav
Текстовые метки: SETTING_MOSQUITTO
Раздел: MOSQUITT_SETTING
Запись: alensav/MyTetra2/main/base/173358297650m0vbj3g2/text.html на raw.githubusercontent.com

1.

SETTING_MOSQUITTO

https://www.8host.com/blog/ustanovka-brokera-soobshhenij-mosquitto-v-ubuntu-18-04/

2.

https://www.ekzorchik.ru/2019/05/how-to-enable-mqtt-server-on-ubuntu-18-04/
3.

https://hostadvice.com/how-to/web-hosting/ubuntu/how-to-install-and-configure-mosquitto-mqtt-on-your-ubuntu-18-04-server/#

4.

https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-ubuntu-18-04-quickstart?_x_tr_sl=en&_x_tr_tl=ru&_x_tr_hl=ru&_x_tr_pto=sc

==================


  • Учебники
  • Вопросы
  • Документация по продукту
  • Поиск сообщества

УЧЕБНИК

Как установить и защитить Mosquitto MQTT Messaging Broker в Ubuntu 18.04 [Краткое руководство]

Опубликовано 16 июля 2018 г.

  • Убунту
  • Обмен сообщениями
  • Разнообразный
  • Быстрый старт
  • Убунту 18.04

Брайан Бушерон

В ведение

MQTT  — это протокол обмена сообщениями между машинами, разработанный для обеспечения легкой публикации/подписки для устройств «Интернета вещей». Mosquitto  — это популярный сервер MQTT (или брокер , на языке MQTT), который имеет большую поддержку сообщества и прост в установке и настройке.

В этом кратком руководстве по быстрому старту мы установим и настроим Mosquitto и используем SSL-сертификаты Let's Encrypt для защиты нашего трафика MQTT. Если вам нужно более подробное освещение любого из шагов, пожалуйста, ознакомьтесь со следующими руководствами:

  • Как использовать автономный режим Certbot для получения SSL-сертификатов Let's Encrypt
  • Как установить и защитить брокер сообщений Mosquitto MQTT

П редпосылки

Перед началом этого урока вам понадобится:

  • Сервер Ubuntu 18.04 с пользователем без прав root, с включенной функцией sudo и базовой настройкой брандмауэра, как подробно описано в этом руководстве по настройке сервера Ubuntu 18.04.
  • mqtt.example.comДоменное имя, указывающее на ваш сервер. В этом руководстве будет использоваться заполнитель
  • Порт 80 на вашем сервере не должен использоваться. Если вы устанавливаете Mosquitto на машину с веб-сервером, который занимает этот порт, вам нужно будет использовать другой метод для получения сертификатов, например режим Certbot's  webroot  .

Ш аг 1 — Установка программного обеспечения

Сначала мы установим пользовательский репозиторий программного обеспечения, чтобы получить последнюю версию Certbot, клиента Let's Encrypt:

  1. sudo add-apt-repository ppa:certbot/certbot

Копировать

Нажмите ENTER, чтобы принять, затем установите программные пакеты для Mosquitto и Certbot:

  1. sudo apt install certbot mosquitto mosquitto-clients

Копировать

Далее мы получим наш SSL-сертификат.

Ш аг 2 — Загрузка SSL-сертификата

Откройте порт 80в вашем брандмауэре:

  1. sudo ufw allow 80

Копировать

Затем запустите Certbot, чтобы получить сертификат. Не забудьте подставить здесь доменное имя вашего сервера:

  1. sudo certbot certonly --standalone --preferred-challenges http -d mqtt.example.com

Копировать

Вам будет предложено ввести адрес электронной почты и согласиться с условиями обслуживания. После этого вы должны увидеть сообщение об успешном завершении процесса и о том, где хранятся ваши сертификаты.

Далее мы настроим Mosquitto для использования этих сертификатов.

Ш аг 3 — Настройка Mosquitto

Сначала мы создадим файл паролей, который Mosquitto будет использовать для аутентификации подключений. Используйте mosquitto_passwdдля этого, убедившись, что заменили свое собственное предпочитаемое имя пользователя:

  1. sudo mosquitto_passwd -c /etc/mosquitto/passwd your-username

Копировать

Вам будет дважды предложено ввести пароль.

Теперь откройте новый файл конфигурации для Mosquitto:

  1. sudo nano /etc/mosquitto/conf.d/default.conf

Копировать

Откроется пустой файл. Вставьте следующее:

/etc/mosquitto/conf.d/default.conf

allow_anonymous false

password_file /etc/mosquitto/passwd


listener 1883 localhost


listener 8883

certfile /etc/letsencrypt/live/mqtt.example.com/cert.pem

cafile /etc/letsencrypt/live/mqtt.example.com/chain.pem

keyfile /etc/letsencrypt/live/mqtt.example.com/privkey.pem


listener 8083

protocol websockets

certfile /etc/letsencrypt/live/mqtt.example.com/cert.pem

cafile /etc/letsencrypt/live/mqtt.example.com/chain.pem

keyfile /etc/letsencrypt/live/mqtt.example.com/privkey.pem


Обязательно замените доменное имя, которое вы использовали в Шаге 2, на mqtt.example.com. Сохраните и закройте файл, когда закончите.

Этот файл выполняет следующие действия:

  • Отключает анонимные входы
  • Использует наш файл паролей для включения аутентификации по паролю
  • Устанавливает незащищенный прослушиватель на порту 1883 только для локального хоста
  • Устанавливает безопасный прослушиватель на порту8883
  • Устанавливает защищенный прослушиватель на основе веб-сокетов на порту8083

Перезапустите Mosquitto, чтобы изменения конфигурации вступили в силу:

  1. sudo systemctl restart mosquitto

Копировать

Проверьте, запущена ли служба снова:

  1. sudo systemctl status mosquitto

Копировать

Output● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker

Loaded: loaded (/etc/init.d/mosquitto; generated)

Active: active (running) since Mon 2018-07-16 15:03:42 UTC; 2min 39s ago

Docs: man:systemd-sysv-generator(8)

Process: 6683 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)

Process: 6699 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)

Tasks: 1 (limit: 1152)

CGroup: /system.slice/mosquitto.service

└─6705 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf


Статус должен быть active (running). Если это не так, проверьте файл конфигурации и перезапустите снова. Дополнительная информация может быть доступна в файле журнала Mosquitto:

  1. sudo tail /var/log/mosquitto/mosquitto.log

Копировать

Если все в порядке, используйте команду ufw, чтобы разрешить двум новым портам проходить через брандмауэр:

  1. sudo ufw allow 8883
  2. sudo ufw allow 8083

Копировать

Теперь, когда Mosquitto настроен, мы настроим Certbot для перезапуска Mosquitto после обновления наших сертификатов.

Ш аг 4 — Настройка продлений Certbot

Certbot автоматически обновит наши SSL-сертификаты до истечения срока их действия, но после этого ему необходимо указать, что необходимо перезапустить службу Mosquitto.

Откройте файл конфигурации продления Certbot для вашего доменного имени:

  1. sudo nano /etc/letsencrypt/renewal/mqtt.example.com.conf

Копировать

Добавьте следующую renew_hookопцию в последнюю строку:

/etc/letsencrypt/renewal/mqtt.example.com.conf

renew_hook = systemctl restart mosquitto


Сохраните и закройте файл, затем выполните тестовый прогон Certbot, чтобы убедиться в правильности синтаксиса:

  1. sudo certbot renew --dry-run

Копировать

Если вы не видите ошибок, все готово. Давайте теперь протестируем наш сервер MQTT.

Ш аг 5 – Тестирование Mosquitto

На шаге 1 мы установили несколько клиентов командной строки MQTT. Мы можем подписаться на тему test на прослушивателе localhost следующим образом:

  1. mosquitto_sub -h localhost -t test -u "your-user" -P "your-password"

Копировать

И мы можем опубликовать с помощью mosquitto_pub:

  1. mosquitto_pub -h localhost -t test -m "hello world" -u "your-user" -P "your-password"

Копировать

Чтобы подписаться с помощью защищенного прослушивателя на порту 8883, выполните следующие действия:

  1. mosquitto_sub -h mqtt.example.com -t test -p 8883 --capath /etc/ssl/certs/ -u "your-username" -P "your-password"

Копировать

И вот как вы публикуете данные для защищенного слушателя:

  1. mosquitto_pub -h mqtt.example.com -t test -m "hello world" -p 8883 --capath /etc/ssl/certs/ -u "your-username" -P "your-password"

Копировать

Обратите внимание, что мы используем полное имя хоста вместо localhost. Поскольку наш SSL-сертификат выпущен для mqtt.example.com, при попытке безопасного подключения к localhostмы получим сообщение об ошибке, сообщающее, что имя хоста не соответствует имени хоста сертификата.

Для проверки функциональности веб-сокета мы будем использовать публичный клиент MQTT на основе браузера. Откройте утилиту клиента Eclipse Paho javascript в вашем браузере  и заполните информацию о подключении следующим образом:

  • Хост — это домен вашего сервера Mosquitto,mqtt.example.com
  • Порт есть8083
  • ClientId можно оставить со случайным значением по умолчанию.
  • Путь можно оставить по умолчанию /ws
  • Имя пользователя — это ваше имя пользователя Mosquitto из Шага 3.
  • Пароль — это пароль, который вы выбрали на шаге 3.

Остальные поля можно оставить со значениями по умолчанию.

После нажатия Connect клиент подключится к вашему серверу. Вы можете публиковать и подписываться, используя панели Subscribe и Publish Message под панелью Connection .

З аключение

Мы уже настроили и протестировали безопасный, защищенный паролем и зашифрованный SSL сервер MQTT. Он может служить надежной и безопасной платформой обмена сообщениями для вашего IoT, домашней автоматизации или других проектов.

Спасибо за обучение в сообществе DigitalOcean. Ознакомьтесь с нашими предложениями по вычислениям, хранению, сетевым технологиям и управляемым базам данных.

Узнайте больше о нашей продукции

Об авторах

Брайан Бушерон

Автор

Все еще ищете ответ?

Задать вопрос Поиск дополнительной помощи


Было ли это полезно?

ДаНет

 

Комментарии

4 комментария

Оставьте комментарий...

В этом текстовом поле по умолчанию для форматирования ответа используется Markdown .

Вы можете ввести !ref в этом текстовом поле, чтобы быстро найти наш полный набор учебных пособий, документации и предложений на торговой площадке, а затем вставить ссылку!

Войдите или зарегистрируйтесь, чтобы оставить комментарий

Демоти 2 ноября 2018 г.

При работе с сертификацией я столкнулся с несколькими ошибками.

Команда: sudo certbot certonly --standalone --preferred-challenges http -d mqtt.example.com  Ошибка: Проблема привязки к порту 80: Не удалось привязаться к IPv4 или IPv6.

Команда: sudo certbot renew --dry-run Ошибки: Попытка обновить сертификат ( mqtt.example.com  ) из /etc/letsencrypt/renewal/mqtt.example.com.conf привела к непредвиденной ошибке: Проблема привязки к порту 80: Не удалось привязать к IPv4 или IPv6… Пропуск. Пробный запуск: пропуск команды deploy hook: systemctl restart mosquitto

Вам нужно остановить веб-сервис. Для меня это было «service apache2 stop»

  • Отвечать

гильеб 28 июня 2021 г.

Все работает отлично, за исключением клиента Eclipse Paho javascript. Кнопка «Подключиться» выдает ошибку на консоли javascript: Uncaught ReferenceError: connectionToggle is not defined И, очевидно, соединение не происходит.

  • Отвечать

дкиви 14 июня 2019 г.

Все работает гладко, за исключением того, что я не могу подключиться безопасно через порт 8883. Я получаю сообщение «Ошибка: произошла ошибка TLS». Он работает через 1883, используя домен, но не 8883. /etc/ssl/certs/ пуст, должно ли здесь что-то быть?

  • Показать ответы
  • Отвечать

alex183e2b69d92 9 января 2019 г.

При обновлении сертификатов SSL команды перезапуска Mosquitto не выполняются, поскольку они не дожидаются повторного запуска процесса, вам необходимо использовать (не самый чистый способ перезапуска, но он хотя бы работает…)

renew_hook = systemctl остановить mosquitto;спящий режим 1;systemctl запустить mosquitto

команды сна делают здесь магию. Если вы найдете другой способ сделать это, пожалуйста, поделитесь им.

  • Показать ответы
  • Отвечать

Данная работа лицензирована в соответствии с лицензией Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International.

 
MyTetra Share v.0.67
Яндекс индекс цитирования