Mosquitto OpenSSL 握手失败。

Mosquitto OpenSSL handshake failure.

我在 CentOs 6.7 中托管了一个 Mosquitto 1.4.4 代理。

通过关注 mosquitto 文档 (http://mosquitto.org/man/mosquitto-tls-7.html) 和

我尝试启用客户端和 mosquitto 代理之间的加密连接,启动代理并启用 运行 TLS。

mosquitto version 1.4.4 (build date 2015-09-24 08:08:55+0000) starting
Config loaded from mosquitto.conf.
Opening ipv4 listen socket on port 8883.
Opening ipv6 listen socket on port 8883

分发证书颁发机构证书 (ca.crt) 后,我尝试 运行 在 lib_mosquitto 中使用 mosquitto_pub 进行测试,使用命令

mosquitto_pub -h x.x.x.x -p 8883 -t topic -m message --cafile ca.crt

我在 mosquitto 经纪人那里得到的是

New connection from y.y.y.y on port 8883.
OpenSSL Error: error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
Socket error on client <unknown>, disconnecting.

有什么解决办法?我哪里出错了?

我在这里看到的最常见的失败原因是证书配置不当。我建议使用 openssl 客户端进行调试。这应该可以让您更好地了解问题出在哪里。

openssl s_client -connect x.x.x.x:8883 -CAfile ca.crt

您也可以尝试检查不同的服务器以确保客户端工作正常。

wget http://test.mosquitto.org/ssl/mosquitto.org.crt
mosquitto_pub -h test.mosquitto.org -p 8883 -t topic -m message --cafile mosquitto.org.crt