Qu'est-ce que MQTT ?
MQTT (Message Queuing Telemetry Transport) est un protocole de messagerie léger basé sur le modèle publication-abonnement, conçu pour les réseaux à bande passante limitée et les connexions intermittentes — les conditions typiques d'une passerelle 4G sur le terrain. Un appareil publie des messages sur un topic (ex. device/001/energy) ; d'autres appareils abonnés à ce topic les reçoivent automatiquement. Le broker agit comme intermédiaire : il reçoit, filtre et distribue les messages sans que l'éditeur et l'abonné aient besoin de se connecter directement. MQTT fonctionne sur TCP/IP (port 1883 sans chiffrement, 8883 avec TLS) et est normalisé ISO/IEC 20922.
Mosquitto est le broker MQTT de référence open-source maintenu par la Eclipse Foundation. Il supporte MQTT 3.1, 3.1.1 et 5.0, pèse moins de 1 Mo et s'installe en moins de 5 minutes. Ce guide couvre l'installation sous Windows et Linux, la génération de certificats TLS avec OpenSSL et la configuration de l'authentification par nom d'utilisateur et mot de passe.
Quand utiliser Mosquitto
- Installations self-hosted avec contrôle total du serveur (VPS, serveur local, Raspberry Pi).
- Environnements de développement et de test avant migration vers un broker cloud.
- Déploiements avec des exigences strictes en matière de confidentialité.
- Projets à petit budget — Mosquitto est entièrement gratuit et sans limite de connexions.
Architecture des certificats TLS
Pour MQTT sur TLS (port 8883) vous avez besoin de trois fichiers : un certificat CA auto-signé, un certificat serveur signé par ce CA, et — optionnellement — des certificats client pour l'authentification mutuelle (mTLS).
Prérequis
- Serveur avec une IP publique ou un nom de domaine accessible depuis l'Index AMI.
- Port TCP 8883 ouvert dans le pare-feu du serveur.
- OpenSSL installé (inclus avec Mosquitto sous Windows ; disponible en paquet sous Linux).
Étape 1 — Installer Mosquitto
Linux (Ubuntu / Debian)
Sur Ubuntu 22.04 / Debian 12 :
sudo apt update && sudo apt install -y mosquitto mosquitto-clients sudo systemctl enable --now mosquitto
Vérifiez que le service est actif :
systemctl status mosquitto # ● mosquitto.service - Mosquitto MQTT Broker # Active: active (running)
Windows 10 / 11
Téléchargez l'installateur officiel depuis mosquitto.org/download (choisissez la version Win64 .exe). Exécutez en tant qu'Administrateur.
winget install EclipseFoundation.Mosquitto
Vérifiez que le service est installé :
sc query mosquitto # STATE : 4 RUNNING
L'installateur enregistre Mosquitto comme service Windows (nom : mosquitto). Gérez-le depuis services.msc ou PowerShell.
Étape 2 — Générer les certificats TLS avec OpenSSL
Les certificats sont identiques sous Linux et Windows — le processus OpenSSL est le même.
Générez les certificats une seule fois et réutilisez-les pour toutes les Index AMI se connectant au même broker.
Linux (Ubuntu / Debian)
Depuis le terminal (Linux) :
mkdir ~/mosquitto-certs && cd ~/mosquitto-certs openssl genrsa -out ca.key 4096 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MonCA-MQTT/O=MonOrg/C=FR" openssl genrsa -out server.key 2048 openssl req -new -key server.key -out server.csr -subj "/CN=broker.mondomaine.com/O=MonOrg/C=FR" openssl x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Windows 10 / 11
Depuis PowerShell en tant qu'Administrateur :
cd "C:\Program Files\mosquitto" mkdir certs && cd certs .\openssl.exe genrsa -out ca.key 4096 .\openssl.exe req -new -x509 -days 3650 -key ca.key -out ca.crt -subj "/CN=MonCA-MQTT/O=MonOrg/C=FR" .\openssl.exe genrsa -out server.key 2048 .\openssl.exe req -new -key server.key -out server.csr -subj "/CN=broker.mondomaine.com/O=MonOrg/C=FR" .\openssl.exe x509 -req -days 3650 -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt
Le CN du certificat serveur doit correspondre au hostname ou à l'IP que les clients utiliseront pour se connecter.
Étape 3 — Configurer mosquitto.conf
Linux (Ubuntu / Debian)
Éditez ou créez le fichier de configuration principal : /etc/mosquitto/conf.d/tls.conf
listener 8883 cafile /etc/mosquitto/certs/ca.crt certfile /etc/mosquitto/certs/server.crt keyfile /etc/mosquitto/certs/server.key require_certificate false
Windows 10 / 11
Sur Windows, le fichier de configuration se trouve à : C:\Program Files\mosquitto\mosquitto.conf
Ouvrez le port 8883 dans le pare-feu :
sudo ufw allow 8883/tcp && sudo ufw reload
New-NetFirewallRule -DisplayName "Mosquitto MQTT TLS" -Direction Inbound -Protocol TCP -LocalPort 8883 -Action Allow
Étape 4 — Vérifier le broker avec mosquitto_sub et mosquitto_pub
Depuis un autre terminal, abonnez-vous à un topic de test :
Linux (Ubuntu / Debian)
mosquitto_sub -h broker.mondomaine.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/message" -v
mosquitto_pub -h broker.mondomaine.com -p 8883 --cafile ~/mosquitto-certs/ca.crt -t "test/message" -m "Bonjour broker TLS"
Windows 10 / 11
Sur Windows, mosquitto_sub.exe et mosquitto_pub.exe se trouvent dans C:\Program Files\mosquitto\ :
.\mosquitto_sub.exe -h broker.mondomaine.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/message" -v
.\mosquitto_pub.exe -h broker.mondomaine.com -p 8883 --cafile "C:\Program Files\mosquitto\certs\ca.crt" -t "test/message" -m "Bonjour broker TLS"
Le terminal 1 doit afficher : test/message Bonjour broker TLS — cela confirme que le broker TLS est opérationnel.
Étape 5 — Authentification par nom d'utilisateur et mot de passe (recommandé)
Créez un fichier de mots de passe pour éviter les connexions anonymes.
Linux (Ubuntu / Debian)
sudo mosquitto_passwd -c /etc/mosquitto/passwd gateway_user sudo systemctl restart mosquitto
Windows 10 / 11
cd "C:\Program Files\mosquitto" .\mosquitto_passwd.exe -c "C:\Program Files\mosquitto\passwd" gateway_user Restart-Service -Name "mosquitto"
Ajoutez ces lignes à mosquitto.conf pour activer l'authentification :
allow_anonymous false password_file /etc/mosquitto/passwd
Connecter l'Index AMI au broker
Une fois le broker actif avec TLS, configurez les paramètres suivants sur l'Index AMI (guide de configuration MQTT) :
- Hôte MQTT : IP publique ou FQDN du serveur exécutant Mosquitto.
- Port : 8883 (MQTT sur TLS).
- Transport : MQTT sur SSL.
- Certificat CA : le fichier ca.crt généré à l'Étape 2.
- Certificat client et clé privée : client.crt et client.key si mTLS.
- Nom d'utilisateur et mot de passe : les identifiants créés à l'Étape 5.
- Client ID : identifiant unique par Index AMI.
Résolution des problèmes
| Symptôme | Cause probable | Solution |
|---|---|---|
| Le client ne se connecte pas : Connection refused | Port 8883 fermé ou Mosquitto non démarré | Vérifiez que le service est actif et le port ouvert dans le pare-feu |
| SSL handshake failed | Le CN du certificat ne correspond pas au hostname | Régénérez server.crt avec le CN correct |
| Connexion perdue | L'Index AMI a perdu la connexion | Vérifiez le Keepalive sur l'Index AMI (≥ 60 s) |
| Aucun message reçu | Topic mal orthographié | Vérifiez que éditeur et abonné utilisent exactement le même topic |
| Authentication failed | Identifiants incorrects | Vérifiez le nom d'utilisateur/mot de passe et allow_anonymous false dans mosquitto.conf |
Prochaines étapes
Avec le broker actif, configurez l'Index AMI via le guide MQTT. Pour interpréter les métriques de signal LTE dans l'aperçu de l'Index AMI, consultez l'article sur le signal LTE.