Désolé, votre navigateur ne prend pas en charge JavaScript !
Se connecter

Configurer la vérification des certificats MQTTS et HTTPS sur un compteur IAMMETER

Les compteurs IAMMETER équipés du firmware i.91.065.9 ou ultérieur peuvent vérifier le certificat du serveur lorsqu’ils envoient des données par MQTTS ou HTTPS. Cette fonction ajoute la vérification de la chaîne de certificats et du nom d’hôte du serveur aux connexions sortantes sécurisées.

Cet article traite de la configuration de la confiance TLS. Il ne configure ni les topics MQTT, ni les charges utiles JSON, ni la découverte Home Assistant. Pour la publication MQTT, consultez Compteur MQTT : publier les données IAMMETER vers votre broker MQTT.

Sur cette page

Choisir un mode de vérification des certificats

Les clients MQTTS et HTTPS d’IAMMETER prennent en charge trois modes de vérification du certificat du serveur :

Mode Chaîne de certificats Nom d’hôte du serveur Utilisation prévue
builtin Vérifiée avec les autorités racines intégrées au firmware Vérifié Recommandé pour les services publics utilisant une chaîne prise en charge
custom Vérifiée avec une autorité racine PEM fournie par l’utilisateur Vérifié PKI privée, déploiements auto-signés ou racines publiques absentes du firmware
none Non vérifiée Non vérifié Compatibilité ou diagnostic temporaire uniquement

Ces réglages s’appliquent lorsque l’appareil IAMMETER agit comme client TLS et envoie des données vers un broker MQTTS ou un serveur HTTPS. Ils n’activent pas HTTPS sur le serveur Web local de l’appareil.

builtin

builtin est le mode par défaut. Il s’applique lorsqu’aucun réglage de vérification TLS n’a été enregistré et est rétabli après suppression de la configuration TLS CA ou réinitialisation de l’appareil aux paramètres d’usine.

Le firmware contient les autorités racines suivantes :

  • DigiCert Global Root G2
  • ISRG Root X1

L’appareil vérifie la chaîne de certificats et le nom d’hôte du serveur. Le broker MQTTS ou le serveur HTTPS doit présenter un certificat dont la chaîne aboutit à l’une de ces racines, et son champ Subject Alternative Name (SAN) doit correspondre à l’adresse de serveur configurée.

Si l’adresse d’envoi est une adresse IP, le SAN du certificat doit contenir exactement cette adresse IP. Un nom DNS ne correspond pas à une adresse IP, même s’ils désignent le même serveur.

custom

custom effectue les mêmes vérifications de chaîne et de nom d’hôte que builtin, mais fait confiance au certificat CA PEM téléversé par l’administrateur. Utilisez-le lorsque :

  • le certificat du serveur est délivré par une CA privée ;
  • le déploiement utilise un certificat de serveur auto-signé ; ou
  • l’autorité racine publique nécessaire n’est pas intégrée au firmware.

Pour une PKI privée, téléversez son certificat racine. Le serveur TLS doit toujours transmettre les certificats intermédiaires nécessaires pendant la négociation. Un certificat de serveur auto-signé peut être téléversé comme ancre de confiance, mais son SAN doit toujours correspondre au nom d’hôte ou à l’adresse IP configurés.

none

none établit toujours une connexion TLS chiffrée, mais ne vérifie ni la chaîne de certificats ni le nom d’hôte. Ce fonctionnement est similaire à l’ancien comportement TLS sans authentification du serveur.

Ce mode est vulnérable aux attaques de l’homme du milieu (man-in-the-middle). Utilisez-le uniquement de manière temporaire pour la compatibilité ou le diagnostic. Préférez builtin ou custom en production.

Prérequis et limites importantes

Les API de configuration TLS CA nécessitent l’activation de Local Admin Security. Chaque requête doit inclure le nom d’utilisateur et le mot de passe administrateur configurés au moyen de HTTP Basic Authentication.

L’ordinateur exécutant curl ou Swagger UI doit pouvoir atteindre l’adresse IP locale de l’appareil. Les clients MQTTS et HTTPS partagent un mode de vérification et une CA personnalisée : toute modification s’applique donc au mode d’envoi sécurisé utilisé par l’appareil.

Redémarrez l’appareil après toute modification de la configuration TLS afin de recréer le client sortant avec les nouveaux réglages.

Les exemples utilisent les valeurs de substitution suivantes :

DEVICE_IP="192.168.1.80"
ADMIN_USER="admin"
ADMIN_PASSWORD="ExamplePassword1"

Remplacez-les par l’adresse réelle de l’appareil et les identifiants administrateur.

Vérifier le mode TLS actuel

API:

GET /api/tls/ca/status

Exemple :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/tls/ca/status"

Exemple de réponse :

{
  "successful": 1,
  "mode": "builtin",
  "customCaValid": 0,
  "customCaLength": 0,
  "customCaSha256": "",
  "restartRequiredAfterChange": 1
}

La réponse indique le mode sélectionné et, lorsqu’une CA personnalisée est enregistrée, sa longueur et son empreinte SHA-256.

Sélectionner la vérification builtin

API:

POST /api/tls/ca/select

Exemple :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"builtin"}'

Redémarrez l’appareil après une réponse positive.

Sélectionner none pour un diagnostic temporaire

API:

POST /api/tls/ca/select

Exemple :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"none"}'

La réponse avertit que la vérification du certificat du serveur est désactivée. Redémarrez l’appareil après le changement de mode et revenez à builtin ou custom après le diagnostic.

Téléverser et sélectionner une CA personnalisée

Le téléversement d’une CA et la sélection de custom sont deux opérations distinctes. Téléverser une CA ne change pas automatiquement le mode actif.

Exigences du fichier de CA personnalisée

Le fichier téléversé doit respecter toutes ces exigences :

  • format de certificat PEM ;
  • corps de requête brut, ni JSON ni multipart/form-data ;
  • Content-Type: application/x-pem-file ;
  • longueur comprise entre 1 et 3072 octets, en-têtes PEM, fins de ligne et espaces compris ;
  • présence de -----BEGIN CERTIFICATE----- et -----END CERTIFICATE----- ;
  • absence de clé privée.

La limite de 3072 octets concerne l’ensemble du corps de la requête HTTP. Un fichier PEM de 3072 octets est accepté ; un fichier de 3073 octets est rejeté.

Vérifiez la taille du fichier avant le téléversement :

wc -c root-ca.pem

Étape 1 : téléverser la CA

API:

POST /api/tls/ca/upload

Exemple :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/upload" \
  -H "Content-Type: application/x-pem-file" \
  --data-binary @root-ca.pem

Exemple de réponse positive :

{
  "successful": 1,
  "length": 1939,
  "sha256": "64-character SHA-256 digest",
  "message": "CA uploaded; select custom mode and restart"
}

L’appareil enregistre la CA dans plusieurs blocs KV et vérifie la longueur et l’empreinte SHA-256 enregistrées avant de la marquer comme active. Une écriture interrompue ne remplace pas la CA valide précédente.

Étape 2 : sélectionner custom

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/select" \
  -H "Content-Type: application/json" \
  -d '{"mode":"custom"}'

L’appareil rejette cette requête si aucune CA personnalisée valide n’est enregistrée. Il ne bascule pas silencieusement vers none.

Étape 3 : redémarrer et vérifier

Redémarrez l’appareil depuis son interface Web locale, ou utilisez l’API de redémarrage protégée :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/restart?reset=false"

Une fois l’appareil reconnecté, interrogez à nouveau son état :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  "http://$DEVICE_IP/api/tls/ca/status"

Vérifiez que mode vaut custom, que customCaValid vaut 1 et que la longueur et l’empreinte SHA-256 correspondent au certificat téléversé.

Supprimer la CA personnalisée

API:

POST /api/tls/ca/delete

Exemple :

curl --user "$ADMIN_USER:$ADMIN_PASSWORD" \
  -X POST "http://$DEVICE_IP/api/tls/ca/delete"

La suppression de la CA personnalisée rétablit aussi le mode builtin. Redémarrez l’appareil après la suppression.

Utiliser Swagger UI IAMMETER

Vous pouvez tester les mêmes API sans écrire manuellement les commandes curl :

IAMMETER WEM API Test - TLS CA

  1. Ouvrez la page WEM API Test sur un ordinateur pouvant atteindre l’adresse IP locale de l’appareil.
  2. Saisissez l’adresse de l’appareil, par exemple 192.168.1.80, puis sélectionnez Apply.
  3. Sélectionnez Authorize et saisissez le nom d’utilisateur et le mot de passe administrateur.
  4. Ouvrez le groupe TLS CA - Authenticated.
  5. Utilisez GET /api/tls/ca/status pour consulter la configuration actuelle.
  6. Utilisez l’opération de téléversement, de sélection ou de suppression selon le besoin.
  7. Redémarrez l’appareil après toute modification du mode ou du certificat.

La page Swagger s’exécute dans le navigateur et envoie directement les requêtes de cet ordinateur à l’appareil IAMMETER. Elle ne relaie pas les requêtes via IAMMETER Cloud : le navigateur doit donc avoir un accès réseau direct à l’adresse IP de l’appareil.

Résoudre les problèmes de vérification des certificats

admin security required

Activez Local Admin Security avant d’utiliser les API TLS CA. Ces réglages ne peuvent pas être modifiés anonymement.

custom CA is missing or invalid

Téléversez avec succès une CA PEM valide avant de sélectionner custom. Interrogez /api/tls/ca/status et vérifiez que customCaValid vaut 1.

La connexion TLS échoue avec builtin ou custom

Vérifiez tous les points suivants :

  • le nom d’hôte ou l’adresse IP configurés correspondent au SAN du certificat ;
  • le certificat est actuellement valide et l’heure de l’appareil est correcte ;
  • le serveur envoie les certificats intermédiaires nécessaires ;
  • la CA racine sélectionnée a délivré le certificat du serveur ou lui accorde sa confiance via la chaîne ;
  • l’appareil a été redémarré après la modification TLS.

TLS fonctionne avec none, mais échoue avec les modes vérifiés

Cela indique généralement un problème de chaîne de certificats, de nom d’hôte, de période de validité ou d’horloge de l’appareil. Conserver none masque l’échec d’authentification sans le résoudre. Corrigez le déploiement du certificat ou téléversez la CA racine appropriée et utilisez custom.

Haut