MQTT с SSL Ошибка «Сброс соединения по одноранговой сети» - PullRequest
2 голосов
/ 08 ноября 2019

Я использую Raspberry Pi для публикации сообщения брокеру MQTT в VPS. Я использовал скрипт Python Paho-MQTT и получил эту ошибку:

Traceback (most recent call last):
  File "mqttpub5.py", line 14, in <module>
    client.connect("mydomain.com",8883,60)
  File "/usr/local/lib/python3.4/dist-packages/paho/mqtt/client.py", line 839, in connect
    return self.reconnect()
  File "/usr/local/lib/python3.4/dist-packages/paho/mqtt/client.py", line 994, in reconnect
    sock.do_handshake()
  File "/usr/lib/python3.4/ssl.py", line 804, in do_handshake
    self._sslobj.do_handshake()
ConnectionResetError: [Errno 104] Connection reset by peer

это мой скрипт Python

#!/usr/bin/env python3

import paho.mqtt.client as mqtt
import time

def on_connect(client, userdata, flags, rc):
  print("Connected("+str(rc)+"). Publishing Message...")


client = mqtt.Client()
client.username_pw_set("myusername","mypassword")
client.tls_set("/etc/ssl/certs/ca-bundle.crt")
client.tls_insecure_set(True)
client.connect("mydomain.com",8883,60)
client.on_connect = on_connect
client.loop_start()

count=0
while count<20:
 count=count+1
 client.publish("test","test no."+str(count))
 time.sleep(1)

print("Message Published")
client.disconnect()

Я думал, что это из-за проблемы с сертификатом, но когда я публикую с использованиемэта команда:

mosquitto_pub -h mydomain.com -t test -u myusername -P mypassword --cafile /etc/ssl/certs/ca-bundle.crt -p 8883 -m message

сообщение опубликовано без проблем. Я использую Let's Encrypt в моем VPS

, это журнал от брокера, когда я запускаю скрипт с моего Pi:

1573442272: mosquitto version 1.6.7 starting
1573442272: Config loaded from /etc/mosquitto/mosquitto.conf.
1573442272: Opening ipv6 listen socket on port 1883.
1573442272: Opening ipv4 listen socket on port 1883.
1573442272: Opening ipv4 listen socket on port 8883.
1573442272: Opening ipv6 listen socket on port 8883.
1573442272: Opening websockets listen socket on port 8083.
1573442281: New connection from xx.xx.xx.xxx on port 8883.
1573442281: OpenSSL Error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol
1573442281: Socket error on client <unknown>, disconnecting.

Я использовал тот же скрипт на другом компьютереи это работает без проблем.

Любая помощь будет оценена. Спасибо

1 Ответ

0 голосов
/ 14 ноября 2019

Кажется, решение - это просто обновление. У меня была Raspbian Jessie с Mosquitto версии 1.3.4 при появлении ошибки. Я обновил Raspbian до Stretch с Mosquitto версии 1.4.10, и проблема исчезла

...