Notions de base

Les ports MQTT expliqués : 1883, 8883, 8083, 8084 et 443

Quel port MQTT utiliser ? Découvrez à quoi servent les ports 1883, 8883, 8083, 8084 et 443, lesquels fonctionnent dans un navigateur et ceux des brokers publics.

Mis à jour · 6 min de lecture

Quand une connexion MQTT échoue, le port est la première chose à vérifier. MQTT peut fonctionner sur TCP brut, sur TLS, sur WebSockets et sur WebSockets sécurisés — et chaque transport vit généralement sur un port différent. Choisir le mauvais est de loin la cause la plus fréquente d’un client bloqué sur Connecting…. Ce guide explique chaque port MQTT courant, quand l’utiliser, ainsi que les ports exacts des brokers publics sur lesquels vous pouvez tester.

Les ports MQTT en un coup d’œil

PortTransportSchéma d’URLChiffréFonctionne dans un navigateur
1883MQTT sur TCPmqtt://NonNon
8883MQTT sur TLSmqtts://OuiNon
8083 / 8080 / 8000 / 80MQTT sur WebSocketws://NonUniquement depuis des pages HTTP non chiffrées
8084 / 8081 / 8884 / 443MQTT sur WebSocket sécuriséwss://OuiOui

Seuls 1883 et 8883 sont enregistrés auprès de l’IANA (sous les noms mqtt et secure-mqtt). Les ports WebSocket relèvent d’une convention qui change d’un broker à l’autre : vérifiez donc toujours la documentation du broker — ou notre liste de brokers publics — avant de vous connecter.

Port MQTT 1883 : TCP en clair

Le port MQTT 1883 est le transport d’origine, non chiffré. Le client ouvre une connexion TCP et envoie directement le paquet binaire CONNECT. C’est le transport le plus léger, et celui qu’utilisent par défaut la plupart des appareils embarqués, des outils en ligne de commande comme mosquitto_pub et des bibliothèques côté serveur.

Le piège : tout — y compris le nom d’utilisateur et le mot de passe contenus dans CONNECT — circule en clair. Utilisez 1883 sur un réseau local de confiance ou pour des tests jetables, jamais pour des identifiants ou des données de production qui traversent Internet.

Port MQTT 8883 : MQTT sur TLS

Le port MQTT 8883 transporte le même protocole MQTT encapsulé dans TLS. Le client effectue d’abord un handshake TLS, vérifie le certificat du broker, puis seulement envoie CONNECT. C’est le choix par défaut pour les appareils et services backend qui dialoguent avec un broker via Internet.

  • Le client a besoin d’un bundle de CA de confiance (le magasin système suffit pour les CA publiques ; les configurations auto-signées nécessitent un cafile).
  • Le nom d’hôte auquel vous vous connectez doit correspondre au certificat : connectez-vous par nom, pas par adresse IP.
  • Les brokers peuvent en plus exiger des certificats client (TLS mutuel) sur ce port ou sur un port séparé.

Ports WebSocket MQTT : 8083, 8084 et compagnie

Les navigateurs ne peuvent pas ouvrir de sockets TCP bruts : les applications web font donc passer MQTT dans un WebSocket. Le client envoie une requête HTTP d’upgrade vers un chemin (souvent /mqtt) avec le sous-protocole mqtt, puis les paquets MQTT circulent dans des trames WebSocket. Il n’existe pas de port WebSocket MQTT standard unique :

  • EMQX utilise par défaut 8083 (ws) et 8084 (wss).
  • Le broker public de HiveMQ utilise 8000 (ws) et 8884 (wss).
  • test.mosquitto.org utilise 8080 (ws) et 8081 (wss).
  • De nombreux déploiements de production placent les WebSockets derrière un reverse proxy sur 80 / 443.

Port 443 : passer les pare-feu

Les réseaux d’entreprise, le Wi-Fi des hôtels et les opérateurs mobiles bloquent souvent tout sauf les ports web. Faire passer MQTT sur WebSockets sécurisés sur le port 443 donne au trafic l’apparence d’un HTTPS ordinaire : il passe presque partout. Le bac à sable Eclipse sur mqtt.eclipseprojects.io fait exactement cela. Certaines plateformes IoT cloud acceptent aussi MQTT natif sur TLS sur le port 443 et utilisent l’extension TLS ALPN pour le distinguer du HTTPS sur le même port.

Ports des brokers MQTT publics populaires

BrokerHôteTCPTLSWSWSS
HiveMQbroker.hivemq.com188388838000 /mqtt8884 /mqtt
EMQXbroker.emqx.io188388838083 /mqtt8084 /mqtt
Mosquittotest.mosquitto.org1883888380808081
Eclipsemqtt.eclipseprojects.io1883888380 /mqtt443 /mqtt
ConnectMQ (accès anticipé)broker.connectmq.com188388838083 /mqtt8084 /mqtt

test.mosquitto.org propose aussi des listeners supplémentaires pour des tests spécifiques, comme un listener authentifié sur 1884 (nom d’utilisateur rw, mot de passe readwrite).

Se connecter à EMQX sur le port wss 8084

Indiquer le port dans une URL de connexion

La plupart des bibliothèques clientes acceptent une URL unique qui combine schéma, hôte, port et (pour les WebSockets) chemin :

URL de connexion MQTT.js
import mqtt from 'mqtt';

// Node.js only — raw TCP and TLS
mqtt.connect('mqtt://broker.emqx.io:1883');
mqtt.connect('mqtts://broker.emqx.io:8883');

// Browser or Node.js — WebSockets (note the /mqtt path)
mqtt.connect('ws://broker.emqx.io:8083/mqtt');
mqtt.connect('wss://broker.emqx.io:8084/mqtt');

Erreurs de port courantes

  • Utiliser mqtt:// sur un port WebSocket (ou ws:// sur 1883). Le schéma détermine le protocole que parle le client ; le port doit lui correspondre.
  • Oublier le chemin WebSocket. De nombreux brokers n’acceptent l’upgrade que sur /mqtt ; sans lui, vous obtenez une 404 ou un échec silencieux.
  • Utiliser TLS sur un port en clair. mqtts:// sur 1883 échoue avec une erreur de handshake TLS du type wrong version number.
  • Ne tester que depuis votre propre réseau. Un port qui fonctionne au bureau peut être bloqué sur un réseau cellulaire ou un Wi-Fi invité. Testez depuis le réseau que vos appareils utiliseront réellement.
  • Exposer 1883 sur Internet avec un accès anonyme. Les scanners qui balayent Internet trouvent très vite les brokers MQTT ouverts. Si un broker doit être joignable, exigez des identifiants et privilégiez TLS.

Comment vérifier si un port MQTT est ouvert

Avant d’accuser votre code, confirmez que le port est joignable depuis votre réseau :

Vérification des ports
# Is the TCP port open?
nc -vz broker.hivemq.com 1883

# Does the TLS port complete a handshake with a valid certificate?
openssl s_client -connect broker.hivemq.com:8883 -servername broker.hivemq.com </dev/null

# Full MQTT round trip over TLS
mosquitto_sub -h broker.hivemq.com -p 8883 --capath /etc/ssl/certs -t 'testmqtt/port-check' -v

Un timeout signifie généralement qu’un pare-feu bloque le trafic ; connection refused signifie que rien n’écoute sur ce port. Notre guide des erreurs de connexion MQTT couvre les deux cas.

Ouvrir des ports sur votre propre broker

Si vous exploitez Mosquitto vous-même, chaque port est un listener distinct. Une configuration typique garde 1883 lié à localhost et n’expose publiquement que des listeners chiffrés :

mosquitto.conf
# Plain MQTT, local clients only
listener 1883 127.0.0.1

# MQTT over TLS
listener 8883
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

# Secure WebSockets for browsers
listener 8084
protocol websockets
certfile /etc/mosquitto/certs/server.crt
keyfile  /etc/mosquitto/certs/server.key

allow_anonymous false
password_file /etc/mosquitto/passwd

N’oubliez pas d’ouvrir les mêmes ports dans votre pare-feu cloud ou votre security group.

Quel port MQTT utiliser ?

  • Appareil ou backend via Internet : 8883 (TLS).
  • Application dans le navigateur : le port wss:// du broker, idéalement 443.
  • Réseau restrictif : wss:// sur 443.
  • Développement local ou test rapide sur un broker public : 1883 convient.

Prêt à essayer ? Ouvrez le client MQTT en ligne, choisissez un broker : le port WebSocket sécurisé est renseigné pour vous.

Questions fréquentes

Quel est le port MQTT par défaut ?

Le port par défaut de MQTT non chiffré sur TCP est 1883, et celui de MQTT sur TLS est 8883. Les deux sont enregistrés auprès de l’IANA. Les ports WebSocket ne sont pas standardisés et varient selon le broker.

Quel port MQTT utiliser depuis un navigateur web ?

Un navigateur ne peut pas ouvrir de connexions TCP brutes : il doit utiliser le listener WebSocket du broker. Depuis une page HTTPS, il vous faut le port WebSocket sécurisé (wss), par exemple 8084 sur EMQX, 8884 sur HiveMQ ou 443 sur le bac à sable Eclipse.

MQTT peut-il fonctionner sur le port 443 ?

Oui. De nombreux brokers exposent MQTT sur WebSockets sécurisés sur le port 443, car il n’est presque jamais bloqué par les pare-feu ou les proxys. Certains services IoT cloud acceptent aussi MQTT sur TLS sur le port 443 grâce à ALPN.