首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python mqtt连接上的SSL证书验证失败

python mqtt连接上的SSL证书验证失败
EN

Stack Overflow用户
提问于 2019-03-15 14:26:11
回答 1查看 1.2K关注 0票数 0

我有一个非常奇怪的问题。前提是我对mqtt和python都一无所知(后者我现在至少有5-6年没有用过了),但我正在使用3D跟踪系统(www.pozyx.io)为一家博物馆制作Unity应用程序,我需要我的每台机器都运行一个小型的mqtt- to -OSC客户端,这样我的Unity应用程序就可以从客户端读取位置数据。

在我的开发机器上,使用传感器生产者提供的略微修改过的脚本版本,一切都工作得很好。

`

代码语言:javascript
复制
API_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

import paho.mqtt.client as mqtt
import ssl
import json

from pythonosc.udp_client import SimpleUDPClient


host = "mqtt.cloud.pozyxlabs.com"
port = 443
topic = "5c500595601a3f5871a17685"
username = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
password = "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"

ip = "127.0.0.1"                   # IP for the OSC UDP
network_port = 8888                # network port for the OSC UDP
osc_udp_client = SimpleUDPClient(ip, network_port)


def on_connect(client, userdata, flags, rc):
    print(mqtt.connack_string(rc))


def on_message(client, userdata, msg):

tag_data = json.loads(msg.payload.decode())

for tag in tag_data:
    try:
        network_id = tag["tagId"]
        #print(network_id)
        timestamp = tag["timestamp"]
        position = tag["data"]["coordinates"]
        yaw = tag["data"]["orientation"]["yaw"]

        osc_udp_client.send_message("/position", [network_id, timestamp, position["x"], position["y"], position["z"], yaw])
    except:
        print("Received a bad packet?")
        pass


def on_subscribe(client, userdata, mid, granted_qos):
    print("Subscribed to topic!")


client = mqtt.Client(transport="websockets")

client.username_pw_set(username, password=password)

client.tls_set_context(context=ssl.create_default_context())

client.on_connect = on_connect

client.on_message = on_message
client.on_subscribe = on_subscribe

client.connect(host, port=port)
client.subscribe(topic)

client.loop_forever()

`

现在我正在准备部署,当然是在新安装的windows10机器上(我在NUC和Lenovo Thinkpad上都试过了),什么都不能用,每次我都会得到以下错误

C:\Users\Vattenkikare1\Desktop\osc_hans>py osc_hans.py回溯(最近一次调用):文件"osc_hans.py",67行,在client.connect( port=port)文件返回行839,在connect return self.reconnect()文件返回行994,在重新连接"C:\Users\Vattenkikare1\AppData\Local\Programs\Python\Python37-32\lib\ssl.py",()文件sock.do_handshake行1117中,在do_handshake self._sslobj.do_handshake() ssl.SSLCertVerificationError: SSL: CERTIFICATE_VERIFY_FAILED证书验证失败:无法获取本地颁发者证书(_ssl.c:1056)

我的笔记本电脑连接到同一个WiFi上,并且我确实拥有所有机器的管理员权限。你知道是什么导致了这个问题吗?为什么这种情况只发生在其他计算机上,而不发生在我的计算机上?我首先在这些机器上部署了一个可执行文件,然后在其中一台机器上对所有模块进行了快速的python设置,但没有任何变化。

我确实发现了一些类似的问题,但没有一个问题可以与我的解决方案直接相关。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-15 17:36:29

我似乎以最随机的方式找到了解决方案。我在一篇文章中注意到Pozyx.io网站使用了"COMODO RSA Domain Validation Secure Server CA“证书,尽管应用编程接口文档没有提到它,但我在测试计算机上安装了它,一切都开始工作了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55176763

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档