esp32 использует WiFiClientSecure и AWS API-интерфейс шлюза API, не удается подключиться к серверу - PullRequest
0 голосов
/ 03 марта 2020

Я использую esp32 с библиотекой WiFiClientSecure, чтобы отправить запрос GET на мой AWS URL-адрес шлюза API (https://x.......g.execute-api.eu-west-1.amazonaws.com/v1/esp32). я использую выданный шлюзом API клиентский сертификат, содержащий ключ publi c в кодировке 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() {
}

и вот сообщение отладки:

после подключения к Wi-Fi пытается подключиться к серверу ...

Начинается подключение к серверу ...

[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 (): сертификат проверен.
Ошибка медитации гуру: Core 1 pani c 'ed (LoadProjected). Исключение не обработано.

Дамп реестра Core 1:

P C: 0x400ea714 PS: 0x00060a30 A0: 0x800e1edd A1: 0x3ffb1c70

A2: 0x3ffbaab0 A3: 0x40084 0x3ffb8214 A5: 0x00000000

A6: 0x00000000 A7: 0xffffffb c A8: 0xfefefefe A9: 0x3ffb1c10

A10: 0x3ffb80c0 A11: 0x34600 * 000000000: 700: 000000000: 0 : 0x00060c20 A15: 0x00000000 SAR: 0x00000004 EXCCAUSE: 0x0000001 c

EXCVADDR: 0xfefeff26 LBEG: 0x400014fd LEND: 0x4000150d LCOUNT: 0xffff0 0x0 050x0 050x0 050x0505 0x0505 0x0x5 050x5 050x5x0505 : 0x3ffb1cb0 0x400d2811: 0x3ffb1f20 0x400d295d: 0x3ffb1f50 0x400d18b1: 0x3ffb1f70 0x400d4413: 0x3ffb1fb0 0x40088b9d: 0x3 * 10 * * * 0x c (SW_CPU_RESET), загрузки: 0x13 (SPI_FAST_FLASH_BOOT)

configsip: 0, SPIWP: 0xEE

1061 * clk_drv: 0x00, q_drv: 0x00, d_drv: 0x00, cs0_drv: 0x00, hd_drv : 0x00 , wp_drv: 0x00

режим: DIO, деление часов: 2

нагрузка: 0x3fff0018, len: 4

нагрузка: 0x3fff001 c, len: 1044

нагрузка: 0x40078000, длина: 8896

нагрузка: 0x40080400, длина: 5828

запись 0x400806a c

...