首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蚊虫的tls连接失效

蚊虫的tls连接失效
EN

Stack Overflow用户
提问于 2016-01-08 08:29:44
回答 2查看 2.2K关注 0票数 0

我已经生成了证书,并且能够使用下面的命令成功地连接

代码语言:javascript
复制
mosquitto_sub -t "hello/world" -v --cafile ../certs/ca.crt --cert ../certs/client.crt --key ../certs/client.key

当我试图使用相同的证书对我的代码做同样的操作时,我面临以下错误

客户端

代码语言:javascript
复制
LIBMOSQUITTO 1004005
8: Unable to connect: A TLS error occurred.
Success

服务器端

代码语言:javascript
复制
1452241406: New connection from 127.0.0.1 on port 1883.
1452241406: OpenSSL Error: error:140780E5:SSL routines:SSL23_READ:ssl handshake failure
1452241406: Socket error on client <unknown>, disconnecting.

这是我的密码

代码语言:javascript
复制
int main(){
printf("LIBMOSQUITTO %d\n", LIBMOSQUITTO_VERSION_NUMBER);

        if ((m = mosquitto_new("rtr", 1, NULL)) == NULL) {
                fprintf(stderr, "Out of memory.\n");
                exit(1);
        }

        int rc = mosquitto_tls_set(m,
                        "path/to/ca.crt",          /* cafile */
                        NULL,                   /* capath */
                        "/path/to/client.crt",             /* certfile */
                        "/path/to/client.key",             /* keyfile */
                        NULL                    /* pw_callback() */
                        );

        if (rc != MOSQ_ERR_SUCCESS) {
                fprintf(stderr, "Cannot set TLS CA: %s (check path names)\n",
                                mosquitto_strerror(rc));
                exit(3);
        }
#if 0
        mosquitto_tls_opts_set(m,
                        SSL_VERIFY_PEER,
                        NULL,                   /* tls_version: "tlsv1.2", "tlsv1" */
                        NULL                    /* ciphers */
                        );
        mosquitto_tls_insecure_set(m, 1);
#endif
        if ((rc = mosquitto_connect(m, "localhost", 1883, 20)) != MOSQ_ERR_SUCCESS) {
                fprintf(stderr, "%d: Unable to connect: %s\n", rc,
                                mosquitto_strerror(rc));
                perror("");
                exit(2);
        }
}

更新:也测试了端口8884

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-01-08 09:15:21

你没有给mosquitto_lib_init()打电话。

票数 2
EN

Stack Overflow用户

发布于 2016-01-08 09:05:03

您的代码正在连接到端口1883,它通常不是TLS端口;根据您在mosquitto.conf中配置的内容,我认为您需要端口8883,假设您在8883上配置了一个TLS侦听器。

我还指出,您使用的是/path/topath/to,它们可能是复制/粘贴错误,也可能不是。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34672531

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档