无法从远程paho.mqtt Python3.7

时间:2018-09-07 16:42:39

标签: openssl mqtt raspberry-pi3 mosquitto paho

我有一个启用了TLS的笔记本电脑上的Debian Shell中运行的Mosquitto代理。我能够在同一台笔记本电脑上使用paho.mqtt.client和ssl从另一个运行Python3.7的Debian shell成功连接到它。但是,当我尝试从外部Debian实例(特别是Raspberry Pi 3B +)进行连接时,对“ connect”方法的调用将一直挂起,直到发生超时错误为止。

这是在我的笔记本电脑上的客户端外壳上起作用的内容:

    import paho.mqtt.client as mqtt
    import ssl
    mqttc = mqtt.Client()
    mqttc.tls_set("ca.crt", "client.crt", "client.key", cert_reqs=ssl.CERT_REQUIRED)
    mqttc.connect("LPS", 8883)

当我在RPi3B +上尝试相同操作时,connect方法只是挂起。 “ LPS”是我的笔记本电脑的机器名称,该机器名称是根据本文档在生成密钥/证书时使用的:https://mosquitto.org/man/mosquitto-tls-7.html

这是我对connect方法的调用:

    mqttc.connect("LPS", 8883)

在RPi3B +上,我具有相同的证书颁发机构证书(ca.crt)。我尝试使用相同的client.crt和client.key,但是最近我一直在尝试使用RPi3B +(相同的“公用名”:LPS)上的openssl生成的新client.crt和client.key。没什么。

根据一些建议,我尝试将第三条语句更改为以下内容的各种组合(包括尝试使用协议的mqtt.MQTTv31):

    Client(client_id="", clean_session=True, userdata=None, protocol=mqtt.MQTTv311, transport="tcp")

没有区别。

我的RPi3B +通过WiFi网络和小型以太网交换机(链接本地连接)连接到笔记本电脑。我尝试用IP地址(“ 169.254.128.185”和“ 192.168.0.102”)替换connect方法调用中的“ LPS”。没什么。

我正在使用/ etc / mosquitto中的以下命令启动mosquitto:

    mosquitto -c mosquitto.conf -v

以下是mosquitto.conf中的相关行:

    port 8883
    cafile /etc/mosquitto/ca_certificates/ca.crt
    certfile /etc/mosquitto/certs/server.crt
    keyfile /etc/mosquitto/certs/server.key
    tls_version tlsv1
    require_certificate true

我还尝试在mosquitto.conf中设置以下内容(只是将东西扔在墙上以查看可能会粘住什么):

    bind_address LPS
    protocol mqtt

没有区别。

我注意到,如果我在connect方法中为域/ IP地址键入一些垃圾,则会发生相同的事情:

    mqttc.connect("iujhkjhk", 8883)

没有区别,即它挂起,直到最终产生超时错误。

我能做的一件事会产生不同的结果,如果我在域/ IP地址前面加上“ tcp://”。在这种情况下,我会立即收到错误消息:

    socket.gaierror: [Errno -2] Name or service not known

我试图确保到处都安装有最新版本的mosquitto和paho.mqtt。

尝试从RPi3B +连接时我做错了什么。

0 个答案:

没有答案