ESP-TLS
ESP8266 测试 RTOS SDK mqtt/ssl_mutual_auth
为何连接服务器失败?
出现 SSL 无法连接可能是由于 ESP8266 内存不足导致。
请使用 ESP8266-RTOS-SDK master 版本来测试此例程,master 版本支持在 menuconfig 配置端动态分配内存,可以减少峰值内存的开销,通过 menuconfig ->
Component config
->mbedTLS
->(键 “Y” 使能)Using dynamic TX /RX buffer
->(键 “Y” 使能)Free SSL peer certificate after its usage
->(键 “Y” 使能)Free certificate, key and DHM data after its usage
。
ESP HTTPS 在使用时能跳过服务器证书校验吗?
可以,请在 menuconfig 里使能以下选项:
Menu path: (Top)
->Component config
->ESP-TLS
->Allow potentially insecure options
Menu path: (Top)
->Component config
->ESP-TLS
->Allow potentially insecure options
->Skip server certificate verification by default
同时要确保
esp_http_client_config_t
结构体里不设置cert_pem
成员变量。如果设置了cert_pem
,就仍会用这个设置的 CA 证书校验服务器证书。如果要同时测试 HTTP OTA,还需要在 menuconfig 里使能
Menu path: (Top)
->Component config
->ESP HTTPS OTA
->Allow HTTP for OTA
选项。
如何将 ESP-TLS 中的 esp_tls_conn_read
API 设置成非阻塞模式?或者有其他方式来实现非阻塞?
可以将
esp_tls.h
里esp_tls_cfg_t
结构体里的non_block
设置为 true 来实现非阻塞。也可以调用
esp_transport_connect_async
来实现非阻塞。
ESP-IDF 支持的 TLS 版本有哪些?
ESP-IDF 里推荐的 TLS 协议为 Mbed TLS 协议。
ESP-IDF v5.0 及以上版本不再支持 SSL 3.0,TLS 1.0 和 TLS 1.1,当前支持的 TLS 版本为 TLS 1.2 和 TLS 1.3。
如何分析 SSL 握手会报 “mbedtls_ssl_handshake returned -0x7200” 错误?
0x7200 的错误可能有以下几点:
MBEDTLS_SSL_IN_CONTENT_LEN 过小,一般小于最大 16 K
内存不够
服务器拒绝 ESP 连接,发送的 SSL record 不完整,需要抓包看下, 详情请参考 乐鑫 Wireshark 使用指南。