Версия OpenWRT mosquitto_pub не поддерживает TLS, но мой брокер MQTT требует TLS
Я решил свою проблему, см. Конец этого вопроса для моего решения.
Я новичок в Mosquitto|MQTT, так что извиняюсь за все, что следует.
Установил москит, например, на Ubuntu, и все работает, я могу сделать это, как душе угодно:
mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/events \
--message "$(date --rfc-3339=seconds) Hello Henry!"
Я хотел бы выполнить эквивалент с устройства Onion Omega2, и я использую контейнер работает openwrt-x86-generic-rootfs
в качестве прокси-сервера для разработки (возможно, выпуск № 1)
docker run -i -t openwrt-x86-generic-rootfs /bin/ash
mkdir -p /var/lock
opkg update
opkg install mosquitto mosquitto-client libmosquitto
И тогда у меня есть mosquitto_pub
а также mosquitto_sub
но разные версии для версии Ubuntu выше, флаги вида -f
а также --flag
не поддерживается. Инструменты не предоставляют никакой информации о версии.
Я думаю, что эти версии устарели, но я не знаю, могу ли я | обновить что-либо более актуальное, чем opkg install
выше (выпуск № 2).
Как и в примере с Unix, брокеру Google Cloud IoT, к которому я хотел бы подключиться, требуется TLS (не взаимный), но клиенты OpenWRT Mosquitto, по-видимому, не включают параметры, разрешающие TLS. Нет эквивалента --cafile
, Без этого я думаю, что я заблокирован. (выпуск № 3).
Вопросы:
- Поддерживает ли Mosquitto на устройстве Onion Omega2 TLS?
- Является ли клиент OpenWRT Mosquitto устаревшим? Могу ли я обновить?
- Есть ли способ для меня, чтобы подключить лук к MTQQ от Google, используя TLS?
Спасибо!!
На устройстве Onion Omega2 установка Mosquitto предоставляет мне другую / текущую версию инструментов, которая включает cafile
флаг, и это сработало для меня. Любопытно, что эта версия инструментов предоставляет помощь, которая предусматривает, например, -u
но инструмент примет --username
Итак, я могу запустить следующие команды на Omega2, и обе работают для меня:
mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/events \
--message "Hello Henry!"
а также:
mosquitto_sub \
--host mqtt.googleapis.com \
--port 8883 \
--id ${LONG_REGISTRY}/devices/${DEVICE} \
--username unused \
--pw ${PASSWORD} \
--cafile /roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/${DEVICE}/config
Куда:
LONG_REGISTRY=projects/${PROJECT}/locations/${REGION}/registries/${REGISTRY}
И, отвечая на мои вопросы:
- Инструменты Mosquitto, установленные на Onion Omega2, поддерживают TLS.
- Я (предполагаю), что клиент OpenWRT Mosquitto устарел; это другое
- Да, приведенные выше примеры демонстрации и публикации с использованием Cloud IoT
Я не из Google IoT, и думаю, что мне больше всего нужна помощь Mosquitto.