带SSL证书双向验证功能的HTTPS过程:
先看流程:
……… OK ……表示HTTP数据
AT+HTTPTERM 结束HTTP服务
OK
AT+FSCREATE="ca.crt" 创建服务器端CA 证书文件
OK
AT+FSCREATE="client.crt" 创建客户端证书文件
OK
AT+FSCREATE="client.key" 创建客户端密钥文件
OK
AT+FSWRITE="ca.crt",0,1024,15 文件长度1024字节只是举例,要根据实际填写。下同。
> 这里输入CA证书文件
OK
AT+FSWRITE="client.crt",0,128,10
> 这里输入客户端证书文件
OK
AT+FSWRITE="client.key",0,188,10
> 这里输入客户端密钥文件
OK
AT+SAPBR=3,1,"CONTYPE","GPRS"
OK
AT+SAPBR=3,1,"APN","" 设置PDP承载之APN参数 模块注册网络后会从网络自动获取<apn>并激活一个 PDP上下文,用于RNDIS上网使用(此<apn>可以通 过AT+CGDCONT?来查询),所以输入 AT+SAPBR=3,<cid>,"APN","" 即可,模块内部会按 照自动获取的<apn>来设置APN
OK
AT+SAPBR=1,1
OK
AT+SAPBR=2,1
+SAPBR: 1,1,010.169.179.213 OK
AT+SSLCFG="cacert",153,"ca.crt" 设置服务器CA 证书 SSL 上下文id,在TCP单链接的情况下缺省为0; 在HTTPS链接下为153,下同
OK
AT+SSLCFG="clientcert",153,"client.crt" 设置客户端证书
OK
AT+SSLCFG="clientkey",153,"client.key" 设置客户端KEY
OK
AT+SSLCFG="seclevel",153,2 设置安全等级
OK
AT+SSLCFG="ciphersuite",153,0X0035 设置加密套件
OK
AT+SSLCFG="clientrandom",153,01B12C31 41516171F5125652655546548293031 323334353637D 设置随机数
OK
AT+HTTPINIT HTTP协议栈初始化
OK
AT+HTTPPARA="CID",1 设置HTTP会话参数:CID
OK
AT+HTTPPARA="URL","https://**.***.***" 设置HTTP会话参数:URL 请写具体的网址,而不要照抄
OK
AT+HTTPACTION=0 GET 开始
OK
+HTTPACTION:0,200,1348 +HTTPACTION:0,200,1348 +HTTPACTION:0,200,1348 … … 出现这些URC上报表明GET数据成功,等待READ
AT+HTTPREAD 读取从HTTP 服务器GET的数据
+HTTPREAD:1592 ……………… OK …..表示HTTP数据
AT+HTTPTERM 结束HTTP服务
OK
常见问题 :
1、HTTP支持多连接吗
目前HTTP仅支持单连接,不支持多连接
2、HTTPS如何使用
本文主要描述了基本流程和异常处理,对于HTTPS使用方法没有做过多描述,这一部分,请自行参考AT手册HTTP章节下《使用方法举例》中的"带SSL证书验证功能的HTTPS流程"使用方法;支持的SSL参数,请自行参考AT+SSLCFG命令说明
如果SSL的参数配置不变,则每次开机运行过程中,仅设置一次即可
3、重试多次PDP,HTTP应用一直连接失败
如果重试多次PDP激活,PDP一直激活失败,或者HTTP一直请求应答失败,则尝试使用如下手段恢复:
1、使用RESET引脚复位模块
2、极端情况下,直接给模块断电,再上电,POWER KEY引脚拉低开机
4、HTTP如何下载大文件(断点续传)
在实际的应用场景中,可能需要下载一个非常大的文件,例如几百K字节、几M字节,但是4G模块中HTTP可用的内存缓冲区为300KB左右,当文件大小超过这个缓冲区时,就要使用断点续传功能来分段下载处理了。下面以“下载一个11975260字节的文件”为例,来说明如何使用断点续传功能(注意:本示例仅仅演示了正常流程的HTTP AT命令,完整流程以及异常处理流程请参考本文应用流程部分)
AT+HTTPINIT OK AT+HTTPPARA="URL","http://openluat-erp.oss-cn-hangzhou.aliyuncs.com/erp_site_file/product_file/sw_file_20230108162920\\wb.zip" OK AT+HTTPACTION=2 OK +HTTPACTION: 2,200,0 AT+HTTPHEAD +HTTPHEAD: 454 server: aliyunoss date: thu, 16 jan 2023 06:50:58 gmt content-type: application/zip content-length: 11975260 //此处的11975260表示文件总大小 connection: keep-alive x-oss-request-id: 5e2007gfjd5hbe32353a92ae accept-ranges: bytes etag: "a5b9cc75c0f26413bbaf00a0fa952bb2" last-modified: wed, 08 jan 2023 08:29:29 zhb x-oss-object-type: normal x-oss-hash-crc64ecma: 16925rger3319613 x-oss-storage-class: standard content-md5: pbnmdcfgndfnf45gwcg+pursg== x-oss-server-time: 111 OK //如下指令,表示下载文件的第一个300KB数据 AT+HTTPPARA="BREAK",0 OK AT+HTTPPARA="BREAKEND",307199 OK AT+HTTPACTION=0 OK +HTTPACTION: 0,206,307200 AT+HTTPREAD +HTTPREAD: 307200 ...... //此处输出307200字节数据 OK //表示下载文件的第一个300KB数据完成 //如下指令,表示下载文件的第二个300KB数据 AT+HTTPPARA="BREAK",307200 OK AT+HTTPPARA="BREAKEND",614399 OK AT+HTTPACTION=0 OK +HTTPACTION: 0,206,307200 AT+HTTPREAD +HTTPREAD: 307200 ...... //此处输出307200字节数据 OK //表示下载文件的第二个300KB数据完成 //此处参考上文指令,一直循环读取文件的下一个300KB数据,直到读取结束 ...... AT+HTTPTERM OK
5、HTTP下载的大文件如何可靠的发送给MCU(AT流控)
在上面第四个问题指令里加入下面一段AT指令中,如下一段AT指令
AT+HTTPREAD
+HTTPREAD: 307200
...... //此处输出307200字节数据
OK
详细参考官方AT手册指令:
![]()