安全与 TLS
ESP-TLS 如何跳过服务器证书校验?
在 ESP32 的 ESP-TLS 中,可以通过配置启用“跳过服务器证书校验”功能,用于测试阶段快速建立 HTTPS / WSS 连接。
在 menuconfig 中启用以下选项:
CONFIG_ESP_TLS_INSECURECONFIG_ESP_TLS_SKIP_SERVER_CERT_VERIFY

启用后,如果 esp_tls_cfg_t 中没有配置以下任一服务器验证方式,ESP-TLS 会自动跳过服务器证书验证:
cacert_bufuse_global_ca_storecrt_bundle_attach
参考代码:
esp_tls_cfg_t cfg = {
.cacert_buf = NULL,
.use_global_ca_store = false,
.crt_bundle_attach = NULL,
.timeout_ms = 10000,
};
安全风险说明:
- 无法验证服务器身份。
- 容易遭受中间人攻击(MITM)。
- 设备可能连接到伪造服务器。
- 数据可能被窃听或篡改。
注意事项:
- 该功能仅适用于测试环境。
- 不建议用于生产环境。
- 不应在公网或不可信网络中使用。
- 生产环境应优先使用 CA 证书或证书 bundle 进行验证。
ESP32-S3 Flash 加密中断后无法启动,如何判断原因并恢复?
原因分析:
该问题通常与以下两种情况有关:
- 烧录异常:供电不稳定等因素可能导致写入的固件异常,进而使 Flash 加密校验失败。即使未启用加密,烧录异常也可能导致设备无法启动。
- 加密过程中断电:固件烧录完成后,芯片还会执行 Flash 加密。若此时立即断电,加密流程可能中断并导致固件损坏,设备再次上电后无法正常启动。
如果 eFuse 中 “Enables flash encryption when 1 or 3 bits are set” 对应的标志位已改写为 “Enable R/W 0b001”,设备将不再接受明文固件。
解决方案:
能否恢复取决于 eFuse 位 DIS_DOWNLOAD_MANUAL_ENCRYPT 是否已禁用:
- 开发模式下,该位未禁用,可使用 esptool 的 --encrypt 参数重新烧录。芯片会在下载过程中使用内部密钥加密写入 Flash,主机无需获取密钥。
- 量产模式下,该位已永久禁用,设备只接受密文固件。若主机未保留密钥,则无法再次烧录,设备将无法恢复。
烧录命令如下:
esptool.exe --port COMx --baud 921600 --before default_reset --after hard_reset write_flash --flash_mode dio --flash_freq 80m --flash_size detect --encrypt 0x0 <固件路径>
补充说明:
DIS_DOWNLOAD_MANUAL_ENCRYPT 为 0 表示未禁止下载模式加密,为 1 表示已禁止,不能将位名中的 DIS 与“该位被禁用”混淆。上述恢复方法还要求 ROM 下载模式及相关下载功能可用。原稿中的“无法恢复”针对加密中断、设备已无法启动且主机未保留密钥的场景;能正常运行的加密设备仍可通过受支持的 OTA 流程更新固件。参考 ESP32-S3 Flash 加密官方说明。