< Kopf >
Text geknüpft
HomeBlog MQTT TLS/SSL Zertifikat

Sicherer MQTT Broker Kommunikation mit TLS/SSL-Zertifikat

von Ponlakshmi


Generating SSL Certificates

Einer der wichtigsten Schritte bei der sicheren MQTT Broker Implementierung ist die Kommunikationsschicht Sicher zwischen den MQTT Clients und dem MQTT Server. Wie alle anderen sicheren Kommunikation, MQTT sowie SSL/TLS Zertifikat zur Befestigung der Verbindung. Die TLS / SSL-Zertifikatsassoziation für die Kommunikation gilt für die TCP und die Websocket-Verbindung. Die sichere MQTT-Kommunikation wird durch MQTTS für TCP und wss für den Websocket dargestellt.

Sicherer MQTT Broker Features

UnsereMQTT Broker(CrystalMQ) hat mehrere Sicherheitsschichten eingebaut. Zusätzlich zur Unterstützung des MQTT TLS Kommunikation,Nicht verfügbar Authentizität, Autorisierung von MQTT-Themen auf Gruppen- und Clientebene und sichere IOT-Datenspeicherung in der Backend-Datenbank und Warteschlangen waren integriert in das Produkt. Da der Rahmen so aufgebaut ist, dass Kunden IoT bauen können Anwendungen um sie herum, wir nehmenMQTT ServerSicherheit ernsthaft und als Standard aus Design.

Was ist MQTT TLS / SSL Zertifikat?

SSL-Zertifikate sind Dateien, die digitale Daten von Verschlüsselungsschlüssel haben, um Daten für Sicherheit zu verschlüsseln. Daher Sie können die Zertifikate verwenden, um sicherzustellen, dass die Datenverschlüsselung im Tunnel nicht verfälscht werden kann. Es besteht ein Bedarf an einem Schlüssel zur Decodierung der Daten am anderen Ende. MQTT Broker bietet eine Option, um zu aktivieren SSL/TLS-Modus der verschlüsselten Datenübertragung zur verbesserten Sicherheit in der Kommunikationsschicht. Der Broker arbeitet mit allen Standard-SSL/TLS-Zertifikaten und kann auch mit selbstsignierten Zertifikaten betrieben werden.

Selbst signiert vs CA Signiert

Zertifizierungsstelle (CA) ist ein Unternehmen, das alle öffentlichen Schlüssel speichert und für alle dritten überprüft Parteien. Es gibt viele autorisierte digitale Zertifikatanbieter einschließlich digicert, verisign, GeoTrust, etc. Diese Zertifizierungsbehörden liefern das Root-Zertifikat. Diese Wurzel Zertifikate werden mit einem einzigartigen Domänennamen und dem entsprechenden Geschäftsdetails, einschließlich Ihrer Standortdetails. Diese Zertifikate sind zeitlich begrenzt. Die dritte Partei Anwendungen wie Web Browser validieren diese Zertifikate, wenn das Zertifikat zugeordnet ist auf den http-Server der Domain und Warnhinweise, wenn das Zertifikat nicht gültig oder abgelaufen ist. Für die Self-Signed-Zertifikate wird das Root-Zertifikat von einem Unternehmen oder einem Entwickler erstellt. Das Verfahren die serverseitigen und clientseitigen Zertifikate zu erstellen ist für den CA-Zertifikat und den selbstsignierten.


Das CA-basierte Zertifikat wird für die Produktionsumgebung empfohlen. In den MQTTs ist jedoch die Kommunikation zwischen denMQT In den Warenkorbund den Server. Als die meisten derMQTBereitstellung wird meist private und isolierte Kommunikation, werden Sie mit dem Zertifikat Handshake zwischen dem Client und dem Server, es kann nicht viel Unterschied zwischen den Zertifikaten. Wenn Sie jedoch eine Browser-basierte WSS-Kommunikation haben, sollten Sie die Anmeldung prüfen für ein CA Zertifikat.

MQTT TLS/SSL Zertifikat erstellen

Wir haben die Opensl und die ubuntu-Umgebung genutzt, um die Erstellung der TLS-Zertifikate zu demonstrieren. Hier finden Sie die Detailsopenl Installation auf Ihrem Ubuntu.

Root Certificate erstellen

Die Root-Zertifikat-Erstellung ist nur für das selbst signierte Zertifikat anwendbar und Sie erhalten dies von die CA, wenn Sie eine kaufen. Der erste Schritt ist die Erstellung der privaten Schlüsseldatei. Der folgende Befehl hilft bei der Erstellung der privaten Schlüsseldatei.

wohnzimmer - Aus Wurzel. Schlüssel 2048


Wenn Sie Ihre Schlüsseldatei sicher mit einem Passwort haben möchten, können Sie -des3 Argument zum Befehl hinzufügen, so dass die Befehlsaufforderungen es Ihnen ermöglichen, das Passwort sicher einzutragen. Stellen Sie sicher, dass Sie das Passwort sicher und sicher halten.

wohnzimmer -Des3-out Wurzel. Schlüssel 2048


Wir haben die Erstellung der Schlüsseldatei - root.key im aktuellen Ordner abgeschlossen. Unser nächster Schritt ist, Zertifikat erstellen Unterzeichnen von Anfragedatei mit oben generiertem RSA-Privatschlüssel. Außerdem enthält es verschlüsselte persönliche Details des Hosts (ie). Land, Staat, Organisation, Gemeinsamer Name, E-Mail-Adresse und öffentlicher Schlüssel.

opensl req -new -x509 -key root. Schlüssel -out root.csr


Die obige Befehlsausführung wird für die folgenden Details veranlassen.

Landname :
Name des Staates oder der Provinz:
Ortsname :
Organisationsname :
Organisation Einheitsname :
Common Name (z.B. Server FQDN oder YOUR Name):
Email Adresse :
Ein Challenge-Passwort :(optional)
Ein optionaler Firmenname :(optional)


Sie haben erfolgreich die CSR-Datei für den Anmeldevorgang erstellt. Sie können die beiden Dateien (root.key und die Wurzel.csr) das Zertifikat zu unterzeichnen und zu erstellen.

opensl x509 -req -days 365 -sha1 -Erweiterungen v3_ca -signkey root.key -in root.csr -out root.crt

Der obige Befehl erstellt das X509-basierte Wurzelzertifikat, das als CA Root Certificate gilt. über Befehl erzeugt eine Root-Zertifikat root.crt, die für 365 Tage gültig ist.

MQTT erstellen Serverzertifikat

Sie müssen die Server-Schlüsseldatei erstellen, um mit der Server-Seitenzertifikat-Generation zu starten. Die Serverseite Bescheinigung benötigt das Root-Zertifikat als einer der Parameter für die Erzeugung.

wohnzimmer -out server.key 2048


Erstellen Sie eine Server-Csr-Datei, die die vollständigen Server-Details des Hosts enthält. Dies ist das ähnliche Verfahren die root.csr Schöpfung. Dieser Befehl sowie Aufforderung für die Firmendetails. Bitte geben Sie ihnen ähnliche Daten für die Wurzelzertifikat.

opensl req -new -out server.csr - Schlüsselserver. Schlüssel


Der nächste Schritt ist die Erstellung des Server-Zertifikats. Das Wurzelzertifikat, das Sie erstellt haben oder das eine aus der CA gewonnen werden muss.

opensl x509 -req -in server.csr -CA root.crt -CAkeyroot.key -CAcreateserial -out server.crt

MQTT erstellen Kundenzertifikat

Das für das Server-Zertifikat verfolgte Verfahren kann verwendet werden, um die Client-Zertifikate zu erstellen. Bitte verwenden Sie eine entsprechende Namensgebung für die Dateien und die entsprechenden Daten für die CSR-Dateien.


Die obigen Zertifikate gelten auch für 365 Tage. Gleiches Zertifikat Die Behörde sollte für beide das Client- und Server-Zertifikat.

Enabling Secure MQTT Broker - Kundenkommunikation

Das Root-Zertifikat, das Server-Zertifikat und der Server-Privatschlüssel müssen auf der Serverseite platziert werden und das Root-Zertifikat, das Client-Zertifikat und der Client-Privatschlüssel müssen auf der Clientseite platziert werden.


Für jeden Kunden können wir entweder ein gemeinsames Kundenzertifikat oder ein individuelles Zertifikat haben. Sie können eine Zertifikat an den Client mit eigener Wurzel. Schlüssel und root.crt. MQTT Broker/MQTT Server verifizieren Sie den gemeinsamen Namen und der Client IP während des Verbindungsvorgangs. Wenn beide gleich sind, dann erlaubt nur Broker den Client zu die Verbindungsanforderung des Kunden anderweitig ablehnen.


Folgen Sie den Schritten, um dieMQTT Brokerin einer sicheren Umgebung.


  • Broker-Zertifikat und Key-Datei MUST in ./Zertifikat / Server-Ordner vorhanden sein.
  • CA Certificate MUST vorhanden in ./Zertifikat/root Ordner
  • Ändern Sie den TCP-Port auf 8883, Websocket Port auf 11443 und aktivieren Sie TLS auf dem broker.conf. Sie können jede zufälliger Port für Ihren Einsatz. Stellen Sie sicher, dass derselbe Port im MQTT Server und dem Client verwendet wird.

Folgen Sie den Schritten, um dieMQTT Clientsin einer sicheren Umgebung.


  • Stellen Sie sicher, dass Sie die root.crt, Client. Schlüssel und Client. ct zusammen mit dem Client bauen. Sie sollten dies für Ihr Geräte bin Dateien sowie Softwarepakete.
  • Der Clientcode muss zum Laden der Zertifikatsdateien aktualisiert werden.
  • Zum Beispielpython mqt In den Warenkorbvon paho hat Optionen, um TLS mitclient.tls_set(ca_certs=ca_cert, cert_reqs=sl.CERT_REQUIRED)und der Referenzpfad muss auf dem Code angegeben werden.
  • Ändern Sie den TCP-Port auf 8883, Websocket Port auf 11443 und geben Sie den richtigen MQTT Broker Endpunkt. Du kannst Verwenden Sie jeden beliebigen Port für Ihre Bereitstellung. Stellen Sie sicher, dass derselbe Port im MQTT Server und dem Client verwendet wird.

Das SSL-Zertifikat makefilekann verwendet werden das selbstgesungene Zertifikat zu generieren und auf dem MQTT Broker einzusetzen. Achten Sie bei der Ausführung des Skripts darauf, dass die erforderlichen Informationen während der Aufforderung zur Verfügung gestellt werden. Kristall MQ ist konstruiert fürEnterprise grade MQTT Sicherheitfür eine sichere Kommunikation über die Vorkommnung undGehostet MQTT Serverinstanzen.


Erstellen Sie eine vertrauenswürdige IoT-Umgebung!

Sichere MQTT-Kommunikation

Beginnen Sie mit der Bereitstellung eines Secure MQTT Brokers im Kern Ihres Systems