Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Internet der Dinge-Technologie

So installieren Sie einen sicheren eingebetteten Webserver auf einem 3 USD-WLAN-Gerät

Der Einstieg in die Embedded-Entwicklung kann schwierig und teuer sein, aber in diesem Artikel zeige ich Ihnen, wie Sie FreeRTOS und den lwIP-TCP/IP-Stack auf einem WiFi-Chip mit einem sicheren eingebetteten Webserver in weniger als 30 Minuten auf einem Super-Low hochfahren kosten Gerät.

Warum einen sicheren (TLS) aktivierten Server verwenden?

Browser haben damit begonnen, Standardserver (HTTP) in der Browserleiste als „Nicht vertrauenswürdig“ zu kennzeichnen (siehe Abbildung 2 unten), und ein sicherer Server wird dem Endkunden vertrauenswürdiger erscheinen. Ich gehe weiter unten im Abschnitt Sicherheitsüberlegungen ausführlich darauf ein.

Der ESP8266 WiFi Chip und der Minnow Server

Sie können ESP8266 für nur 1 US-Dollar erhalten, aber ich empfehle die Verwendung eines Boards mit USB. Der USB wird zum Flashen der Firmware benötigt. Ohne Onboard-USB wäre ein zusätzlicher Schritt erforderlich, der die Verwendung eines USB-zu-TTL-Konverters beinhaltet. Ein gebrauchsfertiges ESP8266-Board mit USB kann für nur 3 US-Dollar erworben werden.

Der kostengünstige ESP8266-WLAN-Chip eignet sich hervorragend für Lernzwecke, ist jedoch langsam, insbesondere bei CPU-intensiven Aufgaben wie der Durchführung der Verschlüsselung. Sie müssen wirklich über das Design nachdenken, wenn Sie einen langsamen Chip mit CPU-intensiven Aufgaben verwenden.

Der ESP8266 läuft mit 80 MHz, was für einen eingebetteten Chip gut ist, aber die Codeausführung ist mit dem Code, der über SPI-Speicher ausgeführt wird, hundelangsam. Das Ausführen eines TLS-fähigen Servers auf diesem Gerät bietet einen echten Weckruf, wenn es um praktische Einschränkungen bei ressourcenbeschränkten Mikrocontrollern geht, und bietet eine großartige Einführung in die Möglichkeiten, die auf einem langsamen Mikrocontroller ausgeführt werden können. Die Art des ausgewählten sicheren Webservers und das Design der Webanwendung werden für langsame Geräte entscheidend.

In diesem Artikel erkläre ich, wie man den Minnow Server auf einem ESP8266 kompiliert und ausführt. Der Minnow-Server und das Referenzbeispiel sind auf GitHub verfügbar.

Ich habe vor kurzem einen Artikel über den Minnow-Server hier auf embedded.com veröffentlicht. Der Artikel erklärt, wie Sie den Minnow-Server zum Erstellen moderner webbasierter Geräteverwaltungsanwendungen verwenden. Der Artikel geht auch auf die Vorteile der Verwendung eines WebSocket-Servers mit einer sogenannten Single Page Application (SPA) bei der Verwendung von TLS ein. Ich empfehle, diesen Artikel zu lesen, da wir denselben Beispielcode für den ESP8266 vorbereiten und kompilieren.

Erste Schritte

Wir werden die ESP8266 FreeRTOS/lwIP-Umgebung verwenden, die vom esp-open-rtos-Projekt bereitgestellt wird, aber keine Sorge, Sie müssen nicht das komplexe esp-open-rtos-Setup durchlaufen. Stattdessen verwenden wir eine vorkonfigurierte und vollständig einsatzbereite Umgebung mit einer benutzerfreundlichen webbasierten IDE.

Laden Sie die FreeRTOS/lwIP ESP8266-IDE herunter

Navigieren Sie zu Real Time Logic und laden Sie die von uns vorbereitete ESP8266-IDE herunter. Die IDE, die für Bildungszwecke entwickelt wurde, enthält ein vorkonfiguriertes esp-open-rtos gebündelt mit einer einfach zu verwendenden webbasierten C-Quellcode-IDE. Die IDE erfordert VmWare oder VirtualBox. Ich bevorzuge VmWare gegenüber VirtualBox, da ich es einfacher zu bedienen finde. Beachten Sie, dass VmWare für die nicht-kommerzielle Nutzung kostenlos ist.

Die ESP8266-IDE enthält auch einen eingebetteten TLS-Stack (SharkSSL), und der Minnow-Server verwendet automatisch TLS, wenn er mit SharkSSL kompiliert wird.

Sie können die ESP8266-IDE ohne das ESP8266-Board verwenden, aber Sie können den kompilierten Code nicht hochladen und ausführen. Mit anderen Worten, Sie können die IDE herunterladen und alle Schritte in diesem Tutorial ausführen, mit Ausnahme der Ausführung des Codes auf dem ESP8266.

Der Screenshot in Abbildung 1 unten zeigt die virtuelle Maschine und die webbasierte IDE, die mit der virtuellen Maschine verbunden sind. Beachten Sie, wie die virtuelle Maschine den Besitz der ESP8266-USB-Verbindung übernommen hat. Die webbasierte IDE erkennt dies und zeigt den ESP8266 als verbunden und bereit zum Flashen mit neuer Firmware an.

Klicken für größeres Bild

Abbildung 1:Webbasierte IDE verbunden mit der IP-Adresse der virtuellen Maschine. (Quelle:Real Time Logic)

Der Screenshot in Abbildung 1 zeigt den ESP8266, der über ein Steckbrett mit LEDs verbunden ist. Sie benötigen die zusätzlichen LEDs oder das Steckbrett nicht, es sei denn, Sie möchten die von der Beispielanwendung verwendeten externen LEDs steuern.

Beachten Sie, dass sich die IP-Adresse Ihrer VM höchstwahrscheinlich von der in Abbildung 1 unterscheidet. Stellen Sie sicher, dass Sie im Fenster der virtuellen Maschine für die IP-Adresse auf klicken. Wenn das Fenster leer ist, klicken Sie auf das Fenster und drücken Sie dann die Eingabetaste. Sie müssen diese IP-Adresse in Ihren Browser eingeben, um die Web-IDE zu öffnen.

Installation des Minnow-Servers und des Beispielcodes

Das Minnow-Server-Referenzbeispiel ist nicht in der ESP8266-IDE enthalten und muss separat installiert werden. Abbildung 1 zeigt das Minnow-Server-Beispiel, das bereits im Verzeichnis ‚ESP/ms‘ installiert ist. Der Minnow-Server muss über die Linux-Befehlszeile installiert werden, aber machen Sie sich keine Sorgen, wenn Sie Linux nicht verwendet haben. Sie können die von uns vorbereiteten Befehle einfach kopieren und einfügen. Die folgende Abbildung zeigt einen Screenshot der Minnow Server-Installationsbefehle, die in die Linux-Web-Shell eingefügt werden, die unter http://vm-ip-address/webshell/ verfügbar ist.

Klicken für größeres Bild

Abbildung 2:Minnow Server-Installationsbefehle in die Linux-Web-Shell eingefügt. (Quelle:Real Time Logic)

Wenn Sie in Ihrem Browser die URL zur Web-Shell eingeben, werden Sie aufgefordert, sich anzumelden. Der Benutzername ist Sharkssl und das Passwort ist SharkSSL.

Das ESP8266-Tutorial auf GitHub erklärt, wie Sie die virtuelle Maschine konfigurieren, alles installieren, das Webserver-Beispiel kompilieren und die Firmware flashen. Das folgende Video vereinfacht den Vorgang, indem es alles Schritt für Schritt erklärt.

Video 1:So laden Sie das Minnow Server-Beispiel herunter und installieren es, kompilieren und laden den Code hoch. (Quelle:Real Time Logic)

Sicher vs. Nicht sicher

Der Minnow-Server kann im sicheren oder nicht sicheren Modus verwendet werden und verwendet automatisch den sicheren Modus (TLS), wenn er mit der ESP8266 IDE und SharkSSL verwendet wird. Die Verwendung eines TLS-fähigen Webservers in einem Gerät erhöht die Komplexität, und der Endbenutzer hat einen administrativen Aufwand für den Umgang mit SSL-Zertifikaten. Im obigen Video zeigen wir, wie Sie den im Browser angezeigten Zertifikatsfehler entfernen, indem Sie das Zertifikat der Zertifizierungsstelle (CA) im Browser installieren. Das CA-Zertifikat ist das Zertifikat, mit dem das Zertifikat im Webserver-Beispiel signiert wurde.

Eingebettete Geräte werden normalerweise in geschützten privaten Netzwerken installiert, aber viele Kunden verlangen immer noch, dass die Webserver-Verbindungen TLS verwenden. Die Verwendung von TLS-fähigen Servern in privaten Netzwerken ist problematisch, da keine bekannte Zertifizierungsstelle IP-Adressen oder nicht standardmäßige (private Netzwerk-)Namen signiert. Eine Möglichkeit besteht darin, Ihre eigene Zertifizierungsstelle zu sein. Wenn Sie mehr darüber erfahren möchten, lesen Sie unser Tutorial Wie man als Zertifizierungsstelle fungiert.

Wie oben erwähnt, ist der ESP8266 langsam. TLS ist sehr CPU-intensiv und Sie werden feststellen, dass es einige Zeit dauert, eine Verbindung herzustellen und eine Verbindung herzustellen. Das Single Page Application-Beispiel, das WebSockets für die Kommunikation verwendet, ist für CPU-beschränkte Geräte optimiert, aber die anfängliche asymmetrische Verschlüsselung (TLS-Handshake) braucht immer noch Zeit, insbesondere bei einigen Browsern, die keine guten Designpraktiken befolgen und viele TCP-Verbindungen öffnen, die alle erfordern einen vollständigen TLS-Handshake. Um mehr über das Problem mit modernen Webbrowsern und langsamen Mikrocontrollern zu erfahren, lesen Sie unser Tutorial Erstellen von Single-Page-Apps mit dem Minnow-Server, das detailliert auf das Problem eingeht.


Internet der Dinge-Technologie

  1. Wie sichert man die Cloud-Technologie?
  2. So installieren Sie WordPress in der Google Cloud
  3. Wie man IoT-Produkte und -Lösungen sicher macht
  4. So ermitteln Sie, welche Art von IoT-Modul Sie benötigen
  5. Feuchte/Temperatur aus dem Web abrufen
  6. Raspberry Pi 4 als Webserver [Erstelle eine eigene Website]
  7. Eine Einführung in das Hacken von eingebetteter IoT-Hardware
  8. Was sind WLAN-Anrufe? Wie funktioniert es?
  9. So installieren Sie einen Dock Leveler
  10. Wie die Serverautomatisierung zu FANG kam