2016-05-12 9 views
0

Ich arbeite am MQTT-Protokoll. Ich konfigurierte seinen Server und führte die Kommunikation in Java unter Verwendung seiner mosquitto Bibliothek auf Port 1883 durch. jetzt möchte ich diese Kommunikation secure.What ich weiß, ist Port 8883 reserviert für seine Tls basierte sichere Kommunikation. Es erfordert X.509-Zertifikate. Ich habe zu diesem Zweck das folgende Tutorial gefunden.TLS/SSL-Verbindung für MQTT in Java

http://www.embedded101.com/Blogs/PaoloPatierno/entryid/366/mqtt-over-ssl-tls-with-the-m2mqtt-library-and-the-mosquitto-broker

Aber meine Frage sind

1.how können wir diese Zertifikate in Java-Code zu generieren?

2.wie können wir mehrere Zertifikate gleichzeitig verwenden.Wie oben im Tutorial beschrieben, können wir jeweils nur einen Satz von Zertifikaten in der Datei mosquitto.conf des Servers angeben.Und dann müssen wir den Server neu starten. (das möchte ich nicht tun.)

3.wie können wir einen laufenden Server über diese neu erzeugten Zertifikate wissen lassen. Gibt es eine andere Möglichkeit, dies zu tun, außer in der Conf-Datei des Servers anzugeben?

+0

morever, ich möchte wissen, dass wir jeden mqtt Broker in Java starten können? – Sadaf

+0

Warum möchten Sie mehrere Zertifikate verwenden? – hardillb

+0

Wenn ich mehrere Sensoren für verschiedene Anwendungsfälle verwende und jeder Sensor mit dem anderen Thema auf demselben Broker kommuniziert. – Sadaf

Antwort

1

OK, ich denke, Sie haben verstanden, wie die Authentifizierung des Zertifikats funktioniert.

Es gibt 2 Teile, um es (Proving der Makler, der es sagt, es ist, und dann beweisen, wer der Client verbindet, ist)

Zum einen der Broker 1 Zertifikat haben, die es auf der Welt identifiziert. Sie konfigurieren Mosquitto so, dass dieses Zertifikat beim Start verwendet wird und nie geändert werden muss. Dieses Zertifikat wird von einer Zertifizierungsstelle signiert.

Die Sensoren (Clients) verfügen über eine Kopie des CA-Zertifikats, das sie verwenden werden, wenn sie eine Verbindung zum Broker herstellen, um sicherzustellen, dass es sich um die Person handelt, für die sie sich ausgibt.

Zweitens, wenn Sie Client-Zertifikate verwenden möchten, um die separaten Sensoren zu identifizieren, dann benötigen sie auch jeweils ein Zertifikat. Normalerweise wird dies von der gleichen CA wie das Broker-Zertifikat signiert, damit der Broker überprüfen kann, ob die Clients die Personen sind, für die sie sich ausgeben. Mosquitto kann eingerichtet werden, um den CN aus den Zertifikaten (use_identity_as_username true) als Benutzernamen für die verbindenden Clients zu verwenden und dann können Sie die mosquitto_auth_plugin verwenden, um die CNs in den Zertifikaten zu verfolgen und ACLs zu steuern, wer welche Themen verwenden kann.

Wie für Zertifikate in Java zu schaffen Ich schlage vor, sehen Sie in diesem question

Es besteht keine Notwendigkeit mosquitto neu zu starten, wenn Sie ein neues Zertifikat ausstellen.

+0

In Ordnung! @hardillb. aber können Sie ein wenig über mosquitto_auth_plugin erklären. Da ich keine Möglichkeit finde, dies im Java Eclipse Projekt zu verwenden. Danke. – Sadaf

+0

Sie konfigurieren es in mosquitto, dann können Sie JDBC von Java verwenden, um die neuen Benutzer/ACL-Einträge, in denen jemals Datenbank – hardillb

+0

in Ordnung gesetzt haben. aber ich bin neu in all diesen Dingen. Können Sie einen Entwicklerleitfaden oder ein Tutorial zu diesem Thema teilen? Ich werde Ihnen sehr verbunden sein. – Sadaf