2

在尝试从 mosquitto 1.1.3 升级到 1.2.1/1.2.1 时。尝试订阅事件时出现此错误。

mosquitto_sub -h 192.168.255.2 -p 8883 -v -t "测试" --cafile /etc/certs/rootCA/ca.root.crt –d

OpenSSL 错误:错误:14090086:SSL 例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

相同的 CA 证书适用于 1.1.3 版本。

openssl 版本有问题吗?我有版本 1.0.0。

4

1 回答 1

1

问题是commonName您的证书中的 与您要连接的主机名(在本例中为 IP 地址)不匹配。1.1.3 没有验证这一点,因此很容易被冒充您的服务器。

您应该修复您commonName的主机名以匹配您正在使用的主机名,或者更好地使用subjectAltName证书扩展名来提供您的主机名/IP 地址。subjectAltName允许您在证书中指定任意数量的主机名和 IP 地址。Mqttitude有一个如何生成证书的例子:https ://github.com/binarybucks/mqttitude/blob/master/tools/TLS/generate-CA.sh

我相信使用 IP 地址作为 commonName 是不受欢迎的。

作为最后一个选项,您还可以使用--insecuremosquitto_pub/sub 的选项,或者tls_insecure在使用网桥时设置。正如这些选项所暗示的,这样做会降低系统的安全性。

于 2013-11-05T11:37:38.983 回答