ESP-AT SSL 单向认证指令操作以及问题分析
本篇文章主要是介绍客户端认证服务器的 AT 指令操作以及问题分析。
1 SSL 认证涉及到的指令介绍
1.1 AT+SYSFLASH
查询或读写 flash 用户分区
通过查询 ESP-AT 指南,如下:
- 查询指令
AT+SYSFLASH?
- 读写指令
AT+SYSFLASH=<operation>,<partition>,<offset>,<length>
1.2 AT+CIPSSLCCONF
查询/设置 SSL 客户端配置
通过查询 ESP-AT 指南,如下:
- 查询指令
AT+CIPSSLCCONF?
- 单连接读写指令
AT+CIPSSLCCONF=<auth_mode>[,<pki_number>][,<ca_number>]
- 多连接读写指令
AT+CIPSSLCCONF=<linkID>,<auth_mode>[,<pki_number>][,<ca_number>]
2 客户端认证服务器 AT 指令操作步骤
2.1 生成证书 bin
具体操作可以参考 generate-pki-bin。
2.2 将 CA 证书更新到 flash
指令如下:
AT+SYSFLASH=0,"client_ca",0,4096
AT+SYSFLASH=1,"client_ca",0,1424
操作步骤参考下图,加载完证书之后,点击发送文件返回 OK ,就表示更新证书成功了。
补充说明:
1. client_ca 是自己做客户端 (AT+CIPSTART=…) 用的,用来校验服务器传过来的证书。
2. server_ca 是自己做服务器 (AT+CIPSERVER=1) 用的,用来校验连接到服务器上的客户端,传过来的证书。
3. 擦除分区的时候需要保持 4 字节对齐,写分区输入实际的大小即可,例如上面证书中 at_ca.bin 是 1.4 KB, 算下来是 1433.6 byte。
2.3 SSL 认证操作
对应操作 log 如下:
AT+CWMODE=1
OK
AT+CWJAP="iot",""
WIFI DISCONNECT
WIFI CONNECTED
WIFI GOT IP
OK
AT+CIPSNTPCFG=1,8,"cn.ntp.org.cn","ntp.sjtu.edu.cn"OK
AT+CIPSSLCCONF=2,0,0OK
AT+CIPSTART="SSL","192.168.3.129",8739
CONNECTOK
CLOSED
3 常见问题以及排查方向
3.1 本地搭建的 ssl server 服务器,测试单向认证(服务器端)发现连接失败
本地服务器的配置如下:
UART1 端 AT 测试指令 & log 如下:
AT+CWMODE=1
OK
AT+CWJAP="iot",""
WIFI CONNECTED
WIFI GOT IP
OK
AT+CIPSSLCCONF=2,0,0 //配置单向连接
OK
AT+CIPSTART="SSL","192.168.3.129",8739
ERROR
UART0 端 log 如下:
max tx power=78,ret=0
BLUFI BLE is not connected yet
ca_len=1164
set ca ok
[0;31mE (165183) esp-tls: mbedtls_ssl_handshake returned -0x2700[0m
[0;31mE (165184) esp-tls: Failed to open new connection[0m
ssl failed
ssl create 0 socket fail
从 log 信息中可以看到 -0x2700 表示服务器端的证书验证失败了。此时的排查方向为:
先确认服务器和证书是没有问题的,从服务器端获取到 CA 证书,通过 openssl 指令验证。指令为
openssl s_client -host 192.168.3.129 -port 8739 -CAfile at_server_ca/rsa-ca.crt -verify 1
确认服务器没有问题后,查看操作步骤是否正确。从 log 信息中,我们可以看到并未生成新的证书 bin ,也并未加载新的证书 bin。将 CA 证书更新到 Flash 中, 指令如下:
AT+SYSFLASH=0,"client_ca",0,4096
AT+SYSFLASH=1,"client_ca",0,1424
还需要注意在认证之前加上
AT+CIPSNTPCFG=1,8,"cn.ntp.org.cn","ntp.sjtu.edu.cn"
这条指令,因为SSL 认证连接需要校验服务器端的证书,所以需要连接 sntp 来获取当前时间,用来判断证书是否过期如果以上步骤均正确, ssl 连接依然失败,就需要通过抓包进一步查看了。可参考 Wireshark 抓包指南。
ESP-AT SSL 单向认证指令操作以及问题分析相关推荐
- SSL双向认证和SSL单向认证的区别
双向认证 SSL 协议要求服务器和用户双方都有证书.单向认证 SSL 协议不需要客户拥有CA证书,具体的过程相对于上面的步骤,只需将服务器端验证客户证书的过程去掉,以及在协商对称密码方案,对称通话密钥 ...
- SSL双向认证和SSL单向认证的流程和区别
refs: SSL双向认证和SSL单向认证的区别 https://www.jianshu.com/p/fb5fe0165ef2 图解 https 单向认证和双向认证! https://cloud.te ...
- SSL单向认证和双向认证交互流程
一.Http HyperText Transfer Protocol,超文本传输协议,是互联网上使用最广泛的一种协议,所有WWW文件必须遵循的标准.HTTP协议传输的数据都是未加密的,也就是明文 ...
- SSL认证:单向认证与双向认证——密码学笔记(八)
SSL协议即用到了对称加密也用到了非对称加密(公钥加密),在建立传输链路时,SSL首先对对称加密的密钥使用非对称加密,链路建立好之后,SSL对传输内容使用对称加密. 对称加密:速度高,可加密内容较大, ...
- 什么是SSL双向认证,与单向认证证书有什么区别?
SSL/TLS 证书是用于用户浏览器和网站服务器之间的数据传输加密,实现互联网传输安全保护,大多数情况下指的是服务器证书.服务器证书是用于向浏览器客户端验证服务器,这种是属于单向认证的SSL证书.但是 ...
- 超详细的Asp.net使用SSL双向认证,一篇就够了
传统:项目和项目之间https仅通过SSL单向认证后进行数据传输: 本文:项目和项目之间做到SSL双向认证,防止攻击者恶意破坏: 关于单向认证和双向认证的区别:https://cloud.tencen ...
- ssl单向tomcat配置webservice访问方法
tomcat 配置 单向 SSL <Connector port="8443" protocol="org.apache.coyote.http11.Http11P ...
- 服务器双向认证 原理,什么叫SSL双向认证 SSL双向认证过程是怎样的
我们都知道SSL认证能够分成SSL双向认证和SSL单向认证.那么,什么是SSL双向认证?SSL双向认证过程又是怎样的?小编就在接下来的内容为各位详细讲述. 什么叫SSL双向认证 SSL双向认证则是需要 ...
- 【ssl认证、证书】SSL双向认证java实战、keytool创建证书
文章目录 概述 keytool示例 参考 相关文章: //-----------Java SSL begin---------------------- [ssl认证.证书]SSL双向认证和SSL单向 ...
- SSL证书配置(https访问接口, 单向认证和双向认证)
拿到SSL证书后, 如何才能解锁更多玩法? 一. SpringBoots项目配置https访问接口(直接配置) SSL协议 配置步骤 1. 获取证书/ 生成证书 2. 放置证书 3. 配置项目 pro ...
最新文章
- android 光晕动画,Android去掉SrollView、GrdiView、RecycleView、ViewPager等可滑动控件滑动到边缘的光晕效果...
- php计算时间顺延3分,PHP关于strtotime函数的大坑
- 墨客原型系统——随笔分享APP
- C\C++ 获取当前路径
- Net需要掌握的知识
- JdbcTemplate 的使用
- 利用python暴力破解rar压缩文件密码
- php微信消息通知,php实现微信小程序消息通知
- 力扣(SQL)584. 寻找用户推荐人
- 8.线性回归之非线性回归
- html div虚线背景,聊聊css绘制虚线
- 总有人问我:独立站该怎么玩?3个案例,你看完就懂了
- 不要用PS啦,python+opencv代码给证件照换底色
- Mac的最新版本JDK下载失败的解决方法
- 时间管理-系统管理员
- Linux userdel 和 deluser 的区别
- python爬取陌生人的qq空间_Python爬取QQ空间好友说说并生成词云(超详细)
- python turtle绘图中角度坐标系的绝对零度方向是_python turtle绘图中角度坐标系的绝对零度方向是_程序员也有春天,母亲节用python画朵玫瑰送给妈妈......
- 跨时钟域同步-结绳法
- 小技巧,不积硅步无以至千里
热门文章
- X9C102PIZ数字电位器-中文
- TCP 协议有什么缺陷?
- mysql url 解析json数据_如何在MySQL中编写可以解析列中JSON数据的查...
- js人脸识别,tracker.js前端人脸识别框架
- 计算机怎么更改网络密码,该如何修改自家宽带帐号的密码?
- VS2005 SP1补丁下载与安装
- 202102 sqlplus command not found 注意切换用户
- Mcafee(麦咖啡)8.5i 使用设置图解
- 计算机操作系统(第二版)庞丽萍 杨富民 第一章	绪论课后答案
- Db4o数据库:快速入门