🛠 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

Objetivos

Pasar del Wi-Fi « conectado » al Wi-Fi « útil »: hablar con un servidor en TLS (HTTPS). El core de Mbed proporciona WiFiSSLClient, un socket TCP que negocia automáticamente el cifrado TLS — los certificados de confianza se almacenan en la flash de la placa, lo que evita la necesidad de un reloj en tiempo real para el handshake. Vas a construir una solicitud HTTP/1.1 a mano sobre este cliente, el patrón básico para consumir cualquier API.

Material

Código completo

// client_tls.ino — modele 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 necessaire,
                             // 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 {}

Verificación esperada

Tras la conexión Wi-Fi, se ejecuta el handshake TLS (algunos cientos de ms — la máquina de 480 MHz realiza los cálculos de criptografía), y luego el HTML de la página se muestra en la consola. Reemplaza el host por una API JSON para un uso real: mismas líneas, encabezado Host adaptado, y luego parseo del cuerpo de la respuesta.

Errores frecuentes

Otros tutoriales para esta placa

Ejemplos de código para esta placa

← Volver a la ficha 🛠 Todos los tutoriales