esp32使用WiFiClientSecure和AWS api网关客户端证书,无法连接到服务器

时间:2020-03-03 14:17:55

标签: ssl https aws-api-gateway client-certificates esp32

我正在将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&param2=molly&param3=folly&param4=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

0 个答案:

没有答案