乐鑫Esp32学习之旅30 对接华为IoT物联网平台适配踩坑,使用ESP-IDF 编程使用HTTPS请求固件跳过证书校验,实现OTA远程升级文件。(附带源码)
- 本系列博客學(xué)習(xí)由非官方人員 半顆心臟 潛心所力所寫,僅僅做個人技術(shù)交流分享,不做任何商業(yè)用途。如有不對之處,請留言,本人及時更改。
系列一:ESP32系列模組基礎(chǔ)學(xué)習(xí)系列筆記
1、 爬坑學(xué)習(xí)新旅程,虛擬機(jī)搭建esp32開發(fā)環(huán)境,打印 “Hellow World”。
2、 巧用eclipes編輯器,官方教程在在Windows下搭建esp32開發(fā)環(huán)境,打印 “Hellow World”。
3、 認(rèn)識基本esp32的GPIO接口,開始點亮您的第一盞 LED和中斷回調(diào)實現(xiàn)按鍵功能 。
4、體會esp32的強(qiáng)大的定時器功能, 實現(xiàn)定時2s閃爍一盞LED燈。
5、接觸實踐esp32的pwm寬度脈沖功能, 實現(xiàn)呼吸效果閃爍一盞LED燈。
6、smartConfig和微信airKiss在esp32的實現(xiàn),一鍵配網(wǎng)輕松快捷連接路由器。
7、利用GPIO中斷做一個按鍵的短按和長按的回調(diào)事件,再也無須擔(dān)心觸發(fā)源。
8、esp32上實現(xiàn)本地 UDP 客戶端和服務(wù)端角色,在局域網(wǎng)內(nèi)實現(xiàn)通訊。
9、esp32上實現(xiàn)本地 TCP 客戶端和服務(wù)端角色,可斷線重連原路返回數(shù)據(jù)。
10、樂鑫esp32 SDK編程利用rmt驅(qū)動ws2812七彩燈,實現(xiàn)彩虹漸變效果。
11、入門 樂鑫esp-adf 音頻框架開發(fā),esp32造一個藍(lán)牙耳機(jī),實現(xiàn)切換歌曲,獲取歌曲信息等功能。
12、開源一個微信公眾號airkiss配網(wǎng)esp32以及局域網(wǎng)發(fā)現(xiàn)功能的工程,分享一個airkiss配網(wǎng)小工具。
13、esp32 內(nèi)置 dns 服務(wù)器,無需外網(wǎng)訪問域名返回指定網(wǎng)頁。
14、esp32 sdk編程實現(xiàn)門戶強(qiáng)制認(rèn)證,連接esp32熱點之后,自動強(qiáng)制彈出指定的登錄界面。
15、認(rèn)識本地離線語音喚醒識別框架 esp-skainet ,實現(xiàn)較低成本的硬件語音本地識別控制。
16、學(xué)習(xí)本地語音喚醒離線識別框架 esp-skainet ,如何修改喚醒詞? 如何自定義命令詞?如何做意圖動作?
17、全網(wǎng)首發(fā),樂鑫esp32 sdk直連京東微聯(lián)·小京魚 · IoT開放平臺,實現(xiàn)叮咚音響語音智能控制。
18、入門京東微聯(lián)·小京魚的控制面板H5開發(fā),讀懂vue語法,做自己的控制頁面。
19、重磅開源,如何在微信小程序上ble藍(lán)牙配網(wǎng)esp32,blufi的那些事!
20、一篇好文,開發(fā)過程中編譯esp32固件太大,無法正常啟動?教你如何自定義分區(qū)表partitions.csv。
21、 esp32藍(lán)牙配網(wǎng)blufi的高度封裝,集成簡單、使用簡單、容易上手,提高開發(fā)效率!
22、討論下程序員 “青春飯” 那些事,分享在esp32實現(xiàn)多種加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音頻開發(fā)板移植最新 esp-adf 音頻框架,小試牛刀如何實現(xiàn)在線文字轉(zhuǎn)語音播放。
25、分享在 esp32 SDK實現(xiàn)冷暖光色溫平滑調(diào)節(jié)的封裝,輕松集成到您的項目去。
26、分享下如何在window下使用CMake編譯,編譯速度提高傳統(tǒng) make 編譯一個檔次,支持 ESP32 和 ESP32-C3。
27、windows10平臺下自帶的Linux安裝 ESP8266/ESP32 環(huán)境,再無需額外安裝虛擬機(jī)了。
28、熟悉自定義分區(qū)表 partition,拉取阿里云對象存儲的單片機(jī)/圖片等較大文件保存在特定的存儲位置,并讀取出來做完整性校驗。
29、安信可Wi-Fi模組對接華為云物聯(lián)網(wǎng)平臺的指南。
30、對接華為IoT物聯(lián)網(wǎng)平臺適配踩坑,使用ESP-IDF 編程使用HTTPS請求固件跳過證書校驗,實現(xiàn)OTA遠(yuǎn)程升級文件。
系列二:ESP32-Camera 攝像頭開發(fā)板系列筆記
1、安信可 ESP32-Cam 攝像頭開發(fā)板二次開發(fā) C SDK編程,實現(xiàn)MQTT遠(yuǎn)程拍照傳輸?shù)剿接蟹?wù)器。
2、安信可 ESP32-Cam 攝像頭開發(fā)板二次開發(fā) C SDK編程,實現(xiàn)本地視頻流監(jiān)控。
3、安信可 ESP32-Cam 攝像頭開發(fā)板二次開發(fā) C SDK編程,拍照圖片通過有線串口傳到上位機(jī)PC端。
系列三:ESP32-C3 模組系列筆記
1、【藍(lán)牙Mesh筆記 ①】ESP32-C3 模組上實現(xiàn)天貓精靈藍(lán)牙 BLE Mesh AliGenie 接入,無需WiFi 連接也可以實現(xiàn)天貓精靈語音控制。
系列四:ESP32-S3 模組系列筆記
1、安信可 ESP32-S3 模組上驅(qū)動攝像頭 OV2640,實現(xiàn)遠(yuǎn)程拍照并 HTTP 傳輸?shù)桨⒗镌茖ο蟠鎯SS,并顯示在微信小程序上。。
系列四:ESP32模組系列筆記 LVGL LittlevGL
1、【LittlevGL ESP32 學(xué)習(xí)筆記 ①】移植最新的 LVGL 到安信可ESP32\C3模組,顯示一個二維碼。
文章目錄
- 一、前言
- 二、選擇的框架?
- 三、如何使用
- 如何使用此Demo
- API 說明
- 五、常見問題 FAQ
- 1. 如何替換證書?
- 2. 如何支持HTTPS連接,但不做證書校驗?
- 另外,不要把我的博客作為學(xué)習(xí)標(biāo)準(zhǔn),我的只是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!
一、前言
最近有需求要對接華為云物聯(lián)網(wǎng)平臺,所以準(zhǔn)備做成一套SDK給大家使用,在遇到這么一個場景,在開發(fā)最后階段的OTA升級時候,發(fā)現(xiàn)需要跳過SSL校驗,我本著很納悶的心態(tài)在思考:華為也不缺人力物力啊,一個域名+證書都無法確定下來?還是用的人太少了,所以沒怎么注意這塊的體驗?
下面是對話截圖,記錄與2022.3.1,截至今天 2022.4.3 發(fā)文,仍然未解決此問題。
不可厚非的是,在一些開發(fā)場景中,由于域名證書頻繁更高,或者證書過期,需要更換證書,但是由于還未來得及更新證書,導(dǎo)致本地校驗證書失敗,所以,我們須在單向認(rèn)證時候,不做證書校驗,那么我們應(yīng)該如何做呢?
只能跳過證書校驗唄!
二、選擇的框架?
既然需要跳過校驗SSL,那么我選擇 mbedtls 加密庫,因為這個庫是開源的,資料也很多,自己也熟悉。OTA升級的話,干脆選擇例程自帶的吧。
mbedtls 在發(fā)起校驗請求時候,我們只要把這個數(shù)值設(shè)置為 MBEDTLS_SSL_VERIFY_NONE 即可,表示不校驗。
#define MBEDTLS_SSL_VERIFY_NONE 0 // 不校驗SSL #define MBEDTLS_SSL_VERIFY_OPTIONAL 1 // 校驗SSL,在 mbedtls_ssl_get_verify_result 提示結(jié)果讓用戶自行選擇是否繼續(xù)請求網(wǎng)址 #define MBEDTLS_SSL_VERIFY_REQUIRED 2 // 必須校驗SSLmbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_NONE);三、如何使用
為了學(xué)習(xí)筆記,以及后續(xù)可能會繼續(xù)用到這樣的場景,于是乎,我就封裝了一下,也分享給大家使用,源碼獲取見最后。依賴的esp-idf 版本 v4.3 ,我使用的 commit 如下:
commit 8ffddf53bc9cb0c36d1949476e244b202f3b42d2 (origin/release/v4.3)如何使用此Demo
- 先配置路由器信息。
- 修改ota文件的URL,并且修改是否需要跳過證書。
- 支持證書校驗或證書不校驗。
API 說明
見注釋:
typedef enum{OTA_CERT_SSL_VERIFY_NONE = 0, // 不校驗證書,直接通過OTA_CERT_SSL_VERIFY_OPTIONAL, // 校驗證書并給出結(jié)果,由用戶決定是否繼續(xù)請求OTA_CERT_SSL_VERIFY_REQUIRED, // 校驗證書并給出結(jié)果,必須證書通過才繼續(xù)請求} ota_ssl_cert_verify_set_t;/*** @brief otas_http_client_config configuration*/typedef struct{const char *url;ota_ssl_cert_verify_set_t cert_set;bool skip_ssl_cert_set; //是否跳過證書認(rèn)證,僅當(dāng) ota_ssl_cert_verify_set_t 為 OTA_CERT_SSL_VERIFY_OPTIONAL有效int url_length;} otas_http_client_config;esp_err_t start_https_ota(const otas_http_client_config *config);五、常見問題 FAQ
1. 如何替換證書?
請把域名證書替換 https_ota\cert\server_root_cert.pem 里面內(nèi)容即可。
2. 如何支持HTTPS連接,但不做證書校驗?
參數(shù)開始時候,請把 cert_set 設(shè)置為 OTA_CERT_SSL_VERIFY_OPTIONAL ,把 skip_ssl_cert_set設(shè)置為 false 。
.cert_set = OTA_CERT_SSL_VERIFY_OPTIONAL,.skip_ssl_cert_set = false,本文章的源碼免費獲取:https://github.com/xuhongv/StudyInEsp32/tree/master/27_ota_https_skip_cert_option
ESP32/C3/S3對接華為云IoT物聯(lián)網(wǎng)平臺 esp-idf 源碼:https://blog.csdn.net/xh870189248/article/details/123777199
另外,不要把我的博客作為學(xué)習(xí)標(biāo)準(zhǔn),我的只是筆記,難有疏忽之處,如果有,請指出來,也歡迎留言哈!
- 玩轉(zhuǎn)無線物聯(lián)網(wǎng)帶你飛、加千人群討論,群里眾多國內(nèi)ESP開發(fā)者,找到你一份歸屬,免費白嫖。
- QQ討論一群,點擊加群:434878850
- QQ討論二群,點擊加群:623325168
- 個人微信公眾號:徐宏blog , 不定時推送干貨文章,不推送任何廣告。
- 個人郵箱:xuhongv@yeah.net 24小時在線,有發(fā)必回復(fù)!
- esp8266源代碼學(xué)習(xí)匯總(持續(xù)更新,歡迎star):https://github.com/xuhongv/StudyInEsp8266
- esp32源代碼學(xué)習(xí)匯總(持續(xù)更新,歡迎star):https://github.com/xuhongv/StudyInEsp32
- 關(guān)注下面微信公眾號二維碼,干貨多多,第一時間推送!
總結(jié)
以上是生活随笔為你收集整理的乐鑫Esp32学习之旅30 对接华为IoT物联网平台适配踩坑,使用ESP-IDF 编程使用HTTPS请求固件跳过证书校验,实现OTA远程升级文件。(附带源码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xvidcore.dll not fou
- 下一篇: 软件安装包制作工具installshie