ssl - Mosquitto TLS,适用于 MQTTfx 但不适用于 mosquitto_pub(tlsv1 警报未知 ca)

标签 ssl mqtt mosquitto

很奇怪的问题

我有使用 TLS 的 mosquitto 代理

它可以通过为“启用 SSL/TLS、TLSv1.2、CA 证书文件”设置的 MQTTfx 客户端正确访问

openwrt mosquitto 客户端发布使用相同的 ca.crt 文件

 # mosquitto_pub -h x.x.x.x -p 8883 --cafile /etc/mosquitto/certs/ca.crt -i 1.1.1.1 -t test -m 123 -d

返回

Client 1.1.1.1 sending CONNECT
Error: A TLS error occurred.

在另一端,经纪人显示

OpenSSL Error: error:14094418:SSL routines:SSL3_READ_BYTES:tlsv1 alert unknown ca
OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
Socket error on client (null), disconnecting.

让我感到困惑的是 MQTTfx 客户端反而被接受,并且它使用相同的证书......!

New connection from y.y.y.y on port 8883.
New client connected from y.y.y.y as 180ce1c04c1944e1964608221efbcf0a (c1, k60).
Sending CONNACK to 180ce1c04c1944e1964608221efbcf0a (0)

应该意味着证书有效且受信任……不是吗? 其他客户端使用完全相同的证书文件有什么问题?!?!

最佳答案

...最后使用 --insecure 选项完成了工作。

表示验证服务器证书中的服务器主机名。 很好,虽然在生产环境中使用此选项可能会使加密的使用无效。

关于ssl - Mosquitto TLS,适用于 MQTTfx 但不适用于 mosquitto_pub(tlsv1 警报未知 ca),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46916203/

相关文章:

javascript - mongo shell JavaScript 相当于 --sslCAFile

docker - Docker容器设置理解

linux - 如何消除mosquitto安装中的错误

java - HTTPS 不适用于域名或静态 IP,但适用于本地 IP

ssl - Mosquitto SSL 证书验证失败

stomp - Apollo 可以根据消费者协议(protocol)转换消息吗?

java - 在 Spring Boot 中添加具有不同客户端 ID 的 MQTT 连接

ssl - SSL 在 MQTT 中的一种工作方式是怎样的?

linux - 无法通过 websockets 连接到 Mosquitto

ssl - 来自 KeyVault 的 Kestrel 安全 HTTPS X509 证书