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 CLOSED3 常見問題以及排查方向
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 ERRORUART0 端 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 单向认证指令操作以及问题分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android简单的夜间模式
- 下一篇: centos7 通过kvm+vnc 实现