【问题标题】:python paho mqtt client connection through ssl/tls giving an errorpython paho mqtt客户端连接通过ssl/tls给出错误
【发布时间】:2016-08-23 13:41:11
【问题描述】:

我正在尝试使用我自己的证书颁发机构通过 tls 将我的 python paho mqtt 客户端连接到我的代理。我生成了必要的文件并配置了我的 RabbitMQ 代理以使用它们。我的想法是客户端对服务器进行身份验证,但客户端本身不需要进行身份验证。

  • ca.cert.pem
  • cert.pem
  • key.pem

我知道这些应该可以正常工作,因为我还有一个可以正常工作的 scala paho mqtt 客户端。

目前我直接从我的 Mac 上的终端运行该文件。我正在使用由 python 3.5.2 创建的 virtuanenv,并且我有一个文件 subscribe.py

import paho.mqtt.client as paho
import ssl

def on_message(clnt, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

def on_connect(client, userdata, rc):
        print("Connected with result code "+str(rc))
        mqttc.subscribe("foo")

mqttc = paho.Client()
mqttc.on_message = on_message
mqttc.on_message = on_message
mqttc.tls_set("ca.cert.pem", tls_version=ssl.PROTOCOL_TLSv1_2)
mqttc.connect("address", 8883, 60)
mqttc.loop_forever()

当我运行该文件时,我收到以下错误

ssl.SSLEOFError: EOF occurred in violation of protocol (_ssl.c:645)

我还尝试将tls_version 更改为TLSv1_1TLSv1 并将其完全排除在外。 ca.cert.pemsubscribe.py 文件位于同一文件夹中

paho 网站上的示例看起来很简单,所以我在这里缺少什么?为什么我的 python 客户端收到错误消息?

【问题讨论】:

    标签: python ssl mqtt paho


    【解决方案1】:

    您尝试过 mosquitto 客户端吗?您遇到的问题有很多可能性,因此最好的解决方法是尝试另一种方法。

    mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v

    d 标志用于调试消息,v 标志用于详细模式。

    如果mosquitto客户端无法连接ca,可以试试:

    mosquitto_sub -h address -p 8883 --cafile ca.cert.pem -t "#" -d -v --insecure

    不安全标志将忽略 CA 检查服务器。如果添加不安全标志可以使您连接,那么可能是 CA 错误。然后你可以使用openssl来调试它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 1970-01-01
      • 2022-01-02
      • 2021-05-07
      • 1970-01-01
      相关资源
      最近更新 更多