说明
在网络通信中,如果不加上SSL,那么信息就以明文的方式暴露在网络通信中
这节移植上mbedtls库,让设备以SSL方式连接MQTT服务器.
首先简单说明一下SSL, 实际上呢整个的就是TCP和服务器通信,
只不过TCP连接上服务器之后先和服务器协商好加密方式和加密密码,
当然协商什么的mbedtls库自己就完成了, 然后咱调用其接口发送和接收数据就可以了;
其实通信是下面的样子:
发送的数据 ----> 经过mbedtls库加密 ---> 通过模组使用TCP发送给服务器
服务器下发的TCP数据 ---> 经过mbedtls库解密 ---> 获得真实数据
测试
1.打开本节代码
2.默认连接本人的服务器测试(服务器端口为8883)
4.观察日志打印口(日志都是加密的数据,就大体说一下)
程序说明
1,为便于使用mbedtls的SSL功能,我封装了下
2.先说几个自己需要实现的函数,mbedtls底层会调用这些函数
随机数函数和返回时间戳函数(不验证证书时间的话用不到)
网络接收处理函数(mbedtls底层会自动调用这个函数)
SSL的底层获取数据的方式是指明需要多少个数据,然后咱再返回多少个数据.
所以我把数据接收以后存储到了环形队列, 然后SSL要多少我就给多少.