mosquitto_sub错误:发生了TLS错误但是没问题 - 确保

时间:2017-05-24 07:34:40

标签: linux ssl mosquitto

我正在构建一个mqtt服务器。我在服务器上使用带有TLS的mosquitto作为经纪人。

我遇到了这个问题: 我通过generate-CA.sh

创建了ca.crt,服务器证书,服务器密钥,客户端证书,客户端密钥

我可以连接代理并通过MQTT.fx发布和订阅msg,但是当我尝试使用mosquitto_sub连接代理时,它在客户端PC(ubuntu)上同时出现Error:A TLS error occurred,同时,服务器打印

New connection from xx.xx.xx.xx on port 8883.
Openssl Error: error:14094416:SSL routines:SSL3_READ_BYTES:sslv3 alert certificate unknown
Openssl Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure

我使用的命令是:

mosquitto_sub -p 8883 -i test -t mqtt -h 150.xx.xx.xx --cafile ca.crt --cert xx.crt --key xx.key其中,150.xx.xx.xx是我的经纪人的IP。

当我使用上面的命令选项--insecure时,问题就消失了。 所以我认为这是导致这个问题的服务器主机名。 在mosquitto_sub命令中,选项-h指定主机名,但我需要使用此参数指向我的代理的IP地址,那么我如何指定服务器的主机名?

1 个答案:

答案 0 :(得分:0)

旧问题,但这也许可以帮助某人:

如果--insecure选项可以使用,则说明您存在证书问题。您在签署证书时设置了什么主机名? openssl s_client -showcerts -connect 150.xx.xx.xx:8883说什么?

相关:尽管使用 public IP地址(请参阅Is it possible to have SSL certificate for IP address, not domain name?)的服务器应该可以使用SSL证书,但我建议不要并仅使用DNS,即使这意味着server.localdomain和/或在必要时编辑/etc/hosts文件也是如此。