硬汉嵌入式论坛

 找回密码
 立即注册
查看: 8820|回复: 15
收起左侧

[以太网] MQTT配合MbedTLS做通信加密传输,容易出SSL/TLS握手失败,估计是哪里的设置问题

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
发表于 2020-9-30 09:50:57 | 显示全部楼层 |阅读模式

本来使用微软Azure就可以直接使用MQTT + MbedTLS做测试,MDK也操作文档说明,看着也挺简单,但注册了下,发现需要个VISA卡。

所以就用国内的一些云端测试了下,MQTT非加密方式在一些MQTT Broker测试没问题,但加密方式还没有成功,老提示握手失败


QQ截图20200930100033.png
回复

使用道具 举报

0

主题

105

回帖

105

积分

初级会员

积分
105
发表于 2020-9-30 17:10:08 | 显示全部楼层
跟系统时间有没有关系。SSL验证是需要时间为基础的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
 楼主| 发表于 2020-10-1 00:35:45 | 显示全部楼层
barryxiao 发表于 2020-9-30 17:10
跟系统时间有没有关系。SSL验证是需要时间为基础的

谢谢。

对,时间问题要注意,改天我再研究研究
回复

使用道具 举报

4

主题

24

回帖

36

积分

新手上路

积分
36
发表于 2020-10-12 11:07:30 | 显示全部楼层
你好,请问这种方式实现了吗,具体流程是如何的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
 楼主| 发表于 2020-10-12 11:21:44 | 显示全部楼层
13432890113 发表于 2020-10-12 11:07
你好,请问这种方式实现了吗,具体流程是如何的

链接微软的可以,链接国内的没打通,暂不研究了。

MDK物联网软件包MQTT操作说明,貌似挺简单,一键生成
http://www.armbbs.cn/forum.php?m ... 0262&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

4

主题

24

回帖

36

积分

新手上路

积分
36
发表于 2020-10-22 17:03:01 | 显示全部楼层
eric2013 发表于 2020-10-12 11:21
链接微软的可以,链接国内的没打通,暂不研究了。

MDK物联网软件包MQTT操作说明,貌似挺简单,一键生 ...

项目需要使用MQTTS连接到华为OC,但是用MQTT+MbedTLS移植后就不知道如何下手
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
 楼主| 发表于 2020-10-23 00:17:25 | 显示全部楼层
13432890113 发表于 2020-10-22 17:03
项目需要使用MQTTS连接到华为OC,但是用MQTT+MbedTLS移植后就不知道如何下手

微软云端先跑一波熟练下。
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2021-5-14 16:39:53 | 显示全部楼层
QQ截图20210514163718.bmp
硬汉  加载到工程后,
mbedtls_aes_context aes_ctx; 进行定义提示没有这个类型,   需要包含很多文件??还是缺什么包含什么头文件?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
 楼主| 发表于 2021-5-15 08:45:03 | 显示全部楼层
wlx18682353162 发表于 2021-5-14 16:39
硬汉  加载到工程后,
mbedtls_aes_context aes_ctx; 进行定义提示没有这个类型,   需要包含很多文件? ...

不清楚你这个咋回事。
回复

使用道具 举报

29

主题

177

回帖

264

积分

高级会员

积分
264
发表于 2021-5-17 15:49:00 | 显示全部楼层

tls_config.h头文件要打开相关宏定义
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106997
QQ
 楼主| 发表于 2021-5-18 08:04:09 | 显示全部楼层
wlx18682353162 发表于 2021-5-17 15:49
tls_config.h头文件要打开相关宏定义

你回复的另一个帖子里面都写了,很详细,按步骤操作即可
回复

使用道具 举报

1

主题

31

回帖

34

积分

新手上路

积分
34
发表于 2022-7-13 15:10:19 | 显示全部楼层
硬汉大哥握手失败这个问题找到原因了吗
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2022-12-26 15:53:56 | 显示全部楼层

硬汉大哥握手失败这个问题找到原因了吗
回复

使用道具 举报

0

主题

11

回帖

11

积分

新手上路

积分
11
发表于 2023-1-29 09:33:10 | 显示全部楼层
移植、测试一周后,认为握手错误的原因有:1、在mode中选择需要证书时,所匹配的CA证书不正确或者所定义的时间函数返回的时间戳不正确,导致证书过期;2、在mode中选择不需要验证证书时,如果握手还是失败,考虑密码套件不符合问题(宏定义开启),使用wireshark抓包查看;3、如果以上都正确,还是握手失败,考虑密码套件太复杂而单片机算力不够导致的卡塞而断开tcp连接;(DHE_RSA等);4、另外注意hostname可以不设置(单向认证),但设置了就一定要和所提供证书的CN一致才行,否则也是错误;5、是否服务器为双向SSL认证导致的握手失败;6、接收的回调函数,最好用环形队列组包;
回复

使用道具 举报

1

主题

52

回帖

55

积分

初级会员

积分
55
发表于 2023-1-30 11:33:48 | 显示全部楼层
zhanghaiboeee 发表于 2023-1-29 09:33
移植、测试一周后,认为握手错误的原因有:1、在mode中选择需要证书时,所匹配的CA证书不正确或者所定义的 ...

回复

使用道具 举报

8

主题

32

回帖

56

积分

初级会员

初级程序员

积分
56
QQ
发表于 2023-3-7 16:22:24 | 显示全部楼层
eric2013 发表于 2020-10-1 00:35
谢谢。

对,时间问题要注意,改天我再研究研究

我开始也以为我握手过程中会因为时间出问题的,然后搞了一个ntp,给第一个随机数的前四个字节,后来调试过程中发现,随机数中的时间并没有用到,client hello的时间和sever hello的时间都是不对的,所以就忽略了。mbedtls握手失败过程主要还是要看一下  mbedtls_net_recv和mbedtls_net_send发送函数写的问题,我用的W5500,使用官网的ssl_client1的示例去调试的,出现过EOF错误,0x7200错误,问题都是在net_recv中解决的,对于测试时握手要使用阻塞式接收,死等它握手的sever client、ca证书、随机数、和sever done之后在处理握手就没问题了。CA证书验证,遇到一个问题就是你设置hostname的域名/端口号一定要和证书里面的一致,要不然证书验证是通过的。另一个是mbedtls 我设置的W5500的缓存的4K,接收发送一样大小,堆栈的分配要够用,堆我最小分配是56K,保证握手过程是可以通过的,在网上还看到其他人建议是60K,栈的空间根据项目需要可以大一点都可以,我分配的是4K的。以上就是我对于这个mbedtls的研究过程,希望对您有所帮助。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-14 05:32 , Processed in 0.247934 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表