102-STM32+BC26基本控制篇-加密通信-Android和单片机程序以SSL单向认证方式连接MQTT服务器(不验证或验证服务器证书)

2020-12-18 14:51:33 浏览数 (1)

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

说明

前面章节已经配置好了MQTT服务器SSL单向认证.

这节测试一下Android程序以SSL单向认证方式连接MQTT服务器

提示:所谓SSL单向认证通信,就是在客户端连接上TCP服务器以后

TCP服务器向客户端发送服务器的证书文件数据,然后客户端可以解析证书文件

也可以不解析证书文件,然后二者通过TCP通信再商议好对称加密通信的秘钥

最后二者TCP通信全部使用对称加密把数据加密再进行传输.

Android程序说明(不验证服务器证书)

默认提供的整体测试源码支持SSL(不验证服务器证书)

1.使用Android Studio打开整体运行测试里面的APP源码

注:需要把源码放到非中文目录才可以打开

2.只需要把端口号改为SSL的端口号,然后把useSSL设置为true即可

单片机程序说明(不验证服务器证书)

提示:详细请参考BC26资料里面的

1.打开这节的单片机程序

2.端口号改为了MQTT的SSL端口

3.提示

连接成功以后,如果要发数据,需要先通过串口发送

AT QSSLSEND=1,5,数据长度rn

然后等待模组返回 >

最后通过串口发送数据

4.SSL连接MQTT服务器相关

打包MQTT连接协议数据并发送 AT QSSLSEND=1,5,数据长度rn

返回 > 发送真实数据

5.正常发送数据先发送 AT QSSLSEND=1,5,%drn 然后再发送数据

注:发送完 AT QSSLSEND 设置了等待返回超时时间,目的是等待返回 >

在串口里面收到 > 会清零超时,就能立即发送数据

模块返回 > 清零超时.

注意:发送完真实数据以后没有清零发送超时变量,而是设置了延迟时间为100ms.

因为单片机把数据发送给模组以后模组大概需要60多ms才会真正的发出去.

如果不等待一会直接再给模组发送数据,模组会报错!最后导致掉线.

注:以上设置的时间不会对主循环造成影响,只是控制了从缓存里面提取数据的时间.

6.SSL指令,接收数据的指令有些不一样,修改了下.

7.测试

Android程序说明(验证服务器证书) - 暂无

单片机程序说明(验证服务器证书) - 暂无

0 人点赞