Skip to main content

MQTT

Версия: 1.26.0

В OpenRemote есть агент MQTT (клиент), который можно использовать для подключения к внешнему брокеру MQTT. Сначала используйте агент MQTT, чтобы установить соединение с брокером. Затем создайте актив с атрибутами типа значения, который соответствует входящим/исходящим данным, и присвойте этим атрибутам элемент конфигурации «Агентная ссылка». В этой ссылке агента выберите свой агент MQTT и добавьте параметр «Тема публикации» или «Тема подписки». У нас пока нет обширной документации, поэтому рекомендуем проверить наш форум.

OpenRemote также имеет MQTT Broker (или MQTT API).

Подключение к брокеру MQTT с использованием (m)TLS, AWS IoT Core

AWS IoT Core предоставляет возможность аутентифицировать клиентов у брокера MQTT с помощью клиентских сертификатов X.509. Для этого нам нужно будет добавить клиентские сертификаты X.509, назначенные созданной нами вещи, в хранилища ключей OpenRemote, специфичные для области. Ниже приведено руководство о том, как это можно сделать;

Вам потребуется установить keytool; это также можно сделать с помощью любого графического интерфейса для хранилищ ключей (например, KeyStore Explorer).

После создания вещи в AWS IoT Core вам необходимо получить ее сертификат, закрытый ключ и сертификат корневого центра сертификации Amazon.

Все они предоставляются после доступа к панели управления этой штукой и создания для нее нового сертификата: img.png

Загрузите сертификат устройства и активируйте его, загрузите файл закрытого ключа и 2048-битный ключ RSA конечной точки Amazon Trust Services.

предупреждение

Пароль хранилища ключей и пароль каждой пары ключей должны совпадать и задаваться через OR_KEYSTORE_PASSWORD. Несовпадение вызывает ошибки вида Get Key failed: Given final block not properly padded.

Пароль всего, что связано с хранилищем ключей, — OR_KEYSTORE_PASSWORD, когда он запрашивается. Если она не установлена ​​в качестве переменной среды перед первым запуском OpenRemote, по умолчанию она будет иметь значение <empty string>. Если вы захотите изменить пароль позже, вам нужно будет изменить его как в хранилище ключей, так и в хранилище доверенных сертификатов, а также пароли каждой пары ключей в хранилище ключей и хранилище доверенных сертификатов и обязательно установить OR_KEYSTORE_PASSWORD в качестве этого пароля.

Прежде чем продолжить, убедитесь, что OpenRemote был запущен хотя бы один раз, чтобы необходимые файлы хранилища ключей создавались автоматически. Если у вас уже есть файл хранилища ключей, обязательно укажите местоположение файла, используя OR_SSL_CLIENT_KEYSTORE_FILE, OR_SSL_CLIENT_TRUSTSTORE_FILE и OR_SSL_CLIENT_KEYSTORE_PASSWORD или OR_SSL_CLIENT_TRUSTSTORE_PASSWORD в качестве паролей.

После этого нам необходимо:

  • Объедините сертификат и закрытый ключ в файл пары ключей PKCS#12, чтобы его можно было легко импортировать в хранилище ключей:
openssl pkcs12 -export -in OpenRemoteAWSCertificate.pem.crt -inkey OpenRemoteAWSPrivate.key -out OpenRemoteAWSKeyPair.p12 -name openremoteagent
  • Импортируйте пару ключей в существующее хранилище ключей.

Предупреждение! псевдоним, который вы здесь используете, будет использоваться для различения пар ключей, которые будут использоваться в разных агентах. Чтобы это работало, вам нужно будет использовать следующий формат: <the realm where you will be creating the agent>.<an alias you will enter into the OpenRemote agent configuration>. Например, мы будем использовать master.OpenRemoteAwsIoTClientCertificate. Итак, мы создадим агент в главной области, а псевдоним сертификата, который мы предоставим, — OpenRemoteAwsIoTClientCertificate.

keytool -importkeystore -destkeystore <storage dir>/client_keystore.p12 -srckeystore OpenRemoteAWSKeyPair.p12 -srcstoretype PKCS12 -alias master.OpenRemoteAwsIoTClientCertificate
  • Импортируйте сертификат корневого центра сертификации Amazon в хранилище доверенных сертификатов;
keytool -importcert -file AmazonRootCA1.pem -keystore <storage dir>/client_truststore.p12 -alias amazonrootca1

Теперь мы готовы снова запустить OpenRemote и создать новый агент MQTT.

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

В этом агенте настройте следующие параметры:

  • Правильный хост и порт (для брокера AWS IoT Core MQTT используется 8883).
  • Безопасный режим включен.
  • Установите псевдоним сертификата на псевдоним, который мы установили выше, без области и .: OpenRemoteAwsIoTClientCertificate. Псевдоним используется, чтобы позволить агенту MQTT выбрать правильный сертификат для аутентификации.
  • Установите идентификатор клиента, убедившись, что это разрешено созданной политикой объекта (проверьте панель управления AWS IoT-><your thing's name>->Сертификат->Политика для проверки).

Агент пытается подключиться, успешно проходит аутентификацию и подключается к брокеру MQTT, готовый к публикации/подписке в соответствии с вашими потребностями.

См. также


Уведомление о лицензии: атрибуция документации OpenRemote