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.
Все они предоставляются после доступа к панели управления этой штукой и создания для нее нового сертификата: 
Загрузите сертификат устройства и активируйте его, загрузите файл закрытого ключа и 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