mosquitto日志报错SSL routines:SSL3_READ_BYTES:tlsv1 alert decrypt error
目录问题描述解决方法对于mosquitto库的C程序对mosquitto命令行问题描述今天在进行测试mosquitto的TLS/SSL出现如下错误,表明错误是出现在tls版本上:经过了解可知mosquitto_pub和mosquitto_sub的tls版本默认为tlsv1.2,然而在我的虚拟机中openssl的版本是1.1.1,且在mosquitto.conf中配置tls_version tlsv
目录
问题描述
今天在进行测试mosquitto的TLS/SSL出现如下错误,表明错误是出现在tls版本上:

经过了解可知mosquitto_pub和mosquitto_sub的tls版本默认为tlsv1.2,然而在我的虚拟机中openssl的版本是1.1.1,且在mosquitto.conf中配置tls_version tlsv1.1(这里配置的是单向认证,双向认证也适用),所以会出现tls版本错误。

解决方法
对于mosquitto库的C程序
在使用APImosquitto_tls_set()前提下再附加上mosquitto_tls_opts_set(),此API可以设置客户端相应的tls版本,注意tls版本默认为tlsv1.2。


代码如下:
int rc = -1;
rc = mosquitto_tls_opts_set(mosq, 1, "tlsv1.1", NULL);
if( rc != MOSQ_ERR_SUCCESS )
{
printf("mosquitto_tls_opts_set failure.\n");
exit(1);
}
rc = mosquitto_tls_set(mosq, CAFILE, CAPATH, CERTFILE, KEYFILE, NULL);
if( rc != MOSQ_ERR_SUCCESS )
{
printf("mosquitto_tls_set failure.\n");
exit(1);
}
对mosquitto命令行
以下是测试单向认证(若为双向认证,自行加上证书以及密钥)
mosquitto_pub -h 192.168.222.130 -p 8884 -t "hello" -m "hi sub" --tls-version tlsv1.1 --cafile ./ca/ca.crt
mosquitto_sub -h 192.168.222.130 -p 8884 -t "hello" --tls-version tlsv1.1 --cafile ./ca/ca.crt
成功解决问题,可以正常连上:

更多推荐



所有评论(0)