尝试从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版本 .
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是不受欢迎的 .
作为最后一个选项,您还可以使用mosquitto_pub / sub的
--insecure
选项,或者如果使用网桥则设置tls_insecure
. 正如这些选项所暗示的那样,这样做会降低系统的安全性 .