尝试从mosquitto 1.1.3升级到1.2.1 / 1.2.1。我在尝试订阅活动时收到此错误。
mosquitto_sub -h 192.168.255.2 -p 8883 -v -t“test”--cafile /etc/certs/rootCA/ca.root.crt -d
OpenSSL错误:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败
相同的CA证书在1.1.3版本中运行良好。
openssl版本有问题吗? 我有1.0.0版本。
答案 0 :(得分:1)
问题是证书中的commonName
与您要连接的主机名(在本例中为IP地址)不匹配。 1.1.3没有验证这一点,因此容易受到假冒服务器的攻击。</ p>
您应该修复commonName
以匹配您正在使用的主机名,或者更好地使用subjectAltName
证书扩展名来提供您的主机名/ IP地址。 subjectAltName
允许您在证书中指定任意数量的主机名和IP地址。 Mqttitude有一个如何生成证书的示例:https://github.com/binarybucks/mqttitude/blob/master/tools/TLS/generate-CA.sh
我认为使用IP地址作为commonName是不受欢迎的。
作为最终选项,您还可以使用mosquitto_pub / sub的--insecure
选项,或者如果您使用网桥则设置tls_insecure
。正如这些选项所暗示的那样,这样做会降低系统的安全性。