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

tech2023-02-12  105

在向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"

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

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

 

最新回复(0)