Проблема с подключением gcloud к мосту MQTT - PullRequest
0 голосов
/ 28 февраля 2020

В настоящее время я пытаюсь подключить проект gcloud IoT к мосту MQTT, чтобы иметь возможность публиковать sh данные телеметрии. Я использую Mosquitto и пытаюсь запустить команду mosquitto_pub на экземпляре виртуальной машины, который я создал на gcloud compute engine. Я также создал правило брандмауэра, чтобы открыть порт 8883 с приоритетом 0. В полном объеме я отправляю следующую команду (я удалил используемую JWT и поместил ее здесь в блок кода)

mosquitto_pub \
--host mqtt.googleapis.com \
--port 8883 \
--id projects/telemetry-268916/locations/us-central1/registries/iotcore-registry-telemetry/devices/esp32 \
--username unused \
--pw "<my-JWT.>" \
--cafile ./roots.pem \
--tls-version tlsv1.2 \
--protocol-version mqttv311 \
--debug \
--qos 1 \
--topic /devices/esp32/events \
--message "Hello MQTT"

Когда я запускаю эту команду ^ Я получаю следующую ошибку:

Client projects/telemetry-268916/locations/us-central1/registries/iotcore-registry telemetry/devices/esp32 sending CONNECT
Client projects/telemetry-268916/locations/us-central1/registries/iotcore-registry-telemetry/devices/esp32 received CONNACK
Connection Refused: not authorised.
Error: The connection was refused.

Я искал везде и не могу найти решение этой проблемы. Я использую сертификат root и указываю файл CA, чтобы узнать, что происходит - HELP!

1 Ответ

1 голос
/ 29 февраля 2020

Я подозреваю, что срок действия вашего JWT слишком велик (> = 24 ч) в будущем.

Шлюз MQTT Google Cloud IoT (задокументировано: максимальное время жизни токена )

требовать, чтобы JWT был <= 24 ч </p>

PROJECT=
REGISTRY=
REGION=
DEVICE=

CLIENT="projects/${PROJECT}/locations/${REGION}/registries/${REGISTRY}/devices/${DEVICE}"
TOPIC="/devices/${DEVICE}/events"

# Using a JWT generator; expiry=24h
PASSWORD=$(\
  go-jwt \
  --project=${PROJECT} \
  --private_key=${KEY} \
  --expiry=24h)

docker run \
--interactive --tty \
--volume=${PWD}/roots.pem:/roots.pem \
eclipse-mosquitto:1.6.8 mosquitto_pub \
  -h mqtt.googleapis.com -p 8883 \
  -i ${CLIENT} \
  -u unused -P ${PASSWORD} \
  -t ${TOPIC} \
  -m "Hello Freddie!" \
  --cafile /roots.pem \
  --debug \
  --qos 1 \
  --tls-version tlsv1.2 \
  --protocol-version mqttv311
sending CONNECT
received CONNACK (0)
sending PUBLISH (d0, q1, r0, m1, '/devices/.../events', ... (14 bytes))
received PUBACK (Mid: 1, RC:0)
sending DISCONNECT

# Using a JWT generator; expiry=25h
PASSWORD=$(\
  go-jwt \
  --project=${PROJECT} \
  --private_key=${KEY} \
  --expiry=25h)

docker run \
--interactive --tty \
--volume=${PWD}/roots.pem:/roots.pem \
eclipse-mosquitto:1.6.8 mosquitto_pub \
  -h mqtt.googleapis.com -p 8883 \
  -i ${CLIENT} \
  -u unused -P ${PASSWORD} \
  -t ${TOPIC}
  -m "Hello Freddie!" \
  --cafile /roots.pem \
  --debug \
  --qos 1 \
  --tls-version tlsv1.2 \
  --protocol-version mqttv311
CONNECT
CONNACK (4)
Connection error: Connection Refused: bad user name or password.
DISCONNECT
...