mosquitto TLS证书验证失败原因分析

在向ARM平台移植mosquitto时遇到TLS安全链接错误,通过详细排查及调试,发现问题是由于证书时间与系统时间不匹配导致。调整系统时间后,问题得以解决。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在向arm移植mosquitto的时候由于使用TLS安全链接,导致如下错误。

OpenSSL Error[0]: error:0A000086:SSL routines::certificate verify failed.

Error: A TLS error occurred.

出现的错误提示不是很明确,没有支出到底为啥证书验证失败,只能进行各种排查

1、检查命令参数是否正确--->确定正确

2、在ubuntu上进行测试--->同样的命令可以正常发布/订阅消息

3、更换openssl版本-->同样在arm板上出错,在ubuntu上可以正常发布订阅消息

于是开始扒拉openssl代码增加调试打印,最终定位报错位置

static int internal_verify(X509_STORE_CTX *ctx)函数的

 check_cert_time:

        /* Calls verify callback as needed */

        if (!x509_check_cert_time(ctx, xs, n)){

            printf("%s:%d: return 0\n", __FILE__, __LINE__);

            return 0;

        }

瞬间明白:证书时间与当前时间对不上!!!

于是查看板子时间,坑爹的1970年。

于是修改板子时间:date -s "2020-09-03 13:49:50"

重新发布消息:成功解决。

总结经验:先不要怀疑开源库的问题,出问题大概率是自己的问题,定位问题的方法最快的是在开源库增加调试信息,确定到底哪里报错,往往就能找到问题的根源。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值