INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
AES256 / SHA384 Chiffren bei HTTPS requests mit ESP32 nutzen
23.11.2020, 13:47 (Dieser Beitrag wurde zuletzt bearbeitet: 23.11.2020 13:52 von TBMSam.)
Beitrag #1
AES256 / SHA384 Chiffren bei HTTPS requests mit ESP32 nutzen
Hallo zusammen,

ich versuche, mit meinem ESP32 einen HTTP GET request auf einen WebServer, der auf einer speziellen Maschine läuft, auszuführen, allerdings mittels einer sicheren Verbindung (HTTPS).

Wenn ich in dem Code zum BasicHTTPSClient.ino-Beispiel aus der Arduino IDE nur den WLAN-Namen und das WLAN-Passwort in WiFi.begin() ändere und anschließend hochlade (ich hänge den Code nachher noch an, also siehe unten), sieht mein Output auf dem Serial Monitor ungefähr so aus:

Zitat:Waiting for WiFi to connect................ connected
Waiting for NTP time sync: ..
Current time: Fri Nov 20 12:57:33 2020
[HTTPS] begin...
[HTTPS] GET...
[HTTPS] GET... code: 200
<HTML>
<HEAD>
<!-- Created with AOLpress/2.0 -->
<TITLE>Connection Header</TITLE>
</HEAD>


usw. Ändere ich nun auch noch das Zertifikat und die Ziel-URL in https.begin() (also von https://jigsaw.w3.org/HTTP/connection.html zu https://192.168.200.146/api/unlock/generate_pin, wobei 192.168.200.146 die IP der speziellen Maschine ist, auf der der WebServer läuft), so ändert sich der Outcome in folgendes:

Zitat:Waiting for WiFi to connect......... connected
Waiting for NTP time sync: .
Current time: Fri Nov 20 13:13:10 2020
[HTTPS] begin...
[HTTPS] GET...
[HTTPS] GET... failed, error: connection refused

Also habe ich mal mit WireShark auf die Leitung gehört, um herauszufinden, warum der Server die Verbindung verweigert. Dabei ist mir folgende Zeile aufgefallen:

Zitat:Cipher Suite: TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (0xc030)

Es scheint, als erwarte der Server also AES256 bzw. SHA384 Chiffren, aber der ESP diese nicht standardmäßig unterstützt/beherrscht.

Kann mir jemand vielleicht sagen, wie ich meinem ESP32 beibringe, AES256/SHA384 zu unterstützen?

Freue mich über jede Antwort, vielen Dank im voraus, und sorry falls ich an irgend einer Stelle Probleme hatte, mich auszudrücken bzw. mein Problem zu beschreiben, ich hoffe es war dennoch irgendwie verständlich.

Liebe Grüße

PS: Der Vollständigkeit halber hier noch der Code, den ich versucht habe, auszuführen:
Code:
/**
   BasicHTTPSClient.ino
    Created on: 14.10.2018
*/

#include <Arduino.h>
#include <WiFi.h>
#include <HTTPClient.h>
#include <WiFiClientSecure.h>

// This is GandiStandardSSLCA2.pem, the root Certificate Authority that signed
// the server certifcate for the demo server https://jigsaw.w3.org in this
// example. This certificate is valid until Sep 11 23:59:59 2024 GMT
const char* rootCACertificate = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIF6TCCA9GgAwIBAgIQBeTcO5Q4qzuFl8umoZhQ4zANBgkqhkiG9w0BAQwFADCB\n" \
"iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl\n" \
"cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV\n" \
"BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQw\n" \
"OTEyMDAwMDAwWhcNMjQwOTExMjM1OTU5WjBfMQswCQYDVQQGEwJGUjEOMAwGA1UE\n" \
"CBMFUGFyaXMxDjAMBgNVBAcTBVBhcmlzMQ4wDAYDVQQKEwVHYW5kaTEgMB4GA1UE\n" \
"AxMXR2FuZGkgU3RhbmRhcmQgU1NMIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IB\n" \
"DwAwggEKAoIBAQCUBC2meZV0/9UAPPWu2JSxKXzAjwsLibmCg5duNyj1ohrP0pIL\n" \
"m6jTh5RzhBCf3DXLwi2SrCG5yzv8QMHBgyHwv/j2nPqcghDA0I5O5Q1MsJFckLSk\n" \
"QFEW2uSEEi0FXKEfFxkkUap66uEHG4aNAXLy59SDIzme4OFMH2sio7QQZrDtgpbX\n" \
"bmq08j+1QvzdirWrui0dOnWbMdw+naxb00ENbLAb9Tr1eeohovj0M1JLJC0epJmx\n" \
"bUi8uBL+cnB89/sCdfSN3tbawKAyGlLfOGsuRTg/PwSWAP2h9KK71RfWJ3wbWFmV\n" \
"XooS/ZyrgT5SKEhRhWvzkbKGPym1bgNi7tYFAgMBAAGjggF1MIIBcTAfBgNVHSME\n" \
"GDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQUs5Cn2MmvTs1hPJ98\n" \
"rV1/Qf1pMOowDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYD\n" \
"VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCIGA1UdIAQbMBkwDQYLKwYBBAGy\n" \
"MQECAhowCAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNl\n" \
"cnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNy\n" \
"bDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRy\n" \
"dXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZ\n" \
"aHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAWGf9\n" \
"crJq13xhlhl+2UNG0SZ9yFP6ZrBrLafTqlb3OojQO3LJUP33WbKqaPWMcwO7lWUX\n" \
"zi8c3ZgTopHJ7qFAbjyY1lzzsiI8Le4bpOHeICQW8owRc5E69vrOJAKHypPstLbI\n" \
"FhfFcvwnQPYT/pOmnVHvPCvYd1ebjGU6NSU2t7WKY28HJ5OxYI2A25bUeo8tqxyI\n" \
"yW5+1mUfr13KFj8oRtygNeX56eXVlogMT8a3d2dIhCe2H7Bo26y/d7CQuKLJHDJd\n" \
"ArolQ4FCR7vY4Y8MDEZf7kYzawMUgtN+zY+vkNaOJH1AQrRqahfGlZfh8jjNp+20\n" \
"J0CT33KpuMZmYzc4ZCIwojvxuch7yPspOqsactIGEk72gtQjbz7Dk+XYtsDe3CMW\n" \
"1hMwt6CaDixVBgBwAc/qOR2A24j3pSC4W/0xJmmPLQphgzpHphNULB7j7UTKvGof\n" \
"KA5R2d4On3XNDgOVyvnFqSot/kGkoUeuDcL5OWYzSlvhhChZbH2UF3bkRYKtcCD9\n" \
"0m9jqNf6oDP6N8v3smWe2lBvP+Sn845dWDKXcCMu5/3EFZucJ48y7RetWIExKREa\n" \
"m9T8bJUox04FB6b9HbwZ4ui3uRGKLXASUoWNjDNKD/yZkuBjcNqllEdjB+dYxzFf\n" \
"BT02Vf6Dsuimrdfp5gJ0iHRc2jTbkNJtUQoj1iM=\n" \
"-----END CERTIFICATE-----\n";

// Not sure if WiFiClientSecure checks the validity date of the certificate.
// Setting clock just to be sure...
void setClock() {
  configTime(0, 0, "pool.ntp.org", "time.nist.gov");

  Serial.print(F("Waiting for NTP time sync: "));
  time_t nowSecs = time(nullptr);
  while (nowSecs < 8 * 3600 * 2) {
    delay(500);
    Serial.print(F("."));
    yield();
    nowSecs = time(nullptr);
  }

  Serial.println();
  struct tm timeinfo;
  gmtime_r(&nowSecs, &timeinfo);
  Serial.print(F("Current time: "));
  Serial.print(asctime(&timeinfo));
}


void setup() {

  Serial.begin(115200);
  // Serial.setDebugOutput(true);

  Serial.println();
  Serial.println();
  Serial.println();

  WiFi.mode(WIFI_STA);
  WiFi.begin("MyWiFiSSID", "MyWiFiPassword");

  // wait for WiFi connection
  Serial.print("Waiting for WiFi to connect...");
  while (WiFi.status() != WL_CONNECTED) {
    Serial.print(".");
  }
  Serial.println(" connected");

  setClock();  
}

void loop() {
  WiFiClientSecure *client = new WiFiClientSecure;
  if(client) {
    client -> setCACert(rootCACertificate);

    {
      // Add a scoping block for HTTPClient https to make sure it is destroyed before WiFiClientSecure *client is
      HTTPClient https;
  
      Serial.print("[HTTPS] begin...\n");
      if (https.begin(*client, "https://jigsaw.w3.org/HTTP/connection.html")) {  // HTTPS
        Serial.print("[HTTPS] GET...\n");
        // start connection and send HTTP header
        int httpCode = https.GET();
  
        // httpCode will be negative on error
        if (httpCode > 0) {
          // HTTP header has been send and Server response header has been handled
          Serial.printf("[HTTPS] GET... code: %d\n", httpCode);
  
          // file found at server
          if (httpCode == HTTP_CODE_OK || httpCode == HTTP_CODE_MOVED_PERMANENTLY) {
            String payload = https.getString();
            Serial.println(payload);
          }
        } else {
          Serial.printf("[HTTPS] GET... failed, error: %s\n", https.errorToString(httpCode).c_str());
        }
  
        https.end();
      } else {
        Serial.printf("[HTTPS] Unable to connect\n");
      }

      // End extra scoping block
    }
  
    delete client;
  } else {
    Serial.println("Unable to create client");
  }

  Serial.println();
  Serial.println("Waiting 10s before the next round...");
  delay(10000);
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  ESP32-WROVER-DEV funktioniert nicht mehr Twantie 7 261 02.08.2021 11:53
Letzter Beitrag: amithlon
  ESP32 ist nicht gleich ESP32...Problem mit Node32s und Linux Mint 20.2. Uma bm-magic 0 185 29.07.2021 00:58
Letzter Beitrag: bm-magic
  ESP32-Cam mit BLYNK nutzen 4711engel 2 240 24.07.2021 20:57
Letzter Beitrag: 4711engel
  ESP32 T-Watch 2020 Lilygo AnFi 18 6.283 23.07.2021 19:39
Letzter Beitrag: Vapalus
  ESP32-CAM Pan Tilt 4711engel 0 229 22.07.2021 18:35
Letzter Beitrag: 4711engel
  ESP32 und sms kpc 27 4.227 11.07.2021 10:04
Letzter Beitrag: hotsystems
Wink ESP32 IR Empfang auf Core0 Flarki 9 1.077 30.06.2021 19:00
Letzter Beitrag: Flarki
  ESP32 LED D2 blinkt schnell Harry 17 1.940 29.06.2021 19:52
Letzter Beitrag: AnFi
  2 ESP32 laufen nicht zusammen SnecxXx 5 619 24.06.2021 17:08
Letzter Beitrag: hotsystems
  WS2812B LED an ESP32 ? Steinspiel 13 1.535 19.06.2021 22:41
Letzter Beitrag: Bitklopfer

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste