MQTT:SSL例程:SSL3\u GET\u记录:版本号错误

MQTT:SSL例程:SSL3\u GET\u记录:版本号错误,mqtt,mosquitto,Mqtt,Mosquitto,我尝试将SSL与MQTT一起使用,并得到以下错误: 1379677998: Client connection from 127.0.0.1 failed: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number. 1379678058: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure 1379678058:

我尝试将SSL与MQTT一起使用,并得到以下错误:

1379677998: Client connection from 127.0.0.1 failed: error:1408F10B:SSL routines:SSL3_GET_RECORD:wrong version number.
1379678058: OpenSSL Error: error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure
1379678058: Socket read error on client (null), disconnecting.
我的conf文件如下所示:

port 8883
cafile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/test-root-ca.crt (also tried all-ca.crt here)
certfile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/server.crt
keyfile /home/administrator/Downloads/mosquitto-1.2.1_dilip/test/ssl/server.key
tls_version tlsv1
require_certificate true (tried commenting this too)
我从测试文件夹运行08-ssl-connect-cert-auth.test。下面包含代码片段

    mosquitto_tls_opts_set(mosq, 1, "tlsv1", NULL);
    mosquitto_tls_set(mosq, "../ssl/test-root-ca.crt", "../ssl/certs", "../ssl/client.crt", "../ssl/client.key", NULL);
    mosquitto_connect_callback_set(mosq, on_connect);
    mosquitto_disconnect_callback_set(mosq, on_disconnect);

    rc = mosquitto_connect(mosq, "localhost", 8883, 60);
环境信息:

Python 2.7.3
OpenSSL 1.0.1 14 Mar 2012
Description:    Ubuntu 12.04.2 LTS
Release:    12.0
mosquitto-1.2.1/mosquitto-1.2
请告诉我这里会出什么问题?我还尝试使用gen.sh生成证书

提前谢谢


-Dilip

一般性说明-您应该生成自己的证书,不要使用mosquitto提供的证书进行测试,或者使用gen.sh脚本,而不根据自己的详细信息对其进行修改

要使用提供的证书,您应该在代理中使用
all-ca.crt
。它包含示例根CA和中间CA证书。客户端仅需要根CA进行验证

您在代理配置中使用证书的完整路径,但在客户端使用相对路径。你确定它们都是正确的吗


您是否尝试过使用
make test
运行未经修改的测试?例如,这会告诉您openssl安装是否有问题。

感谢罗杰的及时回复。我们已经使用未经修改的测试套件在新版本(1.2.1)的broker上进行了尝试,现在它似乎可以正常工作,只需对“08 ssl connect cert auth.c”中的证书路径进行一些小的更改(即提高一级)。mosquito_tls_集(mosq,“../../ssl/test-root-ca.crt”、“../../ssl/certs”、“../../ssl/client.crt”、“../../ssl/client.key”,NULL);顺便说一句,我们只是想知道“../../ssl/certs”指的是什么,因为我们在ssl文件夹中看不到任何certs文件夹?没错,在这些测试中没有使用它。它确实允许您在需要时使用证书目录。