You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用HttpsOTAUpdate从GCS下载ESP32固件时如何获取正确的TLS证书

GCS HTTPS OTA 证书错误解决方法

错误根因

你当前使用的Let's Encrypt X3根证书已于2021年正式过期,TLS握手时触发证书校验失败,所以返回mbedtls_ssl_handshake returned -0x2700错误。

获取GCS有效根证书的操作步骤

  • 通过openssl命令导出当前有效的GCS根证书
    1. 打开本地电脑的终端工具,执行命令:openssl s_client -showcerts -connect storage.googleapis.com:443 </dev/null
    2. 在返回的输出内容末尾,找到最后一段从-----BEGIN CERTIFICATE-----到-----END CERTIFICATE-----的内容,这就是GCS所用的根证书
    3. 将这段内容替换代码中server_certificate变量的内容,注意每一行末尾添加\n转义符,字符串拼接格式和原代码保持一致即可。

必做校验项

TLS证书校验依赖系统时间,必须先同步ESP32的本地时间,否则即便证书正确也会校验失败。你可以在WiFi连接成功后、启动OTA之前添加NTP时间同步代码,示例如下:

// 东八区时间,可根据自己所在时区调整偏移
configTime(8 * 3600, 0, "pool.ntp.org", "cn.ntp.org.cn");
struct tm timeinfo;
// 等待时间同步完成
while (!getLocalTime(&timeinfo)) {
  Serial.println("等待NTP时间同步...");
  delay(1000);
}
Serial.printf("同步后时间: %d-%02d-%02d %02d:%02d:%02d\n", 
              timeinfo.tm_year + 1900, timeinfo.tm_mon + 1, timeinfo.tm_mday,
              timeinfo.tm_hour, timeinfo.tm_min, timeinfo.tm_sec);

完成以上操作后重新编译烧录即可正常完成OTA握手。

内容的提问来源于stack exchange,提问作者Nico

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 10:24:04