<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://wiki.i-on.pro/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.</id>
	<title>Подключите Shelly к RabbitMQ через MQTT mTLS. - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.i-on.pro/index.php?action=history&amp;feed=atom&amp;title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS."/>
	<link rel="alternate" type="text/html" href="http://wiki.i-on.pro/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.&amp;action=history"/>
	<updated>2026-04-21T10:35:46Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.45.1</generator>
	<entry>
		<id>http://wiki.i-on.pro/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.&amp;diff=5265&amp;oldid=prev</id>
		<title>imported&gt;Unknown user в 10:07, 11 марта 2026</title>
		<link rel="alternate" type="text/html" href="http://wiki.i-on.pro/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.&amp;diff=5265&amp;oldid=prev"/>
		<updated>2026-03-11T10:07:51Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 13:07, 11 марта 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>imported&gt;Unknown user</name></author>
	</entry>
	<entry>
		<id>http://wiki.i-on.pro/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.&amp;diff=805&amp;oldid=prev</id>
		<title>imported&gt;Unknown user в 10:21, 2 марта 2026</title>
		<link rel="alternate" type="text/html" href="http://wiki.i-on.pro/index.php?title=%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82%D0%B5_Shelly_%D0%BA_RabbitMQ_%D1%87%D0%B5%D1%80%D0%B5%D0%B7_MQTT_mTLS.&amp;diff=805&amp;oldid=prev"/>
		<updated>2026-03-02T10:21:33Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Краткое описание ==&lt;br /&gt;
&lt;br /&gt;
Это решение обеспечивает безопасное подключение IP-устройства Shelly к RabbitMQ через плагин MQTT с использованием взаимного TLS (mTLS), без паролей, с применением взаимной аутентификации на основе сертификатов. Один скрипт Bash устанавливает и настраивает RabbitMQ, генерирует частный центр сертификации (CA), сертификаты сервера и клиента, а затем отображает таблицу значений конфигурации. После завершения единственного ручного действия на Shelly — это загрузка&lt;br /&gt;
ca.crt&lt;br /&gt;
,&lt;br /&gt;
client.crt&lt;br /&gt;
и&lt;br /&gt;
client.key&lt;br /&gt;
, копирование этих значений в настройки MQTT и сохранение. Поддерживает выбор серий RabbitMQ (&lt;br /&gt;
--rmq-series 3.13|4.0|4.1&lt;br /&gt;
, по умолчанию 4.1) из репозиториев Ubuntu noble от Team RabbitMQ и принудительно использует только TLS 1.2. В версии 4.x идентификатор клиента MQTT (client_id) определяется на основе сертификата (SAN, URI),&lt;br /&gt;
в то время как аутентифицированное имя пользователя (username) по-прежнему определяется на основе сертификата (CN); в версии 3.13 привязка SAN-&amp;gt;client_id недоступна. Вы можете управлять хостом подключения (и CN/SAN сертификата сервера) с помощью&lt;br /&gt;
--connect-dns&lt;br /&gt;
/&lt;br /&gt;
--connect-ip&lt;br /&gt;
. Скрипт экспортирует сертификаты устройств в&lt;br /&gt;
/etc/mqtt-cert&lt;br /&gt;
&lt;br /&gt;
и по умолчанию также выдает сертификат монитора (-mon&lt;br /&gt;
) в&lt;br /&gt;
/etc/mqtt-cert-monitor&lt;br /&gt;
с архивами в /tmp/.&lt;br /&gt;
Результат: зашифрованный MQTT с аутентификацией по сертификату и доступом к темам с минимальными привилегиями.&lt;br /&gt;
&lt;br /&gt;
Ссылка на скрипт:&lt;br /&gt;
[https://github.com/ALLTERCO/Utilities/tree/master/rabbitmq-mqtt-mtls здесь]&lt;br /&gt;
&lt;br /&gt;
Важно:&lt;br /&gt;
&lt;br /&gt;
Этот скрипт предназначен только для разработки/тестирования,&lt;br /&gt;
являясь примером того, что возможно. Используйте с осторожностью и&lt;br /&gt;
не развертывайте в продакшене в неизмененном виде.&lt;br /&gt;
&lt;br /&gt;
== Архитектура ==&lt;br /&gt;
&lt;br /&gt;
СХЕМА&lt;br /&gt;
&lt;br /&gt;
[Устройство Shelly]&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
| MQTT через TLS (mTLS) - порт 8883&lt;br /&gt;
v&lt;br /&gt;
[Слушатель RabbitMQ MQTT] ---&amp;gt; [обмен amq.topic] ---&amp;gt; [очереди/подписки]&lt;br /&gt;
| |&lt;br /&gt;
&lt;br /&gt;
| ‘-- ACL тем, ограниченные вашим префиксом MQTT&lt;br /&gt;
|&lt;br /&gt;
&lt;br /&gt;
«-- Пользовательский интерфейс управления (HTTPS, 15671)&lt;br /&gt;
&lt;br /&gt;
* Транспорт: Shelly взаимодействует с RabbitMQ по порту 8883 (MQTTS). Требуется TLS; клиенты должны предоставить действительный сертификат (mTLS), принудительно используется только TLS 1.2.&lt;br /&gt;
&lt;br /&gt;
* Идентификация: Сертификат устройства CN сопоставляется с пользователем RabbitMQ (в Shelly нет имени пользователя/пароля).&lt;br /&gt;
&lt;br /&gt;
* Привязка идентификатора клиента: Принудительно осуществляется из SAN сертификата (URI) в RabbitMQ 4.x. Имя пользователя по-прежнему берется из CN; версия 3.13 не поддерживает SAN→client_id.&lt;br /&gt;
&lt;br /&gt;
» * &amp;#039;&amp;#039;&amp;#039;Авторизация:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;Списки контроля доступа к темам&amp;#039;&amp;#039;&amp;#039; ограничены выбранным вами &amp;#039;&amp;#039;&amp;#039;префиксом MQTT&amp;#039;&amp;#039;&amp;#039; (плюс доступ только для чтения к &amp;#039;&amp;#039;shellies/command&amp;#039;&amp;#039; для совместимости).&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Арендаторство:&amp;#039;&amp;#039;&amp;#039; MQTT не передает виртуальные хосты, поэтому соединения направляются на выделенный виртуальный хост (например, &amp;#039;&amp;#039;&amp;#039;/shelly&amp;#039;&amp;#039;&amp;#039; ) через &amp;#039;&amp;#039;mqtt.vhost&amp;#039;&amp;#039; .&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Управление:&amp;#039;&amp;#039;&amp;#039; HTTPS-интерфейс на &amp;#039;&amp;#039;&amp;#039;15671.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Порты без ограничений:&amp;#039;&amp;#039;&amp;#039; &amp;#039;&amp;#039;&amp;#039;По умолчанию отключено.&amp;#039;&amp;#039;&amp;#039; Вы можете временно сохранить &amp;#039;&amp;#039;&amp;#039;1883/15672&amp;#039;&amp;#039;&amp;#039; с помощью --keep-plaintext во время миграции.&lt;br /&gt;
&lt;br /&gt;
=== Краткая справка ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Внимание! Решение&lt;br /&gt;
|-&lt;br /&gt;
| Порт (данные)&lt;br /&gt;
| 8883 / TCP (MQTTS с mTLS)&lt;br /&gt;
|-&lt;br /&gt;
| Порт (администратор)&lt;br /&gt;
| 15671 / TCP (интерфейс управления HTTPS)&lt;br /&gt;
|-&lt;br /&gt;
| Идентификатор&lt;br /&gt;
| CN сертификата -&amp;gt; пользователь RabbitMQ&lt;br /&gt;
|-&lt;br /&gt;
| Идентификатор клиента&lt;br /&gt;
| Предоставляется пользователем в Shelly; в RabbitMQ 4.x он определяется из SAN сертификата (URI). В версии 3.13 привязка SAN -&amp;gt; client_id недоступна&lt;br /&gt;
|-&lt;br /&gt;
| Vhost&lt;br /&gt;
| /shelly (устанавливается через mqtt.vhost)&lt;br /&gt;
|-&lt;br /&gt;
| Темы&lt;br /&gt;
| Ограничено вашим префиксом MQTT (как в форме косой черты, так и в форме точки), а также shellies/command только для чтения (shellies.command)&lt;br /&gt;
|-&lt;br /&gt;
| Секреты на устройстве&lt;br /&gt;
| Только ключ клиента (без паролей)&lt;br /&gt;
|-&lt;br /&gt;
| Открытый текст&lt;br /&gt;
| По умолчанию отключено; можно включить с помощью --keep-plaintext&lt;br /&gt;
|-&lt;br /&gt;
| Версия TLS&lt;br /&gt;
| Только TLS 1.2&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Предварительные условия ===&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Протестированная среда (на момент написания):&amp;#039;&amp;#039;&amp;#039; Ubuntu 24.04 LTS (amd64), RabbitMQ 4.1 (установлен с помощью этого скрипта), прошивка Shelly 1.7.1.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Установка:&amp;#039;&amp;#039;&amp;#039; из репозиториев Team RabbitMQ, закрепленных в Ubuntu noble.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Доступ:&amp;#039;&amp;#039;&amp;#039; Оболочка на хосте с правами &amp;#039;&amp;#039;&amp;#039;sudo&amp;#039;&amp;#039;&amp;#039;; исходящий интернет для репозиториев apt.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Адресация:&amp;#039;&amp;#039;&amp;#039; Стабильный IP-адрес/DNS брокера (скрипт может автоматически определять, фиксированный лучше).&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Синхронизация времени:&amp;#039;&amp;#039;&amp;#039; NTP включен (действительность сертификата зависит от правильного времени).&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Необязательно:&amp;#039;&amp;#039;&amp;#039; mosquitto-clients для быстрого сквозного тестирования.&lt;br /&gt;
&lt;br /&gt;
== Что делает скрипт ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Установка RabbitMQ (3.13 / 4.0 / 4.1) + соответствующий Erlang на Ubuntu 24.04&amp;#039;&amp;#039;&amp;#039; Использует репозитории apt Team RabbitMQ (рекомендуемый путь) для получения современного Erlang/RabbitMQ. https://www.rabbitmq.com/docs/install-debian&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Настройка через rabbitmq.conf (а не rabbitmq-env.conf)&amp;#039;&amp;#039;&amp;#039; Настройки среды выполнения (слушатели, TLS, плагины) находятся в rabbitmq.conf; rabbitmq-env.conf предназначен только для переменных окружения. https://www.rabbitmq.com/docs/configure&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Включить плагины MQTT + управления&amp;#039;&amp;#039;&amp;#039; Включает встроенную поддержку MQTT и управление/пользовательский интерфейс HTTPS, а также активирует rabbitmq_auth_mechanism_ssl. https://www.rabbitmq.com/docs/mqtt Включить флаг функции detailed_queues_endpoint (подробная информация о очередях только в пользовательском интерфейсе).&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Принудительное использование взаимного TLS (mTLS) для MQTT&amp;#039;&amp;#039;&amp;#039; Устанавливает ssl_options.verify = verify_peer и ssl_options.fail_if_no_peer_cert = true, поэтому клиенты должны предоставлять действительный сертификат; принудительно использует только TLS 1.2. https://www.rabbitmq.com/docs/mqtt#tls&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Вход по сертификату без пароля (CN → пользователь)&amp;#039;&amp;#039;&amp;#039; Включает mqtt.ssl_cert_login = true и ssl_cert_login_from = common_name. Сопоставленный пользователь должен существовать в RabbitMQ (пароль не требуется). https://www.rabbitmq.com/docs/mqtt#tls-certificate-authentication&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Привязка client_id MQTT к SAN сертификата (URI)&amp;#039;&amp;#039;&amp;#039; В RabbitMQ 4.1 устанавливает&lt;br /&gt;
&lt;br /&gt;
BASH&lt;br /&gt;
&lt;br /&gt;
mqtt.ssl_cert_client_id_from = subject_alternative_name&lt;br /&gt;
&lt;br /&gt;
таким образом, CONNECT&lt;br /&gt;
&amp;#039;&amp;#039;client_id&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
должен совпадать с SAN сертификата (предотвращает подмену идентификатора).&lt;br /&gt;
&lt;br /&gt;
[https://www.rabbitmq.com/docs/mqtt#usage-of-client_id-extraction-from-client-certificates-for-authentication https://www.rabbitmq.com/docs/mqtt#usage-of-client_id-extraction-from-client-certificates-for-authentication]&lt;br /&gt;
&lt;br /&gt;
Это привязывает&lt;br /&gt;
client_id&lt;br /&gt;
к сертификату&lt;br /&gt;
SAN (URI)&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
Имя пользователя&lt;br /&gt;
по-прежнему берется из&lt;br /&gt;
CN&lt;br /&gt;
; если вы хотите, чтобы&lt;br /&gt;
имя пользователя&lt;br /&gt;
было из&lt;br /&gt;
SAN&lt;br /&gt;
&lt;br /&gt;
вместо этого, вам следует изменить&lt;br /&gt;
ssl_cert_login_from=subject_alternative_name&lt;br /&gt;
и&lt;br /&gt;
ssl_cert_login_san_type=uri&lt;br /&gt;
&lt;br /&gt;
в конфигурации.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Выдача двух клиентских сертификатов (один и тот же CN, разные SAN)&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;устройство:&amp;#039;&amp;#039;&amp;#039; SAN=URI:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;монитор:&amp;#039;&amp;#039;&amp;#039; SAN=URI: -mon&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Профили сертификатов&amp;#039;&amp;#039;&amp;#039; : CA RSA-4096; сервер/клиент RSA-2048; срок действия конечного сертификата ≈ 825 дней&lt;br /&gt;
&lt;br /&gt;
Позволяет подписаться на сертификат монитора без отключения устройства (различные идентификаторы клиентов).&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Блокировка прослушивателей и портов&amp;#039;&amp;#039;&amp;#039; * &amp;#039;&amp;#039;&amp;#039;MQTTS:&amp;#039;&amp;#039;&amp;#039; 8883&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;Управление (HTTPS):&amp;#039;&amp;#039;&amp;#039; 15671&lt;br /&gt;
* Обычный &amp;#039;&amp;#039;&amp;#039;1883/15672&amp;#039;&amp;#039;&amp;#039; отключен по умолчанию; опционально при миграции с помощью --keep-plaintext. https://www.rabbitmq.com/docs/networking&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Создание арендатора и разрешений&amp;#039;&amp;#039;&amp;#039; * Направляет MQTT-сессии на /shelly (через mqtt.vhost). https://www.rabbitmq.com/docs/vhosts&lt;br /&gt;
* Применяет &amp;#039;&amp;#039;&amp;#039;разрешения для темы&amp;#039;&amp;#039;&amp;#039;, так что публикация/подписка ограничена вашим &amp;#039;&amp;#039;&amp;#039;префиксом MQTT&amp;#039;&amp;#039;&amp;#039; (плюс shellies/command только для чтения). https://www.rabbitmq.com/docs/man/rabbitmqctl.8#Access_control&lt;br /&gt;
* Удаляет пользователя &amp;#039;&amp;#039;&amp;#039;guest&amp;#039;&amp;#039;&amp;#039; по умолчанию.&lt;br /&gt;
&lt;br /&gt;
* Если set_topic_permissions недоступен в вашем RabbitMQ, скрипт выдаст предупреждение и оставит более широкий доступ к теме до обновления.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Вывод, используемый на Shelly&amp;#039;&amp;#039;&amp;#039; Создает &amp;#039;&amp;#039;&amp;#039;папку экспорта&amp;#039;&amp;#039;&amp;#039; с файлами ca.crt, client.crt, client.key и выводит таблицу точных значений для копирования в настройки &amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;Shelly MQTT&amp;#039;&amp;#039;&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
== Реализация ==&lt;br /&gt;
&lt;br /&gt;
# Запуск скрипта&lt;br /&gt;
&lt;br /&gt;
BASH&lt;br /&gt;
&lt;br /&gt;
./shelly-rmq-mqtt/setup-mqtt-mtls.sh \&lt;br /&gt;
--admin-user admin \&lt;br /&gt;
--admin-pass &amp;#039;Sh3lly-i0T!&amp;#039; \&lt;br /&gt;
-C &amp;#039;Shelly-Group&amp;#039; \&lt;br /&gt;
--client-id &amp;#039;test-device&amp;#039; \&lt;br /&gt;
--vhost /shelly \&lt;br /&gt;
--mqtt-prefix 1pm-mini&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Приоритет хоста подключения (и CN сертификата):&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
--connect-dns &amp;gt; --connect-ip &amp;gt; --ip (автоматически определяется, если нет). Выбранное значение становится сертификатом сервера&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;CN&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
и тем, на который должны набираться клиенты.&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Полезные флаги (при необходимости)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
BASH&lt;br /&gt;
&lt;br /&gt;
Идентификатор / Целевой адрес подключения (на который набираются клиенты; определяет CN/SAN сертификата)&lt;br /&gt;
--connect-dns &lt;br /&gt;
# предпочтительно: клиенты набирают это имя&lt;br /&gt;
--connect-ip &lt;br /&gt;
# клиенты набирают этот IP-адрес (если нет DNS)&lt;br /&gt;
&lt;br /&gt;
Идентификатор хоста (эта машина)&lt;br /&gt;
-i | --ip | --server-ip &lt;br /&gt;
# переопределяет обнаруженный основной IP-адрес (используется в сводке и SAN)&lt;br /&gt;
&lt;br /&gt;
MQTT / аренда / темы&lt;br /&gt;
-V | --vhost &lt;br /&gt;
# по умолчанию /shelly&lt;br /&gt;
--mqtt-prefix &lt;br /&gt;
# область действия ACL для тем&lt;br /&gt;
&lt;br /&gt;
Сертификаты / выходные данные&lt;br /&gt;
--tls-dir &lt;br /&gt;
# по умолчанию /etc/rabbitmq-tls&lt;br /&gt;
--export-dir &lt;br /&gt;
# по умолчанию /etc/mqtt-cert&lt;br /&gt;
--monitor-export-dir &lt;br /&gt;
# по умолчанию /etc/mqtt-cert-monitor&lt;br /&gt;
--no-monitor-cert # пропустить &lt;br /&gt;
-mon bundle&lt;br /&gt;
--monitor-client-id &lt;br /&gt;
# по умолчанию &lt;br /&gt;
-mon&lt;br /&gt;
--force-regen # ротация CA/сервера/клиента, даже если присутствует&lt;br /&gt;
&lt;br /&gt;
Версионирование RabbitMQ&lt;br /&gt;
--rmq-series 3.13|4.0|4.1 # по умолчанию 4.1&lt;br /&gt;
&lt;br /&gt;
Аутентификация / пользователи&lt;br /&gt;
--admin-user &lt;br /&gt;
# администратор по умолчанию&lt;br /&gt;
-p | --admin-pass &lt;br /&gt;
# автоматически генерируется по умолчанию, если опущено&lt;br /&gt;
-C | --client-cn &lt;br /&gt;
# Группа Shelly по умолчанию&lt;br /&gt;
--client-id &lt;br /&gt;
# по умолчанию = &lt;br /&gt;
&lt;br /&gt;
Сеть (временная совместимость)&lt;br /&gt;
--keep-plaintext # оставить открытыми порты 1883/15672 во время миграции&lt;br /&gt;
&lt;br /&gt;
Ведение логов / диагностика&lt;br /&gt;
-l | --log-level debug|info|warn|error&lt;br /&gt;
-d | --debug # потоковые логи; без индикатора загрузки&lt;br /&gt;
--debug-tls | --tls-debug # вывести диагностику сертификата (или DEBUG_TLS=1)&lt;br /&gt;
&lt;br /&gt;
Скрипт будет запущен и будет проходить каждый шаг, отображая индикатор успеха и ошибку, если она возникнет.&lt;br /&gt;
&lt;br /&gt;
[[File:Script_Steps.png]]&lt;br /&gt;
Шаги скрипта&lt;br /&gt;
После завершения обратите внимание на сводную таблицу внизу:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;IP-адрес/порты брокера&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ID клиента&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;префикс MQTT&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
* Пути к ca.crt, client.crt, client.key (папка экспорта)&lt;br /&gt;
* Параметры конфигурации Shelly&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;URL управления&amp;#039;&amp;#039;&amp;#039;: https:// :15671 (или https:// :15671, если CN — IP-адрес)&lt;br /&gt;
* Имя пользователя и пароль администратора (пароль генерируется автоматически, если не указан параметр --admin-pass)&lt;br /&gt;
* Путь к файлу журнала: /tmp/rabbitmq-mqtt-setup.log&lt;br /&gt;
&lt;br /&gt;
[[File:Summary_table.png]]&lt;br /&gt;
Сводная таблица скрипта&lt;br /&gt;
&lt;br /&gt;
# Загрузка сертификатов в Shelly Откройте &amp;#039;&amp;#039;&amp;#039;Веб-интерфейс Shelly → Настройки → Конфигурация TLS. Загрузите три файла из папки экспорта скрипта: * Сертификат CA: ca.crt&lt;br /&gt;
* Сертификат клиента: client.crt&lt;br /&gt;
* Закрытый ключ клиента: client.key. Загрузите каждый файл по отдельности: выберите файл, нажмите «Загрузить» и дождитесь всплывающего окна с подтверждением успешной загрузки. Повторите для всех трех файлов.&lt;br /&gt;
&lt;br /&gt;
[[Файл:Script_Shelly_Config.png]]&lt;br /&gt;
Скрипт конфигурации Shelly&lt;br /&gt;
&lt;br /&gt;
# Настройка Shelly MQTT Откройте веб-интерфейс Shelly → Настройки → MQTT. Настройте значения из скрипта:&lt;br /&gt;
&lt;br /&gt;
ТЕКСТ&lt;br /&gt;
&lt;br /&gt;
Включить: Выбрано&lt;br /&gt;
TLS пользователя: Выбрано&lt;br /&gt;
Использовать сертификат клиента: Включено&lt;br /&gt;
Включить «Управление MQTT»: Включено&lt;br /&gt;
Включить RPC через MQTT: Включено&lt;br /&gt;
Уведомления о состоянии RPC через MQTT: Включено&lt;br /&gt;
Общее обновление состояния через MQTT: Включено&lt;br /&gt;
Сервер: Значение из скрипта&lt;br /&gt;
Идентификатор клиента: Значение из скрипта&lt;br /&gt;
Префикс MQTT: Значение из скрипта&lt;br /&gt;
Имя пользователя / Пароль: Оставьте пустым&lt;br /&gt;
&lt;br /&gt;
# Нажмите «Сохранить настройки» и перезагрузите устройство&lt;br /&gt;
&lt;br /&gt;
После завершения настройки устройство должно выглядеть следующим образом:&lt;br /&gt;
[[File:Shelly_MQTT_Config_Web_UI.png]]&lt;br /&gt;
Веб-интерфейс настройки MQTT Shelly&lt;br /&gt;
&lt;br /&gt;
# После перезагрузки Shelly выполните команду мониторинга, которая отображается в сводке скрипта. Она автоматически генерируется на основе предоставленных вами значений и использует сертификат монитора (distinct client_id), поэтому устройство не будет отключено. Вы должны увидеть сообщения, поступающие от Shelly к RabbitMQ.&lt;br /&gt;
&lt;br /&gt;
[[File:Ready_to_run_Monitoring_command.png]]&lt;br /&gt;
Готовность к выполнению команды мониторинга&lt;br /&gt;
Вы должны увидеть, как Shelly подключается и публикует сообщения.&lt;br /&gt;
&lt;br /&gt;
[[File:Monitoring_Shelly_Messages_to_RabbitMQ.png]]&lt;br /&gt;
Мониторинг сообщений Shelly в RabbitMQ&lt;br /&gt;
Вы также можете подтвердить успешное подключение в веб-интерфейсе Shelly: значок MQTT в правом верхнем углу показывает две стрелки при подключении. Если вы видите стрелки, устройство активно связано с RabbitMQ по протоколу MQTT/TLS.&lt;br /&gt;
&lt;br /&gt;
[[File:Shelly_MQTT_success_indicator.png]]&lt;br /&gt;
Индикатор успешного подключения Shelly MQTT&lt;br /&gt;
Вы также можете увидеть индикатор в веб-интерфейсе RabbitMQ в разделе «Подключения».&lt;br /&gt;
[[File:RabbitMQ_Web_UI_Connection_info.png]]&lt;br /&gt;
Статус подключения в веб-интерфейсе RabbitMQ&lt;br /&gt;
[[File:RabbitMQ_Web_UI_Connection_Info.png]]&lt;br /&gt;
Информация о подключении в веб-интерфейсе RabbitMQ&lt;br /&gt;
Скрипт также выводит сводку отладки сертификатов, помогая вам увидеть, какие сертификаты были сгенерированы, чтобы минимизировать возможные проблемы. Пожалуйста, имейте в виду, что вам необходимо использовать&lt;br /&gt;
--debug-tls флаг&lt;br /&gt;
.&lt;br /&gt;
&lt;br /&gt;
[[File:Certificate_Debug_Steps.png]]&lt;br /&gt;
Шаги отладки сертификата&lt;br /&gt;
&lt;br /&gt;
== Устранение неполадок ==&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Синхронизация времени&amp;#039;&amp;#039;&amp;#039; - Убедитесь, что часы брокера и Shelly установлены правильно (NTP). Искажение времени нарушает работу TLS.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Загружены три файла&amp;#039;&amp;#039;&amp;#039; - ca.crt, client.crt, client.key (каждый загружен отдельно, всплывающее окно об успешной загрузке).&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Идентификатор клиента против SAN&amp;#039;&amp;#039;&amp;#039; - В RabbitMQ 4.1 идентификатор клиента MQTT должен совпадать с SAN (URI) сертификата. Если они различаются, соединение отклоняется. * В RabbitMQ &amp;#039;&amp;#039;&amp;#039;3.13&amp;#039;&amp;#039;&amp;#039; привязка client_id из SAN &amp;#039;&amp;#039;&amp;#039;не поддерживается&amp;#039;&amp;#039;&amp;#039;; используется только CN-&amp;gt;username.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;CN user exists&amp;#039;&amp;#039;&amp;#039; - Сертификат &amp;#039;&amp;#039;&amp;#039;CN&amp;#039;&amp;#039;&amp;#039; должен соответствовать существующему пользователю RabbitMQ (пароль не требуется при использовании mTLS).&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Ports&amp;#039;&amp;#039;&amp;#039; - Используйте &amp;#039;&amp;#039;&amp;#039;8883&amp;#039;&amp;#039;&amp;#039; (MQTTS). Порты 1883/15672 отключены, если вы не запускали скрипт с параметром --keep-plaintext.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Firewall&amp;#039;&amp;#039;&amp;#039; - Если &amp;#039;&amp;#039;&amp;#039;UFW&amp;#039;&amp;#039;&amp;#039; активен, скрипт открывает порты &amp;#039;&amp;#039;&amp;#039;8883&amp;#039;&amp;#039;&amp;#039; и &amp;#039;&amp;#039;&amp;#039;15671&amp;#039;&amp;#039;&amp;#039;; в противном случае он не изменяет правила брандмауэра.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Prefix&amp;#039;&amp;#039;&amp;#039; - Темы должны находиться в пределах вашего &amp;#039;&amp;#039;&amp;#039;префикса MQTT&amp;#039;&amp;#039;&amp;#039;, иначе ACL RabbitMQ заблокируют их.&lt;br /&gt;
&lt;br /&gt;
# &amp;#039;&amp;#039;&amp;#039;Совпадение ключа и сертификата:&amp;#039;&amp;#039;&amp;#039; Если соединение не удается, запустите с параметром --debug-tls и проверьте строку «совпадение ключа и сертификата» как для сервера, так и для клиента.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Инструкции по установке]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown user</name></author>
	</entry>
</feed>