🛠 Client HTTPS/TLS : interroger une API sécurisée via le Murata 1DX

Arduino Portenta H7 · intermediaire · Schéma : IMG-portenta-h7-intermediaire-2-portenta-h7-client-tls.svg — Portenta H7 envoyant un tunnel TLS en pointillés verts vers un serveur web distant via la box Internet, cadenas sur le tunnel, terminal série affichant le début de la réponse HTTP, étiquette certificats en flash

Objectifs

Passer du Wi-Fi « connecté » au Wi-Fi « utile » : parler à un serveur en TLS (HTTPS). Le core Mbed fournit WiFiSSLClient, une socket TCP qui négocie automatiquement le chiffrement TLS — les certificats de confiance sont stockés dans la flash de la carte, ce qui dispense d'horloge temps réel pour la poignée de main. Tu vas construire une requête HTTP/1.1 à la main sur ce client, le patron de base pour consommer n'importe quelle API.

Matériel

Code complet

// client_tls.ino — modèle l'exemple WiFiSSLClient du core
#include <WiFi.h>
#include "arduino_secrets.h"

char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
int status = WL_IDLE_STATUS;

WiFiSSLClient client;        // TLS : pas d'RTC nécessaire,
                             // le certificat est en flash

void setup {
  Serial.begin(9600);
  while (!Serial) {}

  if (WiFi.status == WL_NO_MODULE) {
    Serial.println("Module Murata 1DX non detecte !");
    while (true) {}
  }
  while (status != WL_CONNECTED) {
    Serial.print("Connexion a "); Serial.println(ssid);
    status = WiFi.begin(ssid, pass);
    delay(3000);
  }
  Serial.print("IP : "); Serial.println(WiFi.localIP);

  if (client.connect("www.google.com", 443)) {
    client.println("GET / HTTP/1.1");
    client.println("Host: www.google.com");
    client.println("Connection: close");
    client.println;
    while (client.available) Serial.write(client.read);
    client.stop;
  } else {
    Serial.println("Poignee de main TLS echouee");
  }
}

void loop {}

Vérification attendue

Après la connexion Wi-Fi, la poignée de main TLS s'exécute (quelques centaines de ms — la machine à 480 MHz fait les calculs de crypto), puis le HTML de la page s'affiche sur la console. Remplace l'hôte par une API JSON pour un vrai usage : mêmes lignes, en-tête Host adapté, puis parse du corps de réponse.

Erreurs fréquentes

Autres tutoriels pour cette carte

Exemples de code pour cette carte

← Retour à la fiche 🛠 Tous les tutoriels