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

ESP8266HTTPClient SSL握手失败(SSL error 40)问题求助

排查ESP8266HTTPClient SSL握手失败问题

你遇到的SSL握手失败(错误代码40)是ESP8266做HTTPS请求时的典型问题,我帮你梳理几个最可能的原因和解决办法:

1. 指纹格式或值错误

你代码里的fingerPrint带了空格,这大概率是核心问题!ESP8266HTTPClient要求的SHA-1指纹是不带空格的十六进制字符串,可以是连续字符(如A1B2C3...)或冒号分隔(如A1:B2:C3:...),绝对不能包含空格。

正确获取指纹的步骤:

用Chrome/Firefox访问目标URL,点击地址栏的锁图标 → 查看证书 → 详细信息 → 找到「SHA-1指纹」,复制后去掉所有空格,比如把SO ME SH A1 FI NG ER PR IN T改成SOMESHA1FINGERPRINT或者SO:ME:SH:A1:FI:NG:ER:PR:IN:T(注意长度必须是40个字符,对应SHA-1的20字节)。

2. TLS版本不兼容

ESP8266默认的SSL库(BearSSL)可能和服务器的TLS版本不匹配,比如服务器禁用了TLS 1.0/1.1,只支持TLS 1.2。你可以手动指定TLS版本试试:

http.setTLSVersion(TLS_1_2); // 一定要在http.begin()之前调用

3. 证书链或服务器配置问题

  • 如果你复制的是根证书的指纹,而非服务器的叶子证书指纹,也会导致验证失败。务必复制服务器本身的证书指纹,不要用根CA的。
  • 检查服务器证书是否过期,或者是否更换了证书(证书更换后指纹也会同步变化)。

4. 网络或环境问题

  • 确认ESP8266已经正常连接WiFi(你的代码里没写WiFi初始化逻辑,这是发起HTTP请求的必要前提!)。
  • 检查所在网络是否允许访问443端口,有没有防火墙、代理拦截SSL连接。
  • 可以尝试用目标服务器的IP地址代替URL,排查DNS解析是否出现问题。

修正后的完整示例代码:

#include <ESP8266HTTPClient.h>
#include <ESP8266WiFi.h>

const char* ssid = "你的WiFi名称";
const char* password = "你的WiFi密码";
const char* url = "https://someUrl.com";
// 替换为你获取到的正确SHA-1指纹
const char* fingerPrint = "A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0";

void setup() {
  Serial.begin(115200);
  
  // 先完成WiFi连接
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("\nWiFi已连接");

  HTTPClient http;
  // 指定TLS 1.2版本,适配多数现代服务器
  http.setTLSVersion(TLS_1_2);
  
  // 初始化HTTP客户端
  if (http.begin(url, fingerPrint)) {
    int httpCode = http.GET();
    
    if (httpCode > 0) {
      Serial.printf("HTTP状态码: %d\n", httpCode);
      String payload = http.getString();
      Serial.println("响应内容:");
      Serial.println(payload);
    } else {
      Serial.printf("GET请求失败,错误信息: %s\n", http.errorToString(httpCode).c_str());
    }
    
    http.end(); // 务必释放HTTP客户端资源
  } else {
    Serial.println("HTTP客户端初始化失败");
  }
}

void loop() {
  // 按需添加循环执行的逻辑
}

建议先从修正指纹格式开始排查,这是触发该错误最常见的原因,要是还不行再依次检查TLS版本和网络环境。

内容的提问来源于stack exchange,提问作者Yannic Bürgmann

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:20:52