使用mosquitto订阅消息的时候,出现host name verification failed错误。

mosquitto_sub -L mqtts://124.71.233.xx:8883/ -t topic --cert cert.pem --key key.pem --cafile ../trusted-certs.pem -q 1 -d 

Client (null) sending CONNECT
Error: host name verification failed.
OpenSSL Error[0]: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed
Error: A TLS error occurred.

使用openssl s_client验证tls本身没有问题,问题应该出在mqtt的处理上面。

查看mosquitto 的源码。
在mosquitto-2.0.11/lib/tls_mosq.c中,看到如下实现。

if(mosq->tls_insecure == false
#ifndef WITH_BROKER
                        && mosq->port != 0 /* no hostname checking for unix sockets */
#endif
)
...
return preverify_ok;
}

直接设置mosq->tls_insecure为true就不进行这个判断了。
修改后如下:

mosquitto_sub -L mqtts://124.71.233.xx:8883/ -t topic --cert cert.pem --key key.pem --cafile ../trusted-certs.pem -q 1 -d --insecure
本文链接地址:https://const.net.cn/171.html

标签: mqtt

添加新评论