mosquitto 1.2.1/1.2.2 中的 CA 证书的 SSL 证书失败

标签 ssl certificate mqtt mosquitto

尝试从 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 Error: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

同一个 CA 证书在 1.1.3 版本中工作正常。

是不是openssl版本有问题? 我的版本是 1.0.0。

最佳答案

问题是您证书中的 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。正如这些选项所暗示的那样,这样做会降低系统的安全性。

关于mosquitto 1.2.1/1.2.2 中的 CA 证书的 SSL 证书失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19787320/

相关文章:

azure - Dragino NB IoT 到 Azure Cosmos DB

mqtt - Mosquitto_sub 错误 : connection refused, 仅限 IPv6

ruby-on-rails - Bundler::Fetcher::CertificateFailureError | Mac OSX 10.10 上的捆绑 SSL 问题

ssl - centos7中/etc/ssl/certs/ca-bundle.crt和/etc/ssl/certs/ca-bundle.trust.crt有什么区别?

forms - dompdf 表单在安全服务器 (ssl) 中无法正常工作

c# - 显示带有链元素的 X509Certificate 不在证书库中

ssl - 用户在我的网站上得到 "website unsafe"

iphone - 将 iPhone 存档交给经销商

amazon-web-services - 使用带有 ssl 证书的 aws 设置 elb

ssl - 使用 MQTT libmosquitto C SDK 连接到 Azure IoT 中心