J’ai une carte UNO R4 Wifi.
Je lis une page web sur mon serveur en HTTPS.
Jusque là, pas de problème.
Je voudrais remplacé cette carte par une R4 minima + Shield W5100.
Je butte sur le problème avec le SSL. Mon serveur me renvoie l’information qu’il refuse le HTTP et demande du HTTPS.
Avec le wifi, on remplace le WiFiClient client; et le port 80 par WiFiSSLClient client; avec le port 443.
Avec le shield, cela n’a pas l’air aussi simple.
J’ai réussi en utilisant la bibliothèque SSLClient mais il faut compiler avec le certificat SSL du site.
Le seul problème (sauf erreur), lors de la mise à jour du certificat, il faut le recoder et recharger le programme.
Avec une UNO R4 WiFi, la gestion du TLS est intégrée au module WiFi (la gestion du TLS est assurée par le module ESP32-S3 et sa pile réseau, et que la vérification des certificats n’est pas équivalente à celle d’un navigateur) ce qui permet d’établir une connexion HTTPS sans gérer explicitement les certificats côté application, la vérification est soit simplifiée soit partiellement désactivée selon la configuration si je me souviens bien (je n’ai pas cette carte).
Avec un shield W5100, la situation est différente car le W5100 ne gère que TCP/IP et ne possède aucune capacité matérielle ou logicielle pour le SSL/TLS. ➜ la couche TLS doit donc être implémentée en logiciel sur le microcontrôleur, ce qui impose l’usage de bibliothèques comme SSLClient ou BearSSL portées sur Arduino.
Il faut regarder dans la bibliothèque que vous utilisez s’il y a un mode dégradé sans vérification du certificat.
Le linker signale que la section .stack_dummy chevauche la section .heap, ce qui signifie que la pile et le tas se superposent. C'est dû au fait que BearSSL réserve des buffers statiques importants pour TLS.
Peut-être en réduisant la taille des buffers dans la bibliothèque ça pourrait passer.
(votre R4 minima n'a que 32Ko de RAM et chacun de ces buffer fait déjà plus de 16Ko)
OK j'ai peut-être dit une bêtise et il faudrait peut être regarder du côté de SSLClient ou EthernetWebServer_SSL - un truc prévu pour s'interfacer avec la bibliothèque Ethernet.