002-STM32+ESP8266+Air302基本控制篇(阿里云物联网平台)-STM32+Air302+mbedtls使用SSL加密方式接入阿里云物联网平台
<p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ESA2GJK1DH1K_A/aly.html" frameborder="0" scrolling="auto" width="100%" height="1500"></iframe></p>
说明
阿里云的TCP和TCP+SSL方式连接MQTT服务器使用的端口号都是 1883;
如果使用SSL连接, 拼接的ClientID参数时 securemode=2
在网络通信中,如果不加上SSL,那么信息就以明文的方式暴露在网络通信中
这节移植上mbedtls库,让设备以SSL方式连接MQTT服务器.
首先简单说明一下SSL, 实际上呢整个的就是TCP和服务器通信,
只不过TCP连接上服务器之后先和服务器协商好加密方式和加密密码,
当然协商什么的mbedtls库自己就完成了, 然后咱调用其接口发送和接收数据就可以了;
其实通信是下面的样子:
发送的数据 ----> 经过mbedtls库加密 ---> 通过模组使用TCP发送给服务器
服务器下发的TCP数据 ---> 经过mbedtls库解密 ---> 获得真实数据
测试
1.打开本节代码
2.修改自己的阿里云设备信息
3.编译下载程序, 观察日志打印口(日志都是加密的数据,就大体说一下)
程序说明
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
现在看具体使用的
提示: MQTT部分就不多说了, 只说明一下SSL部分,
和前面的不带SSL的程序相比,发送和接收数据中间是使用的mbedtls内部的函数.
1,控制模块连接TCP服务器
2.连接TCP以后,初始化下SSL, 然后等待SSL协商成功
2.成功以后发送连接MQTT协议
3.从SSL里面获取数据
4.当然那个MQTT底层发送数据的地方也改为使用SSL发送
结语
其实实际上还是TCP通信,只不过中间经过了mbedtls函数;
明文数据只是经过了加密;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2021-04-04 001-STM32+Air724UG基本控制篇(阿里云物联网平台)-C#,网页,android,微信小程序,单片机等使用MQTT接入阿里云物联网平台
2021-04-04 601-STM32+Air724UG基本控制篇(自建物联网平台)-功能扩展-关于网络上mqtt.js 和 mqtt.min.js 微信小程序包的使用
2021-04-04 503-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植微信小程序MQTT底层包到自己的工程项目
2021-04-04 502-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植AndroidMQTT底层包到自己的工程项目
2021-04-04 501-STM32+Air724UG基本控制篇(自建物联网平台)-移植使用-移植单片机MQTT底层包到自己的工程项目
2021-04-04 314-STM32+Air724UG基本控制篇(自建物联网平台)-加密通信测试-STM32+Air724以SSL单向认证方式连接MQTT服务器(验证服务器证书)