Платформа IBM Watson Internet of Things: подключение с помощью клиента mosquitto

Я создаю свое устройство в Watson IoT, я вижу, что оно подключено, и оно отправляет некоторые события (я вижу это на панели инструментов Watson iot)

Я определяю это следующим

  • Идентификатор устройства 1002
  • Тип устройства semaforo

Поэтому я создаю свое приложение со следующей информацией

  • ключ a-MyOrg-tecfj072yx
  • описание основа
  • Разрешения AccessControl стандартное приложение
  • ключ: a-MyOrg-tecfj072yx
  • токен: ATokenPsw

Я пытаюсь подключиться к событию устройства, используя код москита

mosquitto_sub -h MyOrg.messaging.internetofthings.ibmcloud.com -p 8883 -i a:MyOrg:myapp -u a-MyOrg-tecfj072yx -P ATokenPsw -t iot-2/type/+/id/+/cmd/+/fmt/+

и ничего не добавляется!!! не отображается ошибка, не извлекается событие !!! mosquitto_sub остается как есть

Почему подпрограмма неправильно подписалась на событие моего устройства?


person LucaAmato    schedule 30.11.2020    source источник
comment
Добавьте -d к аргументам командной строки, чтобы включить отладочный вывод. Также вам нужно передать -cafile или -capath с допустимыми значениями, чтобы включить TLS/SSL.   -  person hardillb    schedule 30.11.2020


Ответы (2)


Чтобы использовать порт 8883, вам необходимо установить TLS-соединение. mosquitto_sub требует наличия --cafile или --capath в командной строке, чтобы включить подключение TLS.

выдержки из справочной страницы

Чтобы включить подключения TLS при использовании сертификатов x509, необходимо указать один из параметров --cafile или --capath.

--cafile

Определите путь к файлу, содержащему доверенные сертификаты ЦС в кодировке PEM. Используется для включения связи SSL. См. также --capath

--capath

Определите путь к каталогу, содержащему доверенные сертификаты ЦС в кодировке PEM. Используется для включения связи SSL. Для правильной работы --capath файлы сертификатов должны иметь расширение .crt в качестве окончания, и вы должны запускать openssl rehash каждый раз, когда добавляете/удаляете сертификат.

person hardillb    schedule 30.11.2020

Спасибо. Ваша информация помогла мне решить ... но поездка была не такой легкой

Вот весь шаг, который разрешает соединение
1-Создание сертификата корневого ЦС с использованием вашей правильной информации (страна, штат, город и т. д.)

openssl genrsa -aes256 -passout pass:password123 -out rootCA_key.pem 2048
openssl req -new -sha256 -x509 -days 3560 -subj "/C=IT/ST=Itali/L=Milano/O=MyOrg/OU=MyOrg Corporate/CN=MyOrg Root CA" -extensions v3_ca -set_serial 1 -passin pass:password123 -key rootCA_key.pem -out rootCA_certificate.pem -config ext.cfg

2-Загрузка сертификата корневого центра сертификации на платформу IoT
Вам необходимо загрузить сертификат корневого центра сертификации в платформу IoT с помощью консоли. В разделе настроек перейдите в раздел «Сертификаты ЦС» в разделе «Безопасность». Выберите «Добавить сертификат», затем выберите файл rootCA_certificate.pem, который вы только что создали, для загрузки на платформу, затем нажмите «Сохранить».

3-Генерирует ключ и сертификат для сервера MQTT, используя вашу правильную информацию (страна, штат, город и т. д.), а CN ДОЛЖЕН совпадать с вашим сервером Интернета вещей (MyOrg.messaging... ..)

openssl genrsa -aes256 -passout pass:password123 -out mqttServer_key.pem 2048
openssl req -new -sha256 -subj "/C=IT/ST=Itali/L=Milano/O=MyOrg/OU=MyOrg Corporate/CN=MyOrg.messaging.internetofthings.ibmcloud.com" -passin pass:password123 -key mqttServer_key.pem -out mqttServer_crt.csr


4-Добавьте сертификат сервера на платформу IoT В платформу IoT в разделе настроек консоли в разделе Сертификаты сервера сообщений в разделе Безопасность. Выберите «Добавить сертификат», затем загрузите сертификат (mqttServer_crt.pem) и закрытый ключ (mqttServer_key.pem). Вам также необходимо указать пароль (password123).
5-Проверьте сертификат сервера с помощью openssl:

openssl s_client -CAfile mqttServer_crt.pem -showcerts -state  -servername MyOrg.messaging.internetofthings.ibmcloud.com -connect MyOrg.messaging.internetofthings.ibmcloud.com:8883


6 – Чтобы загрузить сертификат в формате PEM, его можно легко импортировать в хранилище доверенных сертификатов и поместить в MyOrg.messaging.internetofthings.ibmcloud.com.pem.

echo | openssl s_client -connect MyOrg.messaging.internetofthings.ibmcloud.com:8883 -showcerts 2>&1 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > MyOrg.messaging.internetofthings.ibmcloud.com.pem

7-Теперь вы можете использовать в

mosquitto_sub -h MyOrg.messaging.internetofthings.ibmcloud.com -p 8883 -i a:MyOrg:myapp -u MyOrgAppKey -P MyOrgToken -t iot-2/type/+/id/+/evt/+/fmt/+ -d --cafile MyOrg.messaging.internetofthings.ibmcloud.com.pem 

Чтобы завершить информацию, вот некоторый учебник, который может мне помочь.

разработчик .ibm.com

поддержка ibm.com

github, включая файлы srvext.cfg,ext.cfg

person LucaAmato    schedule 30.11.2020