Connect eine Anwendung mit dem EMQX-Broker auf Edge AWS IoT SiteWise - AWS IoT SiteWise

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Connect eine Anwendung mit dem EMQX-Broker auf Edge AWS IoT SiteWise

Der EMQX-Broker verwendet Transport Layer Security (TLS) auf Port 8883, um die gesamte Kommunikation zu verschlüsseln und so sicherzustellen, dass Ihre Daten während der Übertragung geschützt bleiben. In diesem Abschnitt werden Sie durch die Schritte zum Herstellen von Verbindungen zwischen Ihren Anwendungen und dem EMQX-Broker geführt. Die Einhaltung dieser Schritte trägt dazu bei, die Integrität und Vertraulichkeit Ihrer Industriedaten zu wahren. Der Verbindungsprozess umfasst zwei Hauptansätze: die automatische IP-Erkennung mithilfe von Komponenten oder die manuelle Konfiguration von DNS-Namen und IP-Adressen als alternative Subject Names (SANs) in Ihren TLS-Zertifikaten. Jede Methode hat je nach Netzwerkkonfiguration und Sicherheitsanforderungen ihre eigenen Vorteile. Diese Dokumentation führt Sie durch beide Optionen.

Konfigurieren Sie TLS für sichere Verbindungen zum EMQX-Broker auf Edge AWS IoT SiteWise

AWS IoT Greengrass Generiert standardmäßig ein TLS-Serverzertifikat für den EMQX-Broker, das von der Core Device Certificate Authority (CA) signiert ist. Weitere Informationen finden Sie unter Client-Geräte über einen MQTT-Broker mit einem AWS IoT Greengrass Core-Gerät verbinden.

Rufen Sie das TLS-Zertifikat ab

Um das CA-Zertifikat zu erhalten, führen Sie den folgenden Befehl auf dem Gateway-Host aus:

Linux

Führen Sie den folgenden Befehl in einer Shell-Sitzung auf dem Gateway-Host aus:

/greengrass/v2/bin/swe-emqx-cli cert

Mit diesem Befehl wird der Speicherort des Zertifikats angezeigt und der Inhalt des Zertifikats gedruckt.

Sie können das Zertifikat alternativ mit diesem Befehl in einer Datei speichern:

/greengrass/v2/bin/swe-emqx-cli cert --output /path/to/certificate.pem
Windows

Führen Sie den folgenden Befehl in einer PowerShell Sitzung auf dem Gateway-Host aus:

C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert

Mit diesem Befehl wird der Speicherort des Zertifikats angezeigt und der Inhalt des Zertifikats gedruckt.

Sie können das Zertifikat alternativ mit diesem Befehl in einer Datei speichern:

C:\greengrass\v2\bin\swe-emqx-cli.ps1 cert --output C:\path\to\certificate.pem

Die CLI findet das Zertifikat automatisch, unabhängig vom genauen Pfad auf Ihrem System.

Kopieren Sie den Inhalt der Datei ca.pem in die externe Anwendung, die Sie mit dem Broker verbinden. Speichern Sie diese unter BrokerCoreDeviceCA.pem.

Fügen Sie dem TLS-Serverzertifikat benutzerdefinierte DNS-Namen/IP-Adressen hinzu

Der alternative Name des Antragstellers (SAN) auf dem von is generierten Zertifikat AWS IoT Greengrass localhost Beim Herstellen einer TLS-Verbindung von außerhalb des Gateway-Hosts schlägt der TLS-Überprüfungsschritt fehl, da der Hostname des Brokers nicht mit dem Hostnamen localhost auf dem Serverzertifikat übereinstimmt.

Um das Problem mit nicht übereinstimmenden Hostnamen zu beheben, AWS IoT Greengrass bietet diese Option zwei Möglichkeiten zur Verwaltung von Endpunkten auf Kerngeräten. In diesem Abschnitt werden beide Optionen behandelt. Ausführlichere Informationen finden Sie unter Manage core device endpoints im AWS IoT Greengrass Version 2 Developer Guide.

  • Verwenden Sie den Abschnitt Automatisierte IP-Erkennung, um über die IP-Adresse des Kerngeräts eine Verbindung zum EMQX-Broker herzustellen.

  • Um mithilfe eines DNS-Namens statt einer IP-Adresse eine Verbindung zum EMQX-Broker herzustellen, verwenden Sie den Abschnitt Manuelle Verwaltung.

Automated IP discovery

Diese Option ermöglicht es Ihrem Core-Gerät, seine IP-Adresse automatisch zu ermitteln und sie dem Broker-Zertifikat als Subject Alternative Name (SAN) hinzuzufügen.

  1. Fügen Sie die aws.greengrass.clientdevices.IPDetector Komponente zur Bereitstellung Ihres Kerngeräts hinzu.

  2. Stellen Sie die Änderungen auf Ihrem Gerät bereit

  3. Warten Sie, bis die Bereitstellung abgeschlossen ist.

    Nach Abschluss der Bereitstellung können Sie mithilfe der IP-Adresse des Brokers eine sichere TLS-Verbindung herstellen.

    Die IP-Adresse wird dem Brokerzertifikat automatisch als SAN hinzugefügt.

Manual DNS and IP Configuration

Sie können Ihrem TLS-Zertifikat manuell DNS-Namen und IP-Adressen als alternative Subject Names (SANs) hinzufügen. Diese Methode ist nützlich, wenn Sie einen DNS-Namen für Ihren Gateway-Host konfiguriert haben.

Wichtig

Wenn Sie die IPDetector Komponente verwenden, entfernen Sie sie aus Ihrer Bereitstellung, bevor Sie fortfahren. Die IPDetector Komponente überschreibt manuelle Endpunktkonfigurationen.

Um Endpunkte manuell zu konfigurieren
  1. Navigieren Sie zur AWS IoT SiteWise -Konsole.

  2. Wählen Sie in der linken Navigationsleiste im Abschnitt Edge die Option Edge-Gateways aus.

  3. Wählen Sie das zu konfigurierende Gateway aus.

  4. Wählen Sie im Abschnitt Edge-Gateway-Konfiguration die URL Ihres Greengrass-Core-Geräts aus. Die Seite des Core-Geräts wird angezeigt.

  5. Wählen Sie die Registerkarte Client-Geräte.

  6. Wählen Sie Endpunkte verwalten aus.

  7. Geben Sie im Dialogfeld „Endpoints verwalten“ die DNS-Namen und alle IP-Adressen ein, die Sie hinzufügen möchten. SANs Verwenden Sie Port 8883.

  8. Wählen Sie Aktualisieren.

Das TLS-Serverzertifikat des Brokers wird automatisch aktualisiert und schließt Ihre neuen Endpunkte mit ein.

Um das Update des TLS-Serverzertifikats unter Linux zu überprüfen
  1. Starten Sie eine Shell-Sitzung auf Ihrem Gateway-Host.

    docker exec emqx openssl x509 -in ./data/cert.pem -text -noout | grep -A1 "Subject Alternative Name"
  2. Der Befehl gibt eine Ausgabe zurück, die der folgenden ähnelt:

    X509v3 Subject Alternative Name: DNS:endpoint_you_added, DNS:localhost
  3. Stellen Sie sicher, dass Ihr Endpunkt in der Liste von angezeigt wird SANs.

Um das Update des TLS-Serverzertifikats unter Windows zu überprüfen
  1. Starten Sie eine Shell-Sitzung auf Ihrem Gateway-Host.

    (Get-PfxCertificate -FilePath "C:\greengrass\v2\work\aws.greengrass.clientdevices.mqtt.EMQX\v2\data\cert.pem").Extensions | Where-Object { $_.Oid.FriendlyName -eq "Subject Alternative Name" } | ForEach-Object { "Subject Alternative Name:", ($_.Format($true) -split "`n")[0..1] }
  2. Der Befehl gibt eine Ausgabe zurück, die der folgenden ähnelt:

    Subject Alternative Name: DNS Name=your-endpoint DNS Name=localhost
  3. Stellen Sie sicher, dass der von Ihnen hinzugefügte Endpunkt in der Liste von enthalten ist SANs.

Testen Sie die EMQX-Brokerverbindung auf Edge AWS IoT SiteWise

Nachdem Sie Ihren EMQX-Broker mit TLS-Zertifikaten und Authentifizierungsdaten konfiguriert haben, müssen Sie unbedingt überprüfen, ob Ihr Setup ordnungsgemäß funktioniert. Durch das Testen der Verbindung können Sie sicherstellen, dass Ihre Sicherheitskonfigurationen ordnungsgemäß implementiert sind und dass Clients erfolgreich verschlüsselte Verbindungen zum Broker herstellen können. In diesem Abschnitt wird gezeigt, wie Sie Ihre Broker-Verbindung mit dem Mosquitto Command Line Interface (CLI) -Client testen, einem weit verbreiteten MQTT-Client-Tool, das TLS-Verschlüsselung und -Authentifizierung unterstützt.

Verwenden Sie den Mosquitto CLI-Client, um die EMQX-Broker-Verbindung zu testen

In diesem Schritt verwenden wir den Mosquitto CLI-Client, um unser Setup zu testen und sicherzustellen, dass wir mit dem zuvor erstellten Benutzernamen und Passwort erfolgreich eine Verbindung zum Broker herstellen können. Die BrokerCoreDeviceCA.pem folgenden Schritte finden Sie unter Schritt 3: TLS einrichten.

mosquitto_sub -h hostname|ip address \ -p 8883 \ -t "#" \ -q 1 \ -u username -P password \ --cafile BrokerCoreDeviceCA.pem
Anmerkung

Möglicherweise wird ein SSL:Verify-Fehler angezeigt, wenn die hostname/IP Adresse, mit der Sie eine Verbindung herstellen, nicht mit dem Subject Alternative Name (SAN) übereinstimmt, der auf dem CA-Zertifikat steht, das Sie an den Client übergeben. Informationen zum Abrufen eines Zertifikats mit dem richtigen SAN finden Sie unter „Hinzufügen benutzerdefinierter names/IP DNS-Adressen zum TLS-Serverzertifikat“ unter Schritt 3: TLS einrichten.

Zu diesem Zeitpunkt haben alle Benutzer Zugriff darauf, alle Themen auf dem Broker zu veröffentlichen und zu abonnieren. Fahren Sie mit Richten Sie Autorisierungsregeln für AWS IoT SiteWise Edge in EMQX ein fort.

Verwenden Sie Ihre eigene CA

AWS IoT Greengrass beschreibt, wie Sie Ihre eigene Authentifizierungskomponente für Client-Geräte so konfigurieren, dass sie Ihre eigene Zertifizierungsstelle (CA) verwendet. Die Authentifizierungskomponente für Clientgeräte (aws.greengrass.clientdevices.Auth) authentifiziert Client-Geräte und autorisiert Aktionen auf Client-Geräten. Weitere Informationen finden Sie unter Verwenden Ihrer eigenen Zertifizierungsstelle im Entwicklerhandbuch.AWS IoT Greengrass Version 2

Um Ihre eigene Zertifizierungsstelle zu verwenden, fügen Sie die aws.greengrass.clientdevices.Auth Komponente zu Ihrer Bereitstellung hinzu, sodass Sie eine benutzerdefinierte Konfiguration angeben können.

Öffnen Sie Port 8883 für externe Firewallverbindungen

Linux

Fügen Sie in Ihrer Linux-Host-Firewallregel eine eingehende Regel für Port 8883 hinzu, um eingehende Verbindungen von außerhalb des Gateway-Hosts zuzulassen. Wenn Firewalls vorhanden sind, stellen Sie sicher, dass eingehende TLS-Verbindungen auf Port 8883 zulässig sind.

Windows

Fügen Sie in Ihrer Microsoft Windows Host-Firewallregel eine Regel für eingehenden Datenverkehr für Port 8883 hinzu, um eingehende Verbindungen von außerhalb des Gateway-Hosts zuzulassen. Stellen Sie sicher, dass es sich bei der Regel um eine Zulassungsregel vom Typ Port handelt, wobei Port 8883 angegeben wird. Sie können dies entsprechend Ihrer Netzwerkkonfiguration konfigurieren, um Verbindungen von Ihren externen Anwendungen zum Broker zuzulassen.