乐鑫Esp32学习之旅30 对接华为IoT物联网平台适配踩坑,使用ESP-IDF 编程使用HTTPS请求固件跳过证书校验,实现OTA远程升级文件。(附带源码)

2023-05-16


  • 本系列博客学习由非官方人员 半颗心脏 潜心所力所写,仅仅做个人技术交流分享,不做任何商业用途。如有不对之处,请留言,本人及时更改。

系列一:ESP32系列模组基础学习系列笔记

1、 爬坑学习新旅程,虚拟机搭建esp32开发环境,打印 “Hellow World”。
2、 巧用eclipes编辑器,官方教程在在Windows下搭建esp32开发环境,打印 “Hellow World”。
3、 认识基本esp32的GPIO接口,开始点亮您的第一盏 LED和中断回调实现按键功能 。
4、体会esp32的强大的定时器功能, 实现定时2s闪烁一盏LED灯。
5、接触实践esp32的pwm宽度脉冲功能, 实现呼吸效果闪烁一盏LED灯。
6、smartConfig和微信airKiss在esp32的实现,一键配网轻松快捷连接路由器。
7、利用GPIO中断做一个按键的短按和长按的回调事件,再也无须担心触发源。
8、esp32上实现本地 UDP 客户端和服务端角色,在局域网内实现通讯。
9、esp32上实现本地 TCP 客户端和服务端角色,可断线重连原路返回数据。
10、乐鑫esp32 SDK编程利用rmt驱动ws2812七彩灯,实现彩虹渐变效果。
11、入门 乐鑫esp-adf 音频框架开发,esp32造一个蓝牙耳机,实现切换歌曲,获取歌曲信息等功能。
12、开源一个微信公众号airkiss配网esp32以及局域网发现功能的工程,分享一个airkiss配网小工具。
13、esp32 内置 dns 服务器,无需外网访问域名返回指定网页。
14、esp32 sdk编程实现门户强制认证,连接esp32热点之后,自动强制弹出指定的登录界面。
15、认识本地离线语音唤醒识别框架 esp-skainet ,实现较低成本的硬件语音本地识别控制。
16、学习本地语音唤醒离线识别框架 esp-skainet ,如何修改唤醒词? 如何自定义命令词?如何做意图动作?
17、全网首发,乐鑫esp32 sdk直连京东微联·小京鱼 · IoT开放平台,实现叮咚音响语音智能控制。
18、入门京东微联·小京鱼的控制面板H5开发,读懂vue语法,做自己的控制页面。
19、重磅开源,如何在微信小程序上ble蓝牙配网esp32,blufi的那些事!
20、一篇好文,开发过程中编译esp32固件太大,无法正常启动?教你如何自定义分区表partitions.csv。
21、 esp32蓝牙配网blufi的高度封装,集成简单、使用简单、容易上手,提高开发效率!
22、讨论下程序员 “青春饭” 那些事,分享在esp32实现多种加密算法md5 |AES CBC-ECB| Sha1 | Sha256 等!
23、安信可 esp32-a1s 音频开发板移植最新 esp-adf 音频框架,小试牛刀如何实现在线文字转语音播放。
25、分享在 esp32 SDK实现冷暖光色温平滑调节的封装,轻松集成到您的项目去。
26、分享下如何在window下使用CMake编译,编译速度提高传统 make 编译一个档次,支持 ESP32 和 ESP32-C3。
27、windows10平台下自带的Linux安装 ESP8266/ESP32 环境,再无需额外安装虚拟机了。
28、熟悉自定义分区表 partition,拉取阿里云对象存储的单片机/图片等较大文件保存在特定的存储位置,并读取出来做完整性校验。
29、安信可Wi-Fi模组对接华为云物联网平台的指南。
30、对接华为IoT物联网平台适配踩坑,使用ESP-IDF 编程使用HTTPS请求固件跳过证书校验,实现OTA远程升级文件。

系列二:ESP32-Camera 摄像头开发板系列笔记

1、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现MQTT远程拍照传输到私有服务器。
2、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,实现本地视频流监控。
3、安信可 ESP32-Cam 摄像头开发板二次开发 C SDK编程,拍照图片通过有线串口传到上位机PC端。

系列三:ESP32-C3 模组系列笔记

1、【蓝牙Mesh笔记 ①】ESP32-C3 模组上实现天猫精灵蓝牙 BLE Mesh AliGenie 接入,无需WiFi 连接也可以实现天猫精灵语音控制。

系列四:ESP32-S3 模组系列笔记

1、安信可 ESP32-S3 模组上驱动摄像头 OV2640,实现远程拍照并 HTTP 传输到阿里云对象存储OSS,并显示在微信小程序上。。

系列四:ESP32模组系列笔记 LVGL LittlevGL

1、【LittlevGL ESP32 学习笔记 ①】移植最新的 LVGL 到安信可ESP32\C3模组,显示一个二维码。


文章目录

  • 一、前言
  • 二、选择的框架?
  • 三、如何使用
    • 如何使用此Demo
    • API 说明
  • 五、常见问题 FAQ
      • 1. 如何替换证书?
      • 2. 如何支持HTTPS连接,但不做证书校验?
    • 另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

一、前言

最近有需求要对接华为云物联网平台,所以准备做成一套SDK给大家使用,在遇到这么一个场景,在开发最后阶段的OTA升级时候,发现需要跳过SSL校验,我本着很纳闷的心态在思考:华为也不缺人力物力啊,一个域名+证书都无法确定下来?还是用的人太少了,所以没怎么注意这块的体验?

下面是对话截图,记录与2022.3.1,截至今天 2022.4.3 发文,仍然未解决此问题。
在这里插入图片描述


不可厚非的是,在一些开发场景中,由于域名证书频繁更高,或者证书过期,需要更换证书,但是由于还未来得及更新证书,导致本地校验证书失败,所以,我们须在单向认证时候,不做证书校验,那么我们应该如何做呢?

只能跳过证书校验呗!


二、选择的框架?

既然需要跳过校验SSL,那么我选择 mbedtls 加密库,因为这个库是开源的,资料也很多,自己也熟悉。OTA升级的话,干脆选择例程自带的吧。

mbedtls 在发起校验请求时候,我们只要把这个数值设置为 MBEDTLS_SSL_VERIFY_NONE 即可,表示不校验。

#define MBEDTLS_SSL_VERIFY_NONE       0     // 不校验SSL
#define MBEDTLS_SSL_VERIFY_OPTIONAL     1     // 校验SSL,在 mbedtls_ssl_get_verify_result 提示结果让用户自行选择是否继续请求网址
#define MBEDTLS_SSL_VERIFY_REQUIRED     2     // 必须校验SSL

mbedtls_ssl_conf_authmode(&conf, MBEDTLS_SSL_VERIFY_NONE);

三、如何使用

为了学习笔记,以及后续可能会继续用到这样的场景,于是乎,我就封装了一下,也分享给大家使用,源码获取见最后。依赖的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, // 校验证书并给出结果,由用户决定是否继续请求
        OTA_CERT_SSL_VERIFY_REQUIRED, // 校验证书并给出结果,必须证书通过才继续请求
    } 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; //是否跳过证书认证,仅当 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 里面内容即可。

2. 如何支持HTTPS连接,但不做证书校验?

参数开始时候,请把 cert_set 设置为 OTA_CERT_SSL_VERIFY_OPTIONAL ,把 skip_ssl_cert_set设置为 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物联网平台 esp-idf 源码:https://blog.csdn.net/xh870189248/article/details/123777199


另外,不要把我的博客作为学习标准,我的只是笔记,难有疏忽之处,如果有,请指出来,也欢迎留言哈!

  • 玩转无线物联网带你飞、加千人群讨论,群里众多国内ESP开发者,找到你一份归属,免费白嫖。
  • QQ讨论一群,点击加群:434878850
  • QQ讨论二群,点击加群:623325168
  • 个人微信公众号:徐宏blog , 不定时推送干货文章,不推送任何广告。
  • 个人邮箱:xuhongv@yeah.net 24小时在线,有发必回复!
  • esp8266源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp8266
  • esp32源代码学习汇总(持续更新,欢迎star):https://github.com/xuhongv/StudyInEsp32
  • 关注下面微信公众号二维码,干货多多,第一时间推送!

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

乐鑫Esp32学习之旅30 对接华为IoT物联网平台适配踩坑,使用ESP-IDF 编程使用HTTPS请求固件跳过证书校验,实现OTA远程升级文件。(附带源码) 的相关文章

  • Unable to determine the device handle for GPU. GPU is lost. Reboot the system to recover this GPU.

    最近服务器跑程序的时候经常出现GPU lost的情况 xff0c 报错信息如下 xff1a Unable to determine the device handle span class token keyword for span GP
  • 安装matlab的R2017b或者R2018a版本注意事项

    如果我们目前使用的是win10系统 xff0c 并且正确地按照网上安装并激活matlab的R2017b或者R2018a版本 xff0c 但是运行matlab时仍然会报错的情况 xff0c 报错内容是License Manager Error
  • IP地址0.0.0.0表示什么

    声明 xff1a 尊重原创 xff0c 查看原文请点击 IP地址0 0 0 0表示什么 转发目的为了构建 计算机网络 专栏 xff0c 收集相关优秀文章 xff0c 并创建自己的文章 方便自己和他人系统的学习相关知识 xff0c 感谢原文
  • Android群英传——第九章packages.xml的作用

    Android系统在初始化时 xff0c PackageManager的底层实现类PackageManagerService 回去扫描系统的 data system 目录下的packages xml文件 xff0c 这个文件包含了所有的ap
  • 百思不得姐之图片处理(保存与下载)

    一 功能图 二 讲解思路 1 回顾上一篇内容 2 创建加载图片类 同时创建xib 3 点击图片查看大图 4 点击查看大图 查看长图 5 model出展示图片的控制器 6 保存图片 7 封装根据网络状态展示不同的图片 三 回顾上一篇内容 1
  • 路由器电路(高清图)

    路由器正面 路由器背面
  • 技术4面+HR面,花了一个半月的时间准备,终于上岸阿里测开岗

    这次阿里的面试 xff0c 给我的感触很深 xff0c 意识到基础的重要性 一共经历了五轮面试 xff1a 技术4面 xff0b HR面 下面看正文 本人自动化专业毕业 xff0c 压抑了五个多月 xff0c 终于鼓起勇气 xff0c 去阿
  • 5个实用的性能测试工具(软件测试工程师必备)

    在日常的软件测试工作中 xff0c 最常用的性能测试工具是LoadRunner和Jmeter 今天给大家整理了5个针对web应用程序性能和负载压力能力的最广泛使用的性能测试工具 这几个负载测试工具将确保应用程序在高峰流量和极端压力条件下的性
  • 4个强大JavaScript运算符

    作者 Anthony Jimenez 译者 吴留坡 策划 田晓旭 来源 前端之巅 今天我们学习新的 JS 运算符 xff01 你有没有花一个下午的时间阅读 Mozilla 文档 xff1f 如果有 xff0c 你会发现网上有很多 JS 资料
  • 一些java开发代码规范心得

    1 equals方法规范 Object的equals方法容易抛空指针异常 xff0c 应使用常量或确定有值的对象来调用equals 正例 xff1a test equals object 反例 xff1a object equals tes
  • 8张Linux思维导图(定位自己能力、清楚学习方向)

    Linux学习路径 xff1a Linux桌面介绍 xff1a FHS 文件系统目录标准 以上三张图 xff0c 都是在学习实验楼上的课程 Linux 基础入门 xff0c 教程里面看到的 Linux需要特别注意的目录 这是在搜索的时候 x
  • Keil串口仿真调试

    用到的软件 Keil开发软件 虚拟串口软件 串口调试小助手 软件介绍 1 虚拟串口软件 对于笔记本电脑来说 xff0c 没有自带串口使用虚拟串口软件可以模拟真实的串口 程序可以利用虚拟串口与其他串口交换数据 Virtual Serial P
  • IEEE754详解(最详细简单有趣味的介绍)

    序言 xff1a 博主个人认为本系列文章是目前博主看过的介绍 IEEE754 xff0c 即浮点数的机器存储的最好的文章 它比白中英老师的 计算机组成原理 xff0c 在大学时计算机相关专业一般会使用的 绿皮书 xff0c 更加通俗易懂 x
  • 70_爬楼梯 滚动数组 动态规划 python

    题目搬运者 https leetcode cn com problems climbing stairs 思路 滚动数组 动态规划其实更像数学里面的找规律找公式 xff0c 数列吧 以前一直学不会动态规划的原因是一提起动态规划就觉得高大上
  • CutPaste Self-Supervised Learning for Anomaly Detection and Localization

    CutPaste Self Supervised Learning for Anomaly Detection and Localization 用于异常检测和定位的自监督学习 简洁版 问题 xff1a 异常的检测和定位 现有工作不足 xf
  • 1.Windows基础上安装Ubuntu20.04 双系统共存

    背景 服务器已安装Windows系统 在此基础上安装Ubuntu20 04 xff0c 实现双系统在本地电脑上远程访问Ubuntu20 04系统 xff0c 通过VNC操作Ubuntu20 04下载CUDA驱动在Ubuntu20 04安装A
  • 3. Ubuntu下载CUDA驱动

    背景 服务器已安装Windows系统 在此基础上安装Ubuntu20 04 xff0c 实现双系统在本地电脑上远程访问Ubuntu20 04系统 xff0c 通过VNC操作Ubuntu20 04下载CUDA驱动在Ubuntu20 04安装A
  • 4. 在Ubuntu20.04安装Anaconda Pytorch Pycharm

    文章目录 背景安装Anaconda安装Pytorch安装pycharmpytorch中使用conda创建pytorch虚拟环境 背景 服务器已安装Windows系统 在此基础上安装Ubuntu20 04 xff0c 实现双系统在本地电脑上远
  • 5. 本地Pycharm 专业版通过 SSH 连接远程服务器的Pytorch虚拟环境

    背景 服务器已安装Windows系统 在此基础上安装Ubuntu20 04 xff0c 实现双系统在本地电脑上远程访问Ubuntu20 04系统 xff0c 通过VNC操作Ubuntu20 04下载CUDA驱动在Ubuntu20 04安装A
  • PointAugmenting Cross-Modal Augmentation for 3D Object Detection

    文章目录 摘要Introductionparagraph1paragraph2 5paragraph6 相关工作PointAugmentingCross Modal FusionPoint wise Feature Fetching 逐点特

随机推荐