我正在将esp32与WiFiClientSecure库一起使用,以向我的AWS api网关URL(https://x.......g.execute-api.eu-west-1.amazonaws.com/v1/esp32)发出GET请求。我正在使用api网关颁发的包含PEM编码的公钥的客户端证书。
按照以下我的代码使用设置(尽管证书似乎有效-请参阅下面的调试消息)时,它无法连接到服务器,但可以与www.howsmyssl.com示例一起使用。
这是我的代码(相关位):
#include <Arduino.h>
#include <WiFiClientSecure.h>
const char *server = "x.......g.execute-api.eu-west-1.amazonaws.com";
void setup() {
....after connecting to wifi
client.setCertificate(api_gateway_test_root_ca); // my api gateway certificate containing PEM-encoded public key - i assume it works as in debug states Certificate verified
Serial.println("\nStarting connection to server...");
if (!client.connect(server, 443))
Serial.println("Connection failed!");
else
{
Serial.println("Connected to server!");
client.println("GET https://x......g.execute-api.eu-west-1.amazonaws.com/v1/esp32?param1=solly¶m2=molly¶m3=folly¶m4=zolly");
client.println("Host: x......g.execute-api.eu-west-1.amazonaws.com");
client.println("Connection: close");
client.println();
while (client.connected())
{
String line = client.readStringUntil('\n');
if (line == "\r")
{
Serial.println("headers received");
break;
}
}
// if there are incoming bytes available
// from the server, read them and print them:
while (client.available())
{
char c = client.read();
Serial.write(c);
}
client.stop();
}
}
void loop() {
}
这是调试消息:
连接到wifi后,它将尝试连接到服务器...
正在建立与服务器的连接...
[V] [ssl_client.cpp:56] start_ssl_client():在释放内部堆之前 TLS 265288
[V] [ssl_client.cpp:58] start_ssl_client():启动套接字
[V] [ssl_client.cpp:93] start_ssl_client():播种随机数 发电机
[V] [ssl_client.cpp:102] start_ssl_client():设置SSL / TLS 结构...
[I] [ssl_client.cpp:156] start_ssl_client():警告:使用证书 以获得更安全的通信!
[V] [ssl_client.cpp:180] start_ssl_client():设置TLS的主机名 会议...
[V] [ssl_client.cpp:195] start_ssl_client():执行SSL / TLS 握手...
[V] [ssl_client.cpp:216] start_ssl_client():验证对等X.509 证书...
[V] [ssl_client.cpp:225] start_ssl_client():证书已通过验证。
上师冥想错误:核心1出现恐慌(LoadProhibited)。原为 未处理。核心1寄存器转储:
PC:0x400ea714 PS:0x00060a30 A0:0x800e1edd A1:0x3ffb1c70
A2:0x3ffbaab0 A3:0x40084f34 A4:0x3ffb8214 A5:0x00000000
A6:0x00000000 A7:0xffffffbc A8:0xfefefefefe A9:0x3ffb1c10
A10:0x3ffb80c0 A11:0x3ffd7704 A12:0x00000000 A13:0x00000001
A14:0x00060c20 A15:0x00000000 SAR:0x00000004例外: 0x0000001c
EXCVADDR:0xfefeff26 LBEG:0x400014fd LEND:0x4000150d LCOUNT: 0xfffffffc
回溯:0x400ea714:0x3ffb1c70 0x400e1eda:0x3ffb1c90 0x400d30ab:0x3ffb1cb0 0x400d2811:0x3ffb1f20 0x400d295d:0x3ffb1f50 0x400d18b1:0x3ffb1f70 0x400d4413:0x3ffb1fb0 0x40088b9d:0x3ffb1fd0
正在重新启动...
ets 2016年6月8日00:22:57
rst:0xc(SW_CPU_RESET),启动:0x13(SPI_FAST_FLASH_BOOT)
configsip:0,SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO,时钟div:2
load:0x3fff0018,len:4
load:0x3fff001c,len:1044
load:0x40078000,len:8896
load:0x40080400,len:5828
条目0x400806ac