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

如何解决ESP32使用Twilio API时的ESP-TLS连接错误?

问题:ESP32通过Twilio API发送SMS时TLS连接失败

开发板可正常连接WiFi,但调用Twilio API发送SMS时出现以下TLS错误,无法建立连接:

E (30400) esp-tls-mbedtls: No server verification option set in esp_tls_cfg_t structure. Check esp_tls API reference
E (30400) esp-tls-mbedtls: Failed to set client configurations, returned [0x8017] (ESP_ERR_MBEDTLS_SSL_SETUP_FAILED)
E (30400) esp-tls-mbedtls: No server verification option set in esp_tls_cfg_t structure. Check esp_tls API reference
E (30420) esp-tls: create_ssl_handle failed
E (30430) esp-tls: Failed to open new connection

E (30480) HTTP_CLIENT: Connection failed, sock < 0

已在sdkconfig中设置Allow potentially insecure options和Skip server certificate verification by default(SDK配置编辑器及sdkconfig文件均已修改)。

当前客户端配置代码:

esp_http_client_config_t config = {
    .url = twilio_url,
    .method = HTTP_METHOD_POST,
    .auth_type = HTTP_AUTH_TYPE_BASIC,
};

esp_http_client_handle_t client = esp_http_client_init(&config);
esp_http_client_set_header(client, "Content-Type", "application/x-www-form-urlencoded");
esp_http_client_set_username(client, account_sid);
esp_http_client_set_password(client, auth_token);

解决方案

即使全局设置了跳过证书验证,仍需在esp_http_client_config_t中显式指定TLS验证选项,否则ESP-TLS会因未配置验证策略而报错。修改配置结构体,添加以下参数:

esp_http_client_config_t config = {
    .url = twilio_url,
    .method = HTTP_METHOD_POST,
    .auth_type = HTTP_AUTH_TYPE_BASIC,
    .skip_cert_common_name_check = true, // 跳过证书通用名检查
    .tls_cfg = {
        .verify_certificate = false, // 禁用服务器证书验证
    },
};

说明

  • verify_certificate = false 直接禁用证书验证,匹配全局设置的“Skip server certificate verification by default”
  • skip_cert_common_name_check = true 跳过证书通用名与URL域名的匹配检查,避免因域名不匹配导致的验证失败

修改后重新编译烧录,即可正常建立TLS连接并发送SMS。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 02:20:15