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
ESP über HTTPS Fingerabdruck/Zertifikat
24.11.2020, 01:40
Beitrag #1
ESP über HTTPS Fingerabdruck/Zertifikat
Hallo zusammen,

ich habe folgende Frage/ Problem:

Hintergrund:
Ich habe mir eine Website aufgebaut die auf einem Webserver läuft (AlfaHosting). Ebenfalls habe ich ein Zertifikat für eine sichere Verbindung über HTTPS eingebunden was auch soweit funktioniert. Jetzt will ich über eine HTTPS Post von einem ESP aus eine php Seite aufrufen die mir die Dateien weiterverarbeitet und in eine MySQL Datenbank schreibt. Der ESP soll Messdaten an den Server liefern sowie Befehle zum Steuern abrufen. Auf dem Server programmiere ich mithilfe von PHP / HTML. Das klappt soweit auch alles ganz gut.
Das Problem ist nun das Browser auf dem PC kein Problem mit den Zertifikaten, Fingerprints und ähnliches haben. Für den ESP8266 aber anscheinend eine Herausforderung darstellen.
Die Anwendung ist dabei so Sicherheitsrelevant, dass ich alle Verbindungen gerne über die HTTPS Seite laufen lassen möchte, sodass die Verbindung verschlüsselt ist. Das funktioniert mit dem Browser auf dem Rechner soweit auch gut. Die Frage ist wie ich es hinbekomme das auch der ESP8266 über eine sichere Verbindung kommuniziert. Ich möchte es vermeiden jedes Jahr den ESP mit einem neuen Fingerprint auszustatten, weil diese nicht in meiner unmittelbaren Umgebung eingesetzt werden. Deswegen bin ich auf die BearSSL_CertStore.ino aufmerksam geworden. (https://github.com/esp8266/Arduino/tree/...CertStore)
Nach zwei Tagen recherchieren und ausprobieren komme ich aber nicht mehr weiter. Dodgy
Hier wird es so einfach erklärt, aber nun muss ich sagen es steckt doch schon mehr dahinter: (https://medium.com/@dfa_31434/doing-ssl-...60ad46f5e)
Zur Verwendung dieses Beispiels brauche ich .AR files die von der „certs-from-mozilla.py“ Phyton Datei erstellt werden sollen. Diese sollen dann in einen Unterordner(data) im Programmverzeichniss abgelegt werden und in den SPIFFS des ESP’s geladen werden. Soweit so gut.
Leider schaffe ich es nicht das die Pyton Datei ohne Fehlermeldung durchläuft.
Die Fehlermeldung lautet:
Code:
Traceback (most recent call last):
  File "C:\Users\KevinLap\Documents\Arduino\ESP8266WiFi\examples\BearSSL_CertStore\certs​-from-mozilla.py", line 55, in <module>
    ssl = Popen(['openssl','x509','-inform','PEM','-outform','DER','-out', certName], shell = False, stdin = PIPE)
  File "C:\Users\XY\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 947, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "C:\Users\XY\AppData\Local\Programs\Python\Python39\lib\subprocess.py", line 1416, in _execute_child
    hp, ht, pid, tid = _winapi.CreateProcess(executable, args,
FileNotFoundError: [WinError 2] Das System kann die angegebene Datei nicht finden
>
Damit kann ich erstmal so wenig anfangen. Nach einer Recherche im Internet wurde gesagt ich muss openssl.exe in meinem Pfad haben. (https://github.com/esp8266/Arduino/issues/7300)
Daran scheitere ich momentan. Was muss ich dort genau herunterladen und in meinem Pfad installieren/ablegen?

Hat das einer schon mal hinbekommen und kann mir weiterhelfen?

Gibt es eine gute Erklärung bzw. Schritt für Schritt Anleitung, um einen ESP über eine HTTPS Seite zu steuern?

Bin ich überhaupt auf dem richtigen Weg?

Ich hoffe ich konnte mein Problem verständlich darlegen.

Vielen Dank im Vorraus
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
24.11.2020, 09:42
Beitrag #2
RE: ESP über HTTPS Fingerabdruck/Zertifikat
Hallo,

hier zumindest ein kleiner Einblick in SSL, mit einem ESP32.

Musst Du denn den Webserver eines Fremdanbieters nutzen? Alle Daten, die komplette Steuerung und den Code für den Webbrowser übergibst Du damit ja automatisch einem Fremden. Ob Daten verschlüsselt übertragen werden, wäre für mich persönlich da eher nicht ganz so wichtig. Denn die Daten, die übers Internet laufen, sind ja nicht ständig in der Leitung, sondern nur während der Übertragung. Das bedeutet, jemand der sich sehr für die Deine geheime Steuerung interessiert, muss die Daten abhören und mit Vorsatz auswerten. Dann kommen Deine Daten zum Fremdanbieter (hoffentlich mehr als ein bester Freund, der Dir über die geheime Steuerung Verschwiegenheit in jeder Hinsicht garantiert und auch garantiert, was mit den sehr geheimen Daten bei der Speicherung so angestellt wird). Was jetzt etwas schwerer wird, wenn man SSL verwendet, ist, dass es möglichst gut verhindert, dass sich Dritte in die Verbindung einklinken und so die Fernsetuerung Deiner Technik übernehmen. Aber dafür ist Voraussetzung, dass die Kommunikation (der Steuerung) bekannt ist. Oder man müsste das zuvor ausspionieren, welche Daten was bedeuten. Als Beispiel könnten sich zwei Chinesenüber Telefon unterhalten und ich würde nichts davon verstehen (wenn ich sie abhöre und mich in die Leitung einklinke), weil ich Chinesisch nicht kann. Würde ich versuchen, einen Gesprächspartner zu ersetzen und ich imitiere den zu schlecht, wird das die Gegenseite bemerken. Wenn die beiden Chinesen auch noch eine "Räubersprache" in Chinesisch verwenden (also eine Geheimsprache, bei der Worte der Sprache eine andere Bedeutung bekommen), ist es fast unmöglich, nicht zu erkennen, wenn sich ein Dritter einmischt.

Hier mal ein Link zur SSL-Sicherheit.


Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 02:54
Beitrag #3
RE: ESP über HTTPS Fingerabdruck/Zertifikat
Hallo,

erstmal vielen Dank für deine ausführliche Antwort.

Vielleich erzähle ich mal mehr zum Hintergrund: Ich will über diese Steuerung einen großen Motor von überall an und aus stellen und überwachen. Wird dieser aber fälschlicherweise angeschaltet entsteht schon ein großer Sachsachaden. Meine erste Lösungsmöglichkeit war mit Blynk und das funktionierte auch soweit gut aber dort war man doch sehr eingeschränkt was weitere Funktionaltäten wie einen Betriebsstundenzähler oder ähnliches angeht. Deswegen meine Idee eine eigne Website zu erstellen die über den Browser aufgerufen werden kann. Natürlich mit einem Login Bereich und ähnlichem.

Jetzt zu deiner Antwort:
Nein es muss natürlich kein Webserver eines Fremdanbieters genutzt werden. War nur für mich jetzt erst mal die einfachste Lösung weil ich mich erst mal nicht um diesen Webserver kümmern muss. Du würdest also einen eigenen Webserver empfehlen. Bei der Kommunikation sollte dann eine einfache Verbindung ausreichen wenn man etwa die gesendeten Daten nicht offensichtlich benennt. (Variablennamen und ähnliches) sondern sozusagen auf chinesisch redet und überprüft ob die Gegenseite kein Mist erzählt.

Okay dann werde ich mich mal weiter mit dem Webserver beschäftigen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
25.11.2020, 10:01 (Dieser Beitrag wurde zuletzt bearbeitet: 25.11.2020 10:33 von Nichtraucher.)
Beitrag #4
RE: ESP über HTTPS Fingerabdruck/Zertifikat
Zitat:Ich will über diese Steuerung einen großen Motor von überall an und aus stellen und überwachen. Wird dieser aber fälschlicherweise angeschaltet entsteht schon ein großer Sachsachaden.

Allein das ist es schon wert, vor Ort, an der Motorsteuerung eine zusätzliche Sicherheitsprüfung einzubauen (Plausibilität der Daten). In dem Fall wäre mehrstufig besser. D.h. mindestens mit einer Sicherheitsabfrage. Also vergewissern, ob der "Master" das wirklich so gemeint hat, was er an Steuerungskommandos schickt. Das muss dann ja 100% sicher sein.

Also wenn ich Dich richtig verstehe, hast Du keine Möglichkeit, so ohne weiteres eine Webseite z.b. für einen ESP-Webserver zu erstellen (kennst Dich zu wenig aus etc.)? Denn wenn Du schon einen ESP nutzt, kannst Du auch den als Webserver nutzen, der Webseiten ausliefert.

Kommunikation muss man nicht unbedingt mit SSL realisieren, wenn das Probleme macht oder umständlich ist. Deshalb mein Beispiel mit Chinesisch. Es können Daten ja auch vor dem Verschicken, über eine unsichere Verbindung, selbst verschlüsselt werden, das kann man mit beliebig langen Schlüsseln sehr schnell realisieren, ohne, dass es dafür komplizierte Berechnungen benötigt. Ich habe sowas auf dem PC mal mit Dateien gemacht. Als Schlüssel habe ich dann eine mehrere hundert Kilobyte große Datei verwendet. Wenn weder der Schlüssel, noch die verschlüsselten Daten bekannt sind und auch das Protokoll der Steuerung nicht bekannt ist, wird das schwer, das jemals wieder zu entschlüsseln. Allerdings bin ich kein mathematisches Genie, um auszurechnen, wie lange ein Supercomputer benötigen würde. Also angenommen, ich schicke mehrere Steuerungsblöcke und habe einen sehr langen Schlüssel, dann wird jeder Steuerungsblock anders verschlüsselt und auch so gut wie nie mit denselben Schlüsseldaten (weil die z.B. rotieren).

Was ich meine ist, wenn die Steuerung antsprechend abgesichert ist, wie ich Eingangs schrieb, kann erkannt werden, wenn falsche Daten gesendet wurden. Nimmt das über Hand, bricht man die Verbindung ab, so dass die neu aufgebaut werden muss. Wird die Verbindung dann vom Webbrowser neu aufgebaut, ist es wahrscheinlich, dass die Verbindung nicht denselben Weg im Netz nimmt, wie zuvor. Hier kommt es dann drauf an, wo in der Kommunikationskette ein vermeintlicher Hacker sitzt.

Gut, ich wollte bloß etwas zum Nachdenken anregen.

Noch was: die SQL-Datebank hinter dem fremden Webserver, kann man auch ersetzen, in dem man auf eine SD-Karte schreibt. Platzmangel wird es da so schnell nicht geben. Auslesen kann man das direkt über den ESP-Webserver. Wenn man das dann unbedingt benötigt, könnte man die Daten auch in SQL-Syntax verschicken.

MfG
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
26.11.2020, 03:38
Beitrag #5
RE: ESP über HTTPS Fingerabdruck/Zertifikat
Hallo,

vielen Dank für deine Anmerkungen. Damit kann ich mich erst mal etwas beschäftigen und arbeiten um eine solche Verschlüsselung und Sicherheitsprüfung einzubinden.

Also ich bin natürlich kein Profi in Sachen ESP und Webserver aber ich hoffe ich lerne durch dieses Projekt etwas dazu und deswegen habe ich auch genau hier nach Hinweisen gefragt.

Verstehe ich dich richtig das du auf dem ESP der auch an der Steuerung steckt einen Webserver aufbauen würdest und auf den ich dann mit einem Webbrowser zugreifen kann?
Ich habe wohl mehrere Steuerungen mit mehreren Motoren und ESP's. Würde es da nicht sinnvoller sein einen Webserver (ESP oder Raspi) aufzubauen über den alle Verbindungen laufen? oder führt das wieder zu einem zu großen Sicherheitsrisiko?

Gruß
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Relay über NFC und Wifi schalten, bitte um Hilfe bei der Programmierung Tirol-Daniel 28 2.600 17.04.2021 13:31
Letzter Beitrag: Tommy56
  ESP32 über OTA luemar 67 7.320 23.02.2021 22:55
Letzter Beitrag: hotsystems
  Pumpensteuerung über WLAN DanielK 69 6.603 11.12.2020 18:27
Letzter Beitrag: DanielK
  AES256 / SHA384 Chiffren bei HTTPS requests mit ESP32 nutzen TBMSam 0 680 23.11.2020 13:47
Letzter Beitrag: TBMSam
  Probleme bei der Kombination Firebase/HTTPS client devnull69 13 1.690 05.11.2020 16:47
Letzter Beitrag: Tommy56
  ESP32 Reset über En olmuk 4 1.151 01.11.2020 18:09
Letzter Beitrag: hotsystems
  ESP8266 über AT-Befehle Jens Jung 2 1.233 19.08.2020 15:08
Letzter Beitrag: Jens Jung
  NodeMCU steuert UNO/NANO über I2C Tommy56 21 25.310 12.07.2020 17:43
Letzter Beitrag: daniel_hh
  MODBUS RTU über RS485 miq19 11 4.640 19.05.2020 17:35
Letzter Beitrag: ardu_arne
  Schalter über Distanz an Mikrocontroller anbinden stw 7 2.662 13.05.2020 12:02
Letzter Beitrag: Tommy56

Gehe zu:


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