当前位置: 首页 > 知识库问答 >
问题:

MQTT泛美卫生组织[CERTIFICATE_VERIFY_FAILED]

邢凯歌
2023-03-14

我对Python有一个问题(我是一个Python noob,正在学习它)。我在Debian9系统上使用了2.7.9版本。我在Python中安装了paho和tinkerforge包。

我使用Paho MQTT客户机开发了一个脚本来连接我的mosquitto代理。我想使用加密连接。我的连接在未加密时工作正常,但在加密时失败。在openHAB(MQTT-Subscriber)和MQTTFX(MQTT-Subscriber and Producer)上加密连接工作良好

self.client = mqtt.Client()
self.client.tls_set("/home/pi/ca-cert.pem","/home/pi/IWILR1-1-cert.pem","/home/pi/IWILR1-1.pem",tls_version=ssl.PROTOCOL_TLSv1)
# disables peer verification
self.client.tls_insecure_set(False)
    self.client.on_connect = self.mqtt_on_connect
    self.client.on_disconnect = self.mqtt_on_disconnect
self.client.on_message = self.mqtt_on_message

    self.device_proxies = {}
    self.device_proxy_classes = {}

    for subclass in DeviceProxy.subclasses():
        self.device_proxy_classes[subclass.DEVICE_CLASS.DEVICE_IDENTIFIER] = subclass

def connect(self):
    if self.broker_username is not None:
        self.client.username_pw_set(self.broker_username, self.broker_password)

    self.client.connect(self.broker_host, self.broker_port)
    self.client.loop_start()
    sudo python /home/pi/brick-mqtt-proxy.py
Traceback (most recent call last):
  File "/home/pi/brick-mqtt-proxy.py", line 1250, in <module>
    proxy.connect()
  File "/home/pi/brick-mqtt-proxy.py", line 1109, in connect
    self.client.connect(self.broker_host, self.broker_port)
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 760, in connect
    return self.reconnect()
  File "/usr/local/lib/python2.7/dist-packages/paho/mqtt/client.py", line 919, in reconnect
    sock.do_handshake()
  File "/usr/lib/python2.7/ssl.py", line 840, in do_handshake
    self._sslobj.do_handshake()
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:661)
1504896114: New connection from 143.93.197.20 on port 8883.
1504896114: OpenSSL Error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
1504896114: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
1504896114: Socket error on client <unknown>, disconnecting.
# Place your local configuration in /etc/mosquitto/conf.d/
#
# A full description of the configuration file is at
# /usr/share/doc/mosquitto/examples/mosquitto.conf.example


pid_file /var/run/mosquitto.pid

persistence true
persistence_location /var/lib/mosquitto/


log_type all
log_facility 5
log_timestamp true
log_dest file /var/log/mosquitto/mosquitto.log

include_dir /etc/mosquitto/conf.d

port 8883
cafile /etc/mosquitto/ca_certificates/ca-cert.pem
certfile /etc/mosquitto/certs/server-cert.pem
keyfile /etc/mosquitto/certs/server-key.pem

共有1个答案

叶坚
2023-03-14

如果使用的是TLS V1.2,则需要将表达式(第2行:self.client.tls_set())'tls_version=ssl.protocol_tlsv1'修改为'tls_version=ssl.protocol_tlsv12',而不是预期的...tlsv1.2。这对我有效。

 类似资料:
  • 我需要帮助,因为我试图用c为我的arm设备交叉编译paho库。 我使用Ubuntu20.04虚拟机,我的交叉编译器是gcc-linaro-5.3-2016.02-x86_64_arm-linux-gnueabihf_5.3_sub1.0.3.tgz。这里是不同的步骤。 我有多个警告 --C编译器标识为GNU 5.3.1--检查正常运行的C编译器:/opt/gcc-linaro-5.3-2016.0

  • 我们在安装Hialifeia仪表板时出现了这个错误。请确认是否有人遇到过这个。这看起来与spring boot有关,是在我安装Hialifeia的UI时得到的

  • 我创建了一个简单的Kafka生产者 启动捆绑包时,遇到以下错误: 我已尝试设置和如下所示: 也喜欢,但还是出现了同样的错误。我在这里做错了什么。

  • 目录 必须将所有 state 都维护在 Redux 中吗? 可以用 React 的 setState() 方法吗? 可以将 store 的 state 设置为函数、promise 或者其它非序列化值吗? 如何在 state 中组织嵌套及重复数据? 组织 State 必须将所有 state 都维护在 Redux 中吗? 可以用 React 的 setState() 方法吗? 没有 “标准”。有些用户

  • 作为核心概念, Redux 真的是一种十分简单的设计模式:所有你“写”的逻辑都集中在一个单独的函数中,并且执行这些逻辑的唯一方式就是传给 Redux 一个能够描述当时情景的普通对象(plain object)。Redux store 调用这些逻辑函数,并传入当前的 state tree 以及这些描述对象,返回新的 state tree,接着 Redux store 便开始通知这些订阅者(subsc

  • 以下是组织结构图的示例。 组织结构图有助于呈现节点层次结构,用于描绘组织中的上级/下级关系。 例如,家族树是一种组织结构图。 我们已经在Google Charts Configuration Syntax一章中看到了用于绘制图表的配置 。 现在,让我们看一个组织结构图的例子。 配置 (Configurations) 我们使用OrgChart类来显示组织结构图。 // Organization ch