【问题标题】:MQTT (Mosquitto) over TLS - certificate error in some programsTLS 上的 MQTT (Mosquitto) - 某些程序中的证书错误
【发布时间】:2017-04-19 13:46:48
【问题描述】:

几天前我使用https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-the-mosquitto-mqtt-messaging-broker-on-debian-8 设置了一个 Mosquitto 服务器。

玩弄它,一切似乎都如我所愿。我能够将 android 客户端和 MQTTSpy 连接到我自己的服务器。

昨天我有一个好主意,想寻找一个可以将状态和信息推送到 MQTT 的 Kodi 插件:https://github.com/owagner/kodi2mqtt

当我看到 Mosquitto 日志文件中的更改时,它能够找到服务器,但是我不断收到相同的错误:

1492549927: New connection from 81.240.134.64 on port 8883.
1492549927: OpenSSL Error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol
1492549927: Socket error on client <unknown>, disconnecting.
1492549932: New connection from 81.240.134.64 on port 8883.
1492549933: OpenSSL Error: error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
1492549933: Socket error on client <unknown>, disconnecting.
1492549934: New connection from 81.240.134.64 on port 8883.
1492549934: OpenSSL Error: error:140760FC:SSL routines:SSL23_GET_CLIENT_HELLO:unknown protocol
1492549934: Socket error on client <unknown>, disconnecting.
1492549939: New connection from 81.240.134.64 on port 8883.
1492549939: OpenSSL Error: error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
1492549939: Socket error on client <unknown>, disconnecting.

据我了解,证书存在一些问题,但我不能 100% 确定缺少什么。在其他应用程序中,我不需要提供自己的证书,所以我看不到缺少什么。我尝试在 Kodi 插件中使用生成的证书,但是它们似乎不起作用,并且出现了另一个错误:

1492541859: New connection from 81.240.134.64 on port 8883.
1492541860: OpenSSL Error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
1492541860: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
1492541860: Socket error on client <unknown>, disconnecting.
1492541862: New connection from 81.240.134.64 on port 8883.
1492541862: OpenSSL Error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
1492541862: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
1492541862: Socket error on client <unknown>, disconnecting.

我不确定我应该检查哪个方向。我的服务器/证书有问题(似乎不太可能,因为其他客户端正在工作)还是 Kodi 插件的 python 代码有问题?如果是这样,任何人都可以阐明缺少的内容(我知道我的编码方式,只是不太了解证书)。

感谢您的帮助!

乔伦 C.

【问题讨论】:

    标签: python ssl certificate mosquitto


    【解决方案1】:

    您的 python 客户端将需要访问受信任的证书颁发机构。复制签名的公共证书浏览器客户端不需要它,因为它们已经加载了受信任的证书颁发机构。

    如果 kodi 插件正在使用 paho mqtt 客户端库,那么以下应该修复它..

    client.tls_set('$your server's public cert$.crt')

    【讨论】:

    • 我编写了自己的 python 应用程序进行测试,这确实是缺少的。我使用 ls /etc/ssl/certs/ | 找到了证书grep .crt
    【解决方案2】:

    尝试 ssl 连接:

    openssl s_client -connect 81.240.134.xxx:8883 -CAfile /etc/certs/file.crt -debug
    

    【讨论】:

    • 这是输出:pastebin.com/vnLrYyFf 我尝试删除尽可能多的敏感信息,如果我删除了重要信息,请告诉我
    • 另请注意,其他一切似乎都在工作,所以我猜测错误更多的是在 python(Kodi 插件)方面有些不正确。但是我不确定是什么。
    • 用您的 crt 文件编辑命令。 /etc/cert/file.crt 是一个示例,在您的文件系统中不存在。
    猜你喜欢
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    相关资源
    最近更新 更多