ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

002-STM32+W5500基本控制篇(阿里云物联网平台)-STM32+W5500使用MQTT+SSL(mbedtls)加密方式接入阿里云物联网平台

2022-02-07 22:32:04  阅读:307  来源: 互联网

标签:加密 函数 W5500 TCP STM32 SSL mbedtls 云物 服务器


<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/aliyun.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>

<iframe frameborder="0" height="1500" name="ifd" scrolling="auto" src="https://mnifdv.cn/resource/cnblogs/STM32W5500AIR202A/aliyun.html" width="100%"></iframe>

说明

在网络通信中,如果不加上SSL,那么信息就以明文的方式暴露在网络通信中

这节移植mbedtls库,让W5500以SSL方式连接MQTT服务器.

 

首先简单说明一下SSL, 实际上呢整个的就是TCP和服务器通信,

只不过TCP连接上服务器之后先和服务器协商好加密方式和加密密码,

然后数据进行加密传递;

 

测试

1.打开本节代码

 

2.修改为自己的阿里云设备信息

 

 

3.下载到单片机(接上网线)

 

 

4.观察日志打印口,确定连接了服务器

 

 

 

程序说明

1,为便于使用mbedtls的SSL功能,我封装了下

 

 

2.先说几个自己需要实现的函数,mbedtls底层会调用这些函数

随机数函数和返回时间戳函数(不验证证书时间的话用不到)

 

 

 

网络接收处理函数(mbedtls底层会自动调用这个函数)

SSL的底层获取数据的方式是指明需要多少个数据,然后咱再返回多少个数据.

所以我把数据接收以后存储到了环形队列, 然后SSL要多少我就给多少.

 

 

 

 

网络发送函数(mbedtls底层会自动调用这个函数)

 

 

 

3.使用SSL发送数据函数和从SSL里面取数据函数

其实这两个函数咱可以直接用,不过我为了方便调用就套了一层函数;

完成了ssl协商以后, 咱发送的数据需要调用mbedtls提供的函数, 

内部会把咱的数据加密以后再通过TCP发送出去; 

同理TCP接收的数据咱也需要使用mbedtls提供的函数里面获取数据;

 

  

4. SSL初始化

最后两个底下画红线的函数就是咱上面写的tcp发送数据函数和tcp接收数据函数

 

 

 

5.等待SSL握手完成

这个函数在咱TCP连接成功以后需要轮训调用, 这个函数内部自动实现的SSL, 只要完成了SSL, 便会返回0

 

 

 

现在看具体使用的

1.连接TCP以后轮训等待SSL成功

 

 

2.成功以后发送连接MQTT协议

注意哈, 阿里云规定,如果使用SSL连接的, 需要把mqtt的client_id的参数 securemode=2

 

 

 

 

 

 

3.从SSL里面获取数据

 

 

4.当然那个MQTT底层发送数据的地方也改为使用SSL发送

 

 

结语

其实实际上还是TCP通信,只不过明文数据经过了加密;

TCP连接上以后,和服务器协商加密方式和密码都是使用mbedtls内部实现的,

协商好以后咱就就正常发送和接收数据就可以, 只不过中间通过mbedtls内部函数而已;

 

 

标签:加密,函数,W5500,TCP,STM32,SSL,mbedtls,云物,服务器
来源: https://www.cnblogs.com/yangfengwu/p/15869618.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有