Задать вопрос

Что предпринять, чтобы подключиться к MQTT-брокеру mqtt.cloud.yandex.net на Python?

Пишу программу на Python для работы с MQTT-брокером.

Сначала подключаюсь по порту 1883 к брокеру broker.emqx.io:
mqtt_broker = "broker.emqx.io"
mqtt_broker_port = 1883
mqtt_client_id = f"ozna_ds_publisher_{random.randint(0, 1000000)}"
mqtt_keepalive = 5 * 60

client = mqtt_client.Client(mqtt_client_id)
client.connect(mqtt_broker, mqtt_broker_port, keepalive=mqtt_keepalive)

Всё работает нормально.

По просьбе заказчика пытаюсь переключиться с broker.emqx.io на mqtt.cloud.yandex.net с одновременным переходом на на порт 8883. Из справочных материалов Яндекса я не понял, какой именно сертификат мне нужно со своей стороны передать client.tls_set(), поэтому всё предсказуемо не работает.

Код примерно такой:
mqtt_broker = "mqtt.cloud.yandex.net"
mqtt_broker_port = 8883
mqtt_client_id = f"ozna_ds_publisher_{random.randint(0, 1000000)}"
mqtt_keepalive = 5 * 60

client = mqtt_client.Client(mqtt_client_id)
client.tls_set("C:/Works/mqtt-rest-bridge/cert.pem", tls_version=ssl.PROTOCOL_TLSv1_2)
client.tls_insecure_set(True)
client.connect(mqtt_broker, mqtt_broker_port, keepalive=mqtt_keepalive)


В строке client.connect вываливается исключение "[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:997)"

Буду благодарен за рабочий пример подключения к MQTT-брокеру Яндекса на Python или за разъяснение, какой именно сертификат (реестра, устройства или еще какой-то) надо передавать в client.tls_set()
  • Вопрос задан
  • 377 просмотров
Подписаться 1 Простой 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы