我面临着ESP8266HTTPClient和SSL的问题。
#include <ESP8266HTTPClient.h>
const char* url= "https://someUrl.com";
const char* fingerPrint= "SO ME SH A1 FI NG ER PR IN T";
HTTPClient http;
http.begin(url, fingerPrint);
http.GET();
执行此操作时,我在调试日志中收到以下内容:
State: sending Client Hello (1)
Alert: handshake failure
Error: SSL error 40
Alert: unexpected message
Error: SSL error 40
Alert: close notify
[HTTP-Client] failed connect to someUrl.com:443
我试着检查指纹
grc
并得到以下回应:
从远程服务器获取的SSL/TLS安全证书无效。问题严重到我们无法获取证书的通用名称和/或指纹。与您提供的域名(如上所示)关联的IP地址的HTTPS端口443上有一个服务器应答。但服务器可能会像回答HTTP一样回答HTTPS,并返回网页,而不是正确的SSL/TLS设置握手。(我们遇到了这种行为。)
这让我相信主机上的SSL配置有问题。
但使用我的浏览器访问url时,证书没有问题(尝试过IE、Edge和FireFox)。
根据
this comment to an issue on github
只有两个受支持的密码套件:
-
TLS\U RSA\U WITH\u AES\u 128\u CBC\u SHA和
-
TLS\U RSA\U WITH\u AES\u 256\u CBC\u SHA
主机支持以下密码套件:
-
TLS\u ECDHE\u RSA\u WITH\u AES\u 128\u GCM\u SHA256
-
TLS\u ECDHE\u RSA\u WITH\u AES\u 256\u GCM\u SHA384
是否有机会在ESP8266上对此主机执行HTTPS请求?也许是另一个HttpClient库?