SSL sur un PA ESP32

Salut tout le monde j'ai une double question.

Voici à peu près mon code sur mon ESP32

void setup()
{

  if (ssidHome == "" || passwordHome == "")
  {

    WiFi.softAP(ssid_PA.c_str(), password_PA.c_str());

    server.on(
        "/xxxxx", HTTP_POST, [](AsyncWebServerRequest *request) {}, NULL, [](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total)
        { ... });
    server.begin();
  }
  else
  {
    WiFi.begin(ssidHome.c_str(), passwordHome.c_str());
    Serial.print("Connecting");
    while (WiFi.status() != WL_CONNECTED)
    {
      delay(500);
      Serial.print(".");
    }
    Serial.println();

    Serial.print("Connected, IP address: ");
    Serial.println(WiFi.localIP());
    Serial.println(WiFi.macAddress());

    server.on("/xxxx", HTTP_GET, [](AsyncWebServerRequest *request)
              { .... });

    server.on("/xxxxxx", HTTP_GET, [](AsyncWebServerRequest *request)
              { .... });
    server.on("/xxxxxx", HTTP_GET, [](AsyncWebServerRequest *request)
              { .... });
    server.begin()
  }
}

J'aimerais savoir s'il existe un moyen de mettre une certificat SSL sur mes deux serveurs, que ce soit en point d'accès ou quand il est connecté au WiFi.

Merci

vu le niveau de sécurité d'un ESP et de sa flash, il ne doit pas être très difficile d'extraire votre certificat SSL de votre ESP s'il venait à être compromis. C'est pas forcément une bonne idée

faut sans doute descendre d'un cran dans les APIs de ESP-IDF et sans doute la bonne méthode serait de jouer avec l'ESP-IDF unified provisioning API

Vous pouvez aussi lire cela

Merci pour ta réponse, tant que j'y suis est-ce que quelqu'un qui s'y connait en Arduino peut récupérer mon code ? Si oui existe-il des moyens pour contrer ça ?

Après je reviens sur ce que vous avez dis.

Chaque ESP aura son certificat SSL et après effectivement si la personne à un accès physique à l’ESP il pourra sûrement récupéré les certificats. Mais je viens de discuter avec mes collègues sécurités/réseaux dans ma boîtes et ils me disent que c’est mieux de partir sur du SSL car dans dans tous les cas si une personne rentre dans notre boîtes et à un accès physique il pourra se connecter en USB mais là je ne peux pas trop y faire.

Quelle est votre avis sur la question du coup

Si un de vos certificats est compromis à cause d’un process de sécurité, vous risquez de vous faire révoquer tous les certificats utilisés de la même façon (donc à risque) par l’autorité qui a émis le certificat.

Partir sur du WPA2 permet déjà de crypter la communication.

Je ne connais pas le besoin mais Je ne transformerais pas les ESP en serveurs web accessibles mais en clients d’une boîte noire plus robuste (un vrai serveur avec un OS type Linux) qui agrégerait les données des ESP et offrirait les API d’accès.

Je prends note pour ton premier paragraphe.

Je vais essayer de voir pour faire du WPA2.

Ensuite pour répondre à ta question, c'est un projet pour contrôler des électrovannes depuis ton smartphone. Je suis totalement d'accord avec toi qu'il faudrait que j'utilise un serveur centrale (SC) et que mon appli mobile tape dessus et le SC tape sur mon ESP et inversement ESP -> SC -> App.
Sauf que pour le moment je suis parti sur une structure simple accessible quand local et puis je n'ai pour l'instant pas assez de budget pour créer ce serveur. Après j'y est pensé et je pense que je vais sortir une première version en Local comme ça puis une seconde avec le SC.

Quelques ESP, un RPi4 en ethernet filaire sur votre routeur Wi-Fi avec disque dur externe pour la performance et durabilité en aggrégateur, MQTT ça ne coûte pas un bras.

les ESP remontent par MQTT des infos au RPi et sont abonnés à des mises à jour.
vous sécurisez la communication ESP <--> RPi (WPA2 pour le Wi-FI + certificat sur le RPi)

A la maison j'utilise HomeBridge (NodeJS server) qui me permet de voir nombre de mes services depuis HomeKit sur mon iPhone et je peux obtenir des infos à distance ou piloter des actions depuis mon smartphone, iPad ou mac sans avoir à développer une API spécifique. (J'ai cela sur un réseau physiquement séparé de mon réseau perso (mon réseau de bidouillage) pour des raisons de sécurité).

Il existe aussi pour pas très cher des produits connectés, par exemple pour les vannes d'arrosage de mon jardin j'ai des Eve Aqua

Rien que ça ... Et vous ne vous faîtes même des vannes d'arrosage avec un ESP ???

Je rigole, c'est destiné à la vente aux particuliers et peut être pros donc si je fais un serveur centrale ce sera sur un Serveur pro comme ça je n'ai pas besoin de gérer tout l'aspect sécurité car c'est pas du tout mon domaine (moi j'écris que des lignes que l'on me demande :joy:) Ensuite je ne connais pas le protocole MQTT je vais me renseigner sur ça mais après ce n'est pas du tout bête et je prends note de tout ce que vous me dîtes

Si si j'ai des vannes sur ESP aussi, mais c'est plus expérimental ➜ je ne veux pas prendre de risque avec Madame pour son potager et ses fleurs :slight_smile:

Si c'est pour commercialiser aux particuliers, vous n'allez pas mettre le même certificat pour tout le monde (il serait compromis en un rien de temps et donc révoqué et tous vos produits vendus seraient donc dysfonctionnels) et vous n'allez pas acheter un certificat par vente pour configurer à la main chaque ESP...

Cela doit donc rester simple. Le serveur WEB doit servir avant tout à configurer les différentes heures et durées d'arrosage, éventuellement à déclencher un arrosage manuel.
Un accès distant me paraît totalement inutile. Une centrale d'irrigation automatique est par définition autonome. Je ne vois pas l'intérêt de récupérer des informations (lesquelles ?), ni de modifier la configuration, ni déclencher un arrosage à distance.
Même un fonctionnement en simple point d'accès me semble suffisant, avec une simple protection par mot de passe.
Le simple fait de se connecter à une box entraîne des complications. Il faut pouvoir récupérer l'adresse IP (OpenSprinkler le fait avec un afficheur et un bouton).
Cela n'empêche pas de prévoir l'accès à distance, mais cela doit rester optionnel, réservé au jardinier GEEK.

Effectivement c’est ce que je disais plus haut chaque ESP aurait son certificat

vous comptez en vendre beaucoup? le certificat SSL a un coût non négligeable et il faut le renouveler tous les ans (validité réduite à 12 mois à compter du 1er septembre 2020)... c'est un futur cauchemar logistique à mon avis d'autant plus que vous ne serez plus propriétaire des dits ESP et donc devriez acheter un certificat pour compte d'autrui...

Merci pour ta réponse, quand mon ESP démarre pour la première fois il se met un PA pour pouvoir lui transmettre le SSID et le mot de passe du Wifi de la maison pour faire simple.

Ensuite il redémarre en se connectant au Wifi.

Les seuls choses que je peux faire dans l’appli son effectivement appliquer des circuits automatiques avec des heures etc et juste des lancements manuel avec une durée si jamais il y a besoin ou sinon pour pouvoir tester chaque circuit sans devoir aller aux électrovannes et le faire manuellement.

Pour tout ce qui est récupération d’IP effectivement ça était un gros challenge surtout que mon appli est hybride donc pour faire du natif c’est compliqué des fois. La solution la plus simple était de faire une requêtes reverse ARP avec l’adresse MAC de l’ESP mais bon je n’ai pas réussi donc j’ai fais plus simple vu que j’ai un serveur web j’y ai mis un fichier php qui récupère une requête POST avec son adresse IP et je l’ajoute en BDD puis mon appli quand tu te lit tu récupère cette IP. Si jamais l’adresse IP de l’ESP change alors on la renvoie etc etc

Édit : je parle bien de l’IP local de l’ESP

C'est exactement l'utilisation que j'ai moi-même de l'arrosage manuel : il arrive qu'un goutteur soit éjecté par la pression d'eau, et je déclenche un arrosage manuel pour le trouver.
J'ai un capteur de débit en série avec la vanne, et la centrale coupe la vanne en cas de débit excessif, afin d'éviter un gaspillage inutile d'eau quand un goutteur se débranche.
Plus d'infos ici :

Sincèrement, je pense qu'une centrale d'irrigation qui ne se démarque pas de la concurrence (capteur d'humidité du sol, capteur de débit) n'a aucune chance d'intéresser qui que ce soit, mis à part quelques amis dans l'entourage proche.

D'ailleurs les commentaires sur mon blog sont éloquents : le capteur d'humidité intéresse du monde.

Je sais bien mais après je pense vous l'avoir déjà dit dans d'autres post mais ce n'est que la V1 et ça ce trouve avant que je finisse le projet je vais peut être rajouter ce module de capteur d'humidité. Et après je viens de voir capteur de débit mais ça je ne peux pas trop car si les électrovannes ne renvois pas cette infos je ne pourrais pas l'avoir sauf si je créer un petit adaptateur entre l'électrovanne et le tuyau mais bon pour l'instant ce n'est pas ma priorité