Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Internet of Things-technologie

Hoe installeer je een beveiligde ingebouwde webserver op een wifi-apparaat van $ 3

Aan de slag gaan met embedded ontwikkeling kan moeilijk en duur zijn, maar in dit artikel laat ik je zien hoe je FreeRTOS en de lwIP TCP/IP-stack op een WiFi-chip met een veilige embedded webserver in minder dan 30 minuten op een superlage kosten apparaat.

Waarom een ​​beveiligde (TLS) ingeschakelde server gebruiken?

Browsers zijn begonnen met het markeren van standaard (HTTP)-servers als "Niet vertrouwd" in de browserbalk (zie Afbeelding 2 hieronder), en een beveiligde server zal betrouwbaarder lijken voor de eindklant. Ik zal hier in detail op ingaan in de sectie Beveiligingsoverwegingen hieronder.

De ESP8266 WiFi-chip en de Minnow-server

Je kunt ESP8266 krijgen voor slechts $ 1, maar ik raad aan om een ​​bord te gebruiken dat USB bevat. De USB is nodig om de firmware te flashen. Een extra stap die het gebruik van een USB naar TTL-converter omvat, zou nodig zijn zonder ingebouwde USB. Een kant-en-klaar ESP8266-bord met USB kan al voor $ 3 worden gekocht.

De goedkope ESP8266 wifi-chip is geweldig voor leerdoeleinden, maar is traag, vooral bij CPU-intensieve taken zoals het uitvoeren van codering. Je moet echt nadenken over het ontwerp als je een trage chip gebruikt met CPU-intensieve taken.

De ESP8266 draait op 80 Mhz, wat goed is voor een ingebouwde chip, maar de uitvoering van de code is erg traag met de code die wordt uitgevoerd via het SPI-geheugen. Het draaien van een TLS-enabled server op dit apparaat zorgt voor een echte wake-up call als het gaat om praktische beperkingen met beperkte microcontrollers en biedt een geweldige introductie tot wat mogelijk is om te draaien op een langzame microcontroller. Het gekozen type beveiligde webserver en het ontwerp van de webapplicatie worden van cruciaal belang voor langzame apparaten.

In dit artikel zal ik uitleggen hoe je de Minnow Server compileert en uitvoert op een ESP8266. De Minnow Server en het referentievoorbeeld zijn beschikbaar op GitHub.

Ik heb onlangs een artikel over de Minnow Server hier op embedded.com gepubliceerd. In het artikel wordt uitgelegd hoe u de Minnow Server kunt gebruiken voor het maken van moderne webgebaseerde apparaatbeheertoepassingen. Het artikel gaat ook in op de voordelen van het gebruik van een WebSocket-server met een zogenaamde Single Page Application (SPA) bij gebruik van TLS. Ik raad aan dit artikel te lezen, aangezien we dezelfde voorbeeldcode voor de ESP8266 zullen voorbereiden en compileren.

Aan de slag

We zullen de ESP8266 FreeRTOS/lwIP-omgeving gebruiken die wordt geleverd door het esp-open-rtos-project, maar maak je geen zorgen, je hoeft de complexe esp-open-rtos-installatie niet te doorlopen. In plaats daarvan gebruiken we een vooraf geconfigureerde en volledig gebruiksklare omgeving met een gebruiksvriendelijke webgebaseerde IDE.

Download de FreeRTOS/lwIP ESP8266 IDE

Navigeer naar Real Time Logic en download de ESP8266 IDE die we hebben voorbereid. De IDE, die is ontworpen voor educatieve doeleinden, bevat een vooraf geconfigureerde esp-open-rtos gebundeld met een gebruiksvriendelijke webgebaseerde C-broncode-IDE. De IDE vereist VmWare of VirtualBox. Ik geef de voorkeur aan VmWare boven VirtualBox, omdat ik het gebruiksvriendelijker vind. Merk op dat VmWare gratis is voor niet-commercieel gebruik.

De ESP8266 IDE bevat ook een ingebouwde TLS-stack (SharkSSL) en de Minnow Server gebruikt automatisch TLS wanneer hij wordt gecompileerd met SharkSSL.

U kunt de ESP8266 IDE gaan gebruiken zonder het ESP8266-bord, maar u kunt de gecompileerde code niet uploaden en uitvoeren. Met andere woorden, u kunt de IDE downloaden en alle stappen in deze tutorial volgen, behalve het uitvoeren van de code op de ESP8266.

De schermafbeelding in Afbeelding 1 hieronder toont de virtuele machine en de webgebaseerde IDE die zijn verbonden met de virtuele machine. Merk op hoe de virtuele machine eigenaar is geworden van de ESP8266 USB-verbinding. De webgebaseerde IDE detecteert dit en toont de ESP8266 als aangesloten en klaar om te worden geflitst met nieuwe firmware.

klik voor grotere afbeelding

Figuur 1:Webgebaseerde IDE verbonden met het IP-adres van de virtuele machine. (Bron:Real Time Logic)

De schermafbeelding in figuur 1 toont de ESP8266 aangesloten op LED's via een breadboard. U hebt de extra LEDS of het breadboard niet nodig, tenzij u de externe LEDS wilt bedienen die door de voorbeeldtoepassing worden gebruikt.

Merk op dat het IP-adres van uw VM hoogstwaarschijnlijk anders zal zijn dan in Afbeelding 1. Zorg ervoor dat u in het venster van de virtuele machine klikt voor het IP-adres. Als het venster leeg is, klikt u op het venster en drukt u vervolgens op de enter-toets. U moet dit IP-adres in uw browser invoeren om de web-IDE te openen.

De Minnow-server en de voorbeeldcode installeren

Het referentievoorbeeld van de Minnow Server is niet opgenomen in de ESP8266 IDE en moet afzonderlijk worden geïnstalleerd. Afbeelding 1 toont het voorbeeld van de Minnow Server die al is geïnstalleerd in de map 'ESP/ms'. De Minnow Server moet worden geïnstalleerd vanaf de Linux-opdrachtregel, maar maak je geen zorgen als je Linux niet hebt gebruikt. U kunt de opdrachten die we hebben voorbereid eenvoudig kopiëren en plakken. De volgende afbeelding toont een screenshot van de installatiecommando's van Minnow Server die in de Linux-webshell worden geplakt die beschikbaar is op http://vm-ip-address/webshell/.

klik voor grotere afbeelding

Afbeelding 2:Installatieopdrachten van Minnow Server geplakt in Linux-webshell. (Bron:Real Time Logic)

Wanneer u de URL naar de webshell in uw browser invoert, wordt u gevraagd om in te loggen. De gebruikersnaam is sharkssl en het wachtwoord is SharkSSL.

De ESP8266-tutorial op GitHub legt uit hoe u de virtuele machine configureert, alles installeert, het voorbeeld van de webserver compileert en de firmware flasht. De volgende video vereenvoudigt het proces door alles stap voor stap uit te leggen.

Video 1:Hoe download en installeer je het voorbeeld van de Minnow Server, compileer en upload de code. (Bron:Real Time Logic)

Beveiligd versus niet-beveiligd

De Minnow Server kan in beveiligde of niet-beveiligde modus worden gebruikt en maakt automatisch gebruik van beveiligde modus (TLS) bij gebruik met de ESP8266 IDE en SharkSSL. Het gebruik van een voor TLS geschikte webserver in een apparaat voegt extra complexiteit toe en de eindgebruiker krijgt een administratieve last van het omgaan met SSL-certificaten. In de bovenstaande video laten we zien hoe u de certificaatfout in de browser kunt verwijderen door het certificaat van de certificeringsinstantie (CA) in de browser te installeren. Het CA-certificaat is het certificaat dat werd gebruikt om het certificaat te ondertekenen in het voorbeeld van de webserver.

Ingesloten apparaten worden doorgaans geïnstalleerd in beveiligde privénetwerken, maar veel klanten eisen nog steeds dat de webserververbindingen TLS gebruiken. Het gebruik van TLS-compatibele servers op privénetwerken is problematisch, aangezien geen enkele bekende certificeringsinstantie IP-adressen of niet-standaard (privénetwerk) namen zal ondertekenen. Een optie is om uw eigen certificeringsinstantie te zijn. Als je hier meer over wilt weten, bekijk dan onze tutorial Hoe op te treden als certificeringsinstantie.

Zoals hierboven vermeld, is de ESP8266 traag. TLS is erg CPU-intensief en u zult merken dat het enige tijd kost om verbinding te maken en een verbinding tot stand te brengen. Het Single Page Application-voorbeeld, dat WebSockets gebruikt voor communicatie, is geoptimaliseerd voor apparaten met een CPU-beperking, maar de initiële asymmetrische codering (TLS-handshake) kost nog steeds tijd, vooral bij sommige browsers die geen goede ontwerppraktijken volgen en veel TCP-verbindingen openen die allemaal volledige TLS-handshake vereist. Om meer te weten te komen over het probleem met moderne webbrowsers en trage microcontrollers, zie onze tutorial Single-page apps maken met de Minnow Server, die in detail op het probleem ingaat.


Internet of Things-technologie

  1. Hoe cloudtechnologie te beveiligen?
  2. Hoe installeer ik WordPress op Google Cloud
  3. Hoe maak je IoT-producten en -oplossingen veilig
  4. Hoe identificeert u welk type IoT-module u nodig heeft
  5. Hoe fuzz-testen de beveiliging van IoT-apparaten versterken
  6. Vochtigheid/temperatuur van internet halen
  7. Raspberry Pi 4 als webserver [Maak eigen website]
  8. Een inleiding tot het hacken van embedded hardware op IoT-apparaten
  9. Wat is bellen via wifi? Hoe werkt het?
  10. Een dockleveller installeren
  11. Hoe serverautomatisering FANG heeft bereikt