102-STM32+BC26/260Y基本控制篇-加密通信-Android和BC26以SSL单向认证方式连接MQTT服务器(不验证服务器证书)
<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,数据长度\r\n
然后等待模组返回 >
最后通过串口发送数据
4.SSL连接MQTT服务器相关
打包MQTT连接协议数据并发送 AT+QSSLSEND=1,5,数据长度\r\n
返回 > 发送真实数据
5.正常发送数据先发送 AT+QSSLSEND=1,5,%d\r\n 然后再发送数据
注:发送完 AT+QSSLSEND 设置了等待返回超时时间,目的是等待返回 >
在串口里面收到 > 会清零超时,就能立即发送数据
模块返回 > 清零超时.
注意:发送完真实数据以后没有清零发送超时变量,而是设置了延迟时间为100ms.
因为单片机把数据发送给模组以后模组大概需要60多ms才会真正的发出去.
如果不等待一会直接再给模组发送数据,模组会报错!最后导致掉线.
注:以上设置的时间不会对主循环造成影响,只是控制了从缓存里面提取数据的时间.
6.SSL指令,接收数据的指令有些不一样,修改了下.
7.测试