Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Technologie de l'Internet des objets

Comment installer un serveur Web intégré sécurisé sur un appareil Wi-Fi à 3 $

Se lancer dans le développement intégré peut être difficile et coûteux, mais dans cet article, je vais vous montrer comment faire tourner FreeRTOS et la pile TCP/IP lwIP sur une puce WiFi avec un serveur Web intégré sécurisé en moins de 30 minutes sur un très faible appareil de coût.

Pourquoi utiliser un serveur sécurisé (TLS) ?

Les navigateurs ont commencé à signaler les serveurs standard (HTTP) comme « Non approuvés » dans la barre du navigateur (voir Figure 2 ci-dessous), et un serveur sécurisé apparaîtra plus digne de confiance pour le client final. J'entrerai dans les détails dans la section Considérations relatives à la sécurité ci-dessous.

La puce WiFi ESP8266 et le serveur Minnow

Vous pouvez obtenir ESP8266 pour aussi peu que 1 $, mais je vous recommande d'utiliser une carte qui inclut l'USB. L'USB est nécessaire pour flasher le firmware. Une étape supplémentaire qui inclut l'utilisation d'un convertisseur USB vers TTL serait nécessaire sans USB intégré. Une carte ESP8266 prête à l'emploi avec USB peut être achetée pour aussi peu que 3 $.

La puce WiFi ESP8266 à faible coût est idéale à des fins d'apprentissage, mais elle est lente, en particulier pour les tâches gourmandes en CPU telles que le cryptage. Vous devez vraiment penser à la conception lorsque vous utilisez une puce lente avec des tâches gourmandes en CPU.

L'ESP8266 fonctionne à 80 Mhz, ce qui est bon pour une puce intégrée, mais l'exécution du code est lente avec le code exécuté via la mémoire SPI. L'exécution d'un serveur compatible TLS sur cet appareil fournit un véritable signal d'alarme lorsqu'il s'agit de limitations pratiques avec des microcontrôleurs à ressources limitées et fournit une excellente introduction à ce qu'il est possible d'exécuter sur un microcontrôleur lent. Le type de serveur Web sécurisé choisi et la conception de l'application Web deviennent critiques pour les appareils lents.

Dans cet article, je vais expliquer comment compiler et exécuter le Minnow Server sur un ESP8266. Le serveur Minnow et l'exemple de référence sont disponibles sur GitHub.

J'ai récemment publié un article sur le Minnow Server ici sur Embedded.com. L'article explique comment utiliser Minnow Server pour créer des applications de gestion de périphériques Web modernes. L'article aborde également les avantages de l'utilisation d'un serveur WebSocket avec une soi-disant application à page unique (SPA) lors de l'utilisation de TLS. Je recommande de lire cet article car nous allons préparer et compiler le même exemple de code pour l'ESP8266.

Mise en route

Nous utiliserons l'environnement ESP8266 FreeRTOS/lwIP fourni par le projet esp-open-rtos, mais ne vous inquiétez pas, vous n'avez pas besoin de passer par la configuration complexe esp-open-rtos. Au lieu de cela, nous utiliserons un environnement préconfiguré et entièrement prêt à l'emploi avec un IDE Web facile à utiliser.

Télécharger l'IDE FreeRTOS/lwIP ESP8266

Accédez à Real Time Logic et téléchargez l'IDE ESP8266 que nous avons préparé. L'IDE, qui est conçu à des fins éducatives, comprend un esp-open-rtos préconfiguré associé à un IDE de code source C basé sur le Web et facile à utiliser. L'IDE nécessite VmWare ou VirtualBox. Je préfère VmWare à VirtualBox, car je le trouve plus facile à utiliser. Notez que VmWare est gratuit pour une utilisation non commerciale.

L'IDE ESP8266 comprend également une pile TLS intégrée (SharkSSL) et le serveur Minnow utilise automatiquement TLS lorsqu'il est compilé avec SharkSSL.

Vous pouvez commencer à utiliser l'IDE ESP8266 sans la carte ESP8266, mais vous ne pouvez pas télécharger et exécuter le code compilé. En d'autres termes, vous pouvez télécharger l'IDE et suivre toutes les étapes de ce didacticiel, à l'exception de l'exécution du code sur l'ESP8266.

La capture d'écran de la figure 1 ci-dessous montre la machine virtuelle et l'IDE Web connecté à la machine virtuelle. Remarquez comment la machine virtuelle a pris possession de la connexion USB ESP8266. L'IDE basé sur le Web détecte cela et indique que l'ESP8266 est connecté et prêt à être flashé avec le nouveau micrologiciel.

cliquez pour agrandir l'image

Figure 1 :IDE Web connecté à l'adresse IP de la machine virtuelle. (Source :Logique en temps réel)

La capture d'écran de la figure 1 montre l'ESP8266 connecté à des LED via une maquette. Vous n'avez pas besoin des LED supplémentaires ou de la maquette, sauf si vous souhaitez contrôler les LED externes utilisées par l'exemple d'application.

Notez que l'adresse IP de votre machine virtuelle sera très probablement différente de celle de la figure 1. Assurez-vous de cliquer dans la fenêtre de la machine virtuelle pour l'adresse IP. Si la fenêtre est vide, cliquez sur la fenêtre, puis appuyez sur la touche Entrée. Vous devez saisir cette adresse IP dans votre navigateur pour ouvrir l'IDE Web.

Installation du serveur Minnow et de l'exemple de code

L'exemple de référence Minnow Server n'est pas inclus dans l'IDE ESP8266 et doit être installé séparément. La figure 1 montre l'exemple Minnow Server déjà installé dans le répertoire 'ESP/ms'. Le serveur Minnow doit être installé à partir de la ligne de commande Linux, mais ne vous inquiétez pas si vous n'avez pas utilisé Linux. Vous pouvez simplement copier et coller les commandes que nous avons préparées. La figure suivante montre une capture d'écran des commandes d'installation de Minnow Server collées dans le shell Web Linux disponible à l'adresse http://vm-ip-address/webshell/.

cliquez pour agrandir l'image

Figure 2 : commandes d'installation de Minnow Server collées dans le shell Web Linux. (Source :Logique en temps réel)

Lorsque vous entrez l'URL du shell Web dans votre navigateur, vous serez invité à vous connecter. Le nom d'utilisateur est sharkssl et le mot de passe est SharkSSL.

Le didacticiel ESP8266 sur GitHub explique comment configurer la machine virtuelle, tout installer, compiler l'exemple de serveur Web et flasher le firmware. La vidéo suivante simplifie le processus en expliquant tout étape par étape.

Vidéo 1 :Comment télécharger et installer l'exemple Minnow Server, compiler et télécharger le code. (Source :Logique en temps réel)

Sécurisé ou non sécurisé

Le Minnow Server peut être utilisé en mode sécurisé ou non sécurisé et utilise automatiquement le mode sécurisé (TLS) lorsqu'il est utilisé avec l'IDE ESP8266 et SharkSSL. L'utilisation d'un serveur Web compatible TLS dans un appareil ajoute une complexité supplémentaire et l'utilisateur final a la charge administrative de gérer les certificats SSL. Dans la vidéo ci-dessus, nous montrons comment supprimer l'erreur de certificat présentée dans le navigateur en installant le certificat de l'autorité de certification (CA) dans le navigateur. Le certificat CA est le certificat qui a été utilisé pour signer le certificat dans l'exemple de serveur Web.

Les appareils intégrés sont généralement installés dans des réseaux privés protégés, mais de nombreux clients exigent toujours que les connexions au serveur Web utilisent TLS. L'utilisation de serveurs compatibles TLS sur des réseaux privés est problématique car aucune autorité de certification connue ne signera des adresses IP ou des noms non standard (réseau privé). Une option consiste à être votre propre autorité de certification. Si vous souhaitez en savoir plus à ce sujet, consultez notre tutoriel Comment agir en tant qu'autorité de certification.

Comme mentionné ci-dessus, l'ESP8266 est lent. TLS est très gourmand en CPU et vous remarquerez qu'il faut un certain temps pour se connecter et établir une connexion. L'exemple d'application à page unique, qui utilise des WebSockets pour la communication, est optimisé pour les périphériques limités par le processeur, mais le chiffrement asymétrique initial (prise de contact TLS) prend encore du temps, en particulier avec certains navigateurs qui ne suivent pas les bonnes pratiques de conception et ouvrent de nombreuses connexions TCP que tous nécessitent une poignée de main TLS complète. Pour en savoir plus sur le problème des navigateurs Web modernes et des microcontrôleurs lents, consultez notre didacticiel Création d'applications à page unique avec le serveur Minnow, qui explique le problème en détail.


Technologie de l'Internet des objets

  1. Comment sécuriser la technologie cloud ?
  2. Comment installer WordPress sur Google Cloud
  3. Comment sécuriser les produits et solutions IoT
  4. Obtenir l'humidité/la température à partir du Web
  5. Raspberry Pi 4 en tant que serveur Web [Créer son propre site Web]
  6. Introduction au piratage du matériel embarqué des appareils IoT
  7. Qu'est-ce que les appels Wi-Fi ? Comment ça marche ?
  8. Comment installer un niveleur de quai
  9. Comment l'automatisation du serveur a atteint FANG