Konfigurieren eines IoT Edge-Geräts als transparentes Gateway
Gilt für: IoT Edge 1.5
IoT Edge 1.4
Wichtig
IoT Edge 1.5 LTS und IoT Edge 1.4 LTS sind unterstützte Releases. Das Ende der Lebensdauer von IoT Edge 1.4 LTS wird am 12. November 2024 erreicht. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.
Dieser Artikel enthält detaillierte Anweisungen zur Konfiguration eines IoT Edge-Geräts, das als transparentes Gateway für andere Geräte zur Kommunikation mit IoT Hub dient. In diesem Artikel wird mit dem Begriff IoT Edge-Gateway auf ein IoT Edge-Gerät verwiesen, das als transparentes Gateway konfiguriert wurde. Weitere Informationen finden Sie unter Verwendung eines IoT Edge-Geräts als Gateway.
Hinweis
Nachgeschaltete Geräte können keinen Dateiupload verwenden.
Es gibt drei allgemeine Schritte zum Einrichten einer erfolgreichen Verbindung mit einem transparenten Gateway. In diesem Artikel wird der erste Schritt behandelt:
- Konfigurieren Sie das Gatewaygerät als Server, sodass sich nachgeschaltete Geräte mit ihm sicher verbinden können. Richten Sie das Gateway so ein, dass es Nachrichten von nachgeschalteten Geräten empfängt und an das richtige Ziel weiterleitet.
- Erstellen Sie eine Geräteidentität für das nachgeschaltete Gerät, damit es sich bei IoT Hub authentifizieren kann. Konfigurieren Sie das nachgeschaltete Gerät zum Senden von Nachrichten über das Gatewaygerät. Die Schritte finden Sie unter Authentifizieren eines nachgeschalteten Geräts bei Azure IoT Hub.
- Verbinden Sie das nachgeschaltete Gerät mit dem Gatewaygerät, und beginnen Sie mit dem Senden von Nachrichten. Die dazu erforderlichen Schritte finden Sie unter Verbinden eines nachgeschalteten Geräts mit einem Azure IoT Edge-Gateway.
Damit ein Gerät als Gateway fungieren kann, muss es sichere Verbindungen mit nachgeschalteten Geräten herstellen können. Mit Azure IoT Edge können Sie mithilfe der Public Key-Infrastruktur sichere Verbindungen zwischen Geräten einrichten. In diesem Fall lassen wir zu, dass ein nachgeschaltetes Gerät eine Verbindung mit einem IoT Edge-Gerät, das als transparentes Gateway fungiert, herstellt. Um eine angemessene Sicherheit zu gewährleisten, sollte das nachgeschaltete Gerät die Identität des Gatewaygeräts bestätigen. Diese Überprüfung der Identität verhindert, dass Ihre Geräte Verbindungen mit potenziell schädlichen Gateways herstellen.
Ein nachgeschaltetes Gerät kann eine beliebige Anwendung oder Plattform sein, deren Identität mit dem Azure IoT Hub-Clouddienst erstellt wurde. Diese Anwendungen verwenden häufig das Azure IoT-Geräte-SDK. Ein nachgeschaltetes Gerät kann sogar eine Anwendung sein, die auf dem IoT Edge-Gatewaygerät selbst ausgeführt wird.
Sie können eine beliebige Zertifikatinfrastruktur erstellen, die die für Ihre Gerät-zu-Gateway-Topologie erforderliche Vertrauensstellung ermöglicht. In diesem Artikel wird von der gleichen Zertifikateinrichtung ausgegangen, die Sie auch zum Aktivieren der X.509-Zertifizierungsstellenzertifikat in IoT Hub verwenden. Hierbei ist ein X.509-Zertifizierungsstellenzertifikat einem bestimmten IoT-Hub zugeordnet (der Stammzertifizierungsstelle von IoT Hub), und es sind eine Reihe von Zertifikaten, die mit dieser Zertifizierungsstelle signiert werden, sowie eine Zertifizierungsstelle für die IoT Edge-Geräte vorhanden.
Hinweis
Der in diesem Artikel verwendete Begriff Stammzertifizierungsstellen-Zertifikat (Stamm-ZS-Zertifikat) bezieht sich auf die oberste Zertifizierungsstelle des öffentlichen Zertifikats der PKI-Vertrauenskette. Es muss nicht unbedingt der Zertifikatstamm einer fremden Zertifizierungsstelle sein. In vielen Fällen ist es tatsächlich nur ein öffentliches Zertifikat einer Zwischenzertifizierungsstelle.
In den folgenden Schritten werden Sie durch den Prozess zum Erstellen der Zertifikate und zum Installieren an den richtigen Orten auf dem Gateway geführt. Sie können mit jedem beliebigen Computer Zertifikate generieren und sie dann auf Ihr IoT Edge-Gerät kopieren.
Voraussetzungen
Ein Linux- oder Windows-Gerät, auf dem IoT Edge installiert ist.
Wenn Sie kein Gerät zur Hand haben, können Sie eines in einem virtuellen Azure-Computer erstellen. Führen Sie die Schritte in Bereitstellen Ihres ersten IoT Edge-Moduls auf einem virtuellen Linux-Gerät zum Erstellen eines IoT Hubs, Erstellen eines virtuellen Computers und Konfigurieren der IoT Edge-Runtime aus.
Einrichten des Zertifikats der Gerätezertifizierungsstelle
Für alle IoT Edge-Gateways muss ein Zertifikat der Gerätezertifizierungsstelle installiert sein. Der IoT Edge-Sicherheitsdaemon verwendet das Zertifizierungsstellenzertifikat für IoT Edge-Geräte zum Signieren eines Zertifikats der Workloadzertifizierungsstelle, das wiederum ein Serverzertifikat für IoT Edge Hub signiert. Das Gateway legt dem nachgeschalteten Gerät während der Initiierung der Verbindung sein Serverzertifikat vor. Das nachgeschaltete Gerät überprüft, ob das Serverzertifikat Teil einer Zertifikatskette ist, die zum Zertifikat der Stammzertifizierungsstelle führt. Durch diesen Vorgang kann das nachgeschaltete Gerät bestätigen, dass das Gateway aus einer vertrauenswürdigen Quelle stammt. Weitere Informationen finden Sie unter Grundlegendes zur Verwendung von Zertifikaten durch Azure IoT Edge.
Das Zertifikat der Stammzertifizierungsstelle und das Zertifikat der Gerätezertifizierungsstelle (mit seinem privaten Schlüssel) müssen auf dem IoT-Edge-Gatewaygerät vorhanden und in der IoT Edge-Konfigurationsdatei konfiguriert sein. Beachten Sie, dass in diesem Fall Zertifikat der Stammzertifizierungsstelle die oberste Zertifizierungsstelle für dieses IoT Edge-Szenario ist. Für das Zertifikat der Stammzertifizierungsstelle des Gatewaygeräts und die nachgeschalteten Geräte müssen Sie ein Rollup auf das gleiche Zertifikat der Stammzertifizierungsstelle ausführen.
Tipp
Der Installationsprozess des Zertifikats der Stammzertifizierungsstelle und des Zertifikats der Gerätezertifizierungsstelle auf einem IoT Edge-Gerät wird auch ausführlicher in Verwalten von Zertifikaten auf einem IoT Edge-Gerät erläutert.
Halten Sie die folgenden Dateien bereit:
- Zertifikat der Stammzertifizierungsstelle
- Zertifikat der Gerätezertifizierungsstelle
- Privater Schlüssel des Zertifikats der Gerätezertifizierungsstelle
In Produktionsszenarios sollten diese Dateien mit ihrer eigenen Zertifizierungsstelle generiert werden. Für Entwicklungs- und Testszenarios können Sie Demozertifikate verwenden.
Erstellen von Demozertifikaten
Wenn Sie keine eigene Zertifizierungsstelle haben und Demozertifikate verwenden möchten, folgen Sie den Anleitungen unter Erstellen von Demozertifikaten zum Testen der Features von IoT Edge-Geräten zum Erstellen Ihrer Dateien. Auf dieser Seite müssen Sie die folgenden Schritte ausführen:
- Richten Sie zuerst die Skripts zum Erstellen von Zertifikaten auf Ihrem Gerät ein.
- Erstellen Sie ein Stammzertifikat der Zertifizierungsstelle. Am Ende dieser Anleitungen haben Sie eine Zertifikatdatei der Stammzertifizierungsstelle
<path>/certs/azure-iot-test-only.root.ca.cert.pem
. - Erstellen Sie Zertifizierungsstellenzertifikate für IoT Edge-Geräte. Am Ende dieser Anleitungen haben Sie ein Zertifikat der Gerätezertifizierungsstelle
<path>/certs/iot-edge-device-ca-<cert name>-full-chain.cert.pem
und den zugehörigen privaten Schlüssel<path>/private/iot-edge-device-ca-<cert name>.key.pem
.
Kopieren von Zertifikaten auf das Gerät
Überprüfen Sie, ob das Zertifikat die Formatanforderungen erfüllt.
Wenn Sie die Zertifikate auf einem anderen Computer erstellt haben, kopieren Sie sie auf Ihr IoT Edge-Gerät. Sie können dazu einen USB-Datenträger, einen Dienst wie Azure Key Vault oder eine Funktion wie Secure file copy verwenden.
Verschieben Sie die Dateien in das bevorzugte Verzeichnis für Zertifikate und Schlüssel. Verwenden Sie
/var/aziot/certs
für Zertifikate und/var/aziot/secrets
für Schlüssel.Erstellen Sie die Zertifikate und Schlüsselverzeichnisse, und legen Sie Berechtigungen fest. Sie sollten Ihre Zertifikate und Schlüssel im bevorzugten Verzeichnis
/var/aziot
speichern. Verwenden Sie/var/aziot/certs
für Zertifikate und/var/aziot/secrets
für Schlüssel.# If the certificate and keys directories don't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs sudo mkdir -p /var/aziot/secrets sudo chown aziotks:aziotks /var/aziot/secrets sudo chmod 700 /var/aziot/secrets
Ändern Sie den Besitz und die Berechtigungen der Zertifikate und Schlüssel.
# Give aziotcs ownership to certificates # Read and write for aziotcs, read-only for others sudo chown -R aziotcs:aziotcs /var/aziot/certs sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \; # Give aziotks ownership to private keys # Read and write for aziotks, no permission for others sudo chown -R aziotks:aziotks /var/aziot/secrets sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;
Konfigurieren von Zertifikaten auf dem Gerät
Öffnen Sie auf Ihrem IoT Edge-Gerät die Konfigurationsdatei:
/etc/aziot/config.toml
. Wenn Sie IoT Edge für Linux unter Windows verwenden, müssen Sie mithilfe des PowerShell-CmdletsConnect-EflowVm
eine Verbindung mit dem virtuellen EFLOW-Computer herstellen.Tipp
Wenn die Konfigurationsdatei auf dem Gerät noch nicht vorhanden ist, verwenden Sie
/etc/aziot/config.toml.edge.template
als Vorlage zum Erstellen einer Datei.Suchen Sie den Parameter
trust_bundle_cert
. Heben Sie die Auskommentierung dieser Zeile auf, und geben Sie den Datei-URI zur Datei mit dem Zertifikat der Stammzertifizierungsstelle auf Ihrem Gerät an.Suchen Sie in der Datei den Abschnitt
[edge_ca]
. Heben Sie die Auskommentierung der drei Zeilen in diesem Abschnitt auf, und geben Sie die Datei-URIs zu Ihren Zertifikats- und Schlüsseldateien als Werte für die folgenden Eigenschaften an:- cert: Zertifikat der Gerätezertifizierungsstelle
- pk: privater Schlüssel des Zertifikats der Gerätezertifizierungsstelle
Speichern und schließen Sie die Datei.
Wenden Sie Ihre Änderungen an.
sudo iotedge config apply
Bereitstellen von edgeHub und Weiterleiten von Nachrichten
Nachgeschaltete Geräte senden Telemetriedaten und Nachrichten an das Gatewaygerät, wobei das Modul „IoT Edge-Hub“ für das Routing der Informationen an andere Module oder IoT Hub zuständig ist. Sorgen Sie für Folgendes, um Ihr Gatewaygerät für diese Funktion vorzubereiten:
Das Modul „IoT Edge-Hub“ wird auf dem Gerät bereitgestellt.
Wenn Sie IoT Edge zum ersten Mal auf einem Gerät installieren, startet nur ein Systemmodul automatisch: der IoT Edge-Agent. Nachdem Sie die erste Bereitstellung für ein Gerät erstellt haben, wird das zweite Systemmodul und der IoT Edge-Hub ebenfalls gestartet. Wenn das Modul edgeHub auf Ihrem Gerät nicht ausgeführt wird, erstellen Sie eine Bereitstellung für das Gerät.
Für das Modul „IoT Edge-Hub“ wurden Routen zur Verarbeitung eingehender Nachrichten von nachgeschalteten Geräten eingerichtet.
Für das Gatewaygerät muss eine Route vorhanden sein, damit Nachrichten von nachgeschalteten Geräten verarbeitet werden können. Andernfalls ist eine Verarbeitung nicht möglich. Sie können die Nachrichten an Module auf dem Gatewaygerät oder direkt an IoT Hub senden.
Führen Sie die folgenden Schritte aus, um das Modul „IoT Edge-Hub“ bereitzustellen und mit Routen zur Verarbeitung eingehender Nachrichten von nachgeschalteten Geräten zu konfigurieren:
Navigieren Sie im Azure-Portal zu Ihrem IoT Hub.
Wechseln Sie im Geräteverwaltung-Menü zu Geräte und wählen Sie das IoT Edge-Gerät aus, das Sie als Gateway verwenden möchten.
Wählen Sie Module festlegen aus.
Auf der Seite Module können Sie alle Module hinzufügen, die Sie auf dem Gatewaygerät bereitstellen möchten. Für den Zweck dieses Artikels konzentrieren wir uns auf die Konfiguration und Bereitstellung des Moduls „edgeHub“, das auf dieser Seite nicht explizit festgelegt werden muss.
Wählen Sie Weiter: Routen aus.
Stellen Sie auf der Seite Routen sicher, dass es eine Route zum Verarbeiten von Nachrichten von nachgeschalteten Geräten gibt. Zum Beispiel:
Eine Route, die alle Nachrichten – ganz gleich, ob von einem Modul oder einem nachgeschalteten Gerät – an IoT Hub sendet:
- Name:
allMessagesToHub
- Wert:
FROM /messages/* INTO $upstream
- Name:
Eine Route, die sämtliche Nachrichten von allen nachgeschalteten Geräten an IoT Hub sendet:
- Name:
allDownstreamToHub
- Wert:
FROM /messages/* WHERE NOT IS_DEFINED ($connectionModuleId) INTO $upstream
Diese Route funktioniert, weil Nachrichten von nachgeschalteten Geräten – im Gegensatz zu Nachrichten von IoT Edge Modulen – keine Modul-ID zugeordnet ist. Mithilfe der WHERE-Klausel der Route können alle Nachrichten mit dieser Systemeigenschaft herausgefiltert werden.
Weitere Informationen zum Routing von Nachrichten finden Sie unter Bereitstellen von Modulen und Einrichten von Routen.
- Name:
Nachdem Ihre Route(n) erstellt wurde(n), wählen Sie Überprüfen + erstellen aus.
Wählen Sie auf der Seite Überprüfen + erstellen die Option Erstellen aus.
Öffnen von Ports auf dem Gatewaygerät
Standard IoT Edge-Geräte benötigen keine eingehende Verbindung, um zu funktionieren, da die gesamte Kommunikation mit dem IoT Hub über ausgehende Verbindungen erfolgt. Gatewaygeräte unterscheiden sich dadurch, dass sie in der Lage sein müssen, Nachrichten von ihren nachgeschalteten Geräten zu empfangen. Wenn zwischen den nachgeschalteten Geräten und dem Gatewaygerät eine Firewall ist, muss die Kommunikation auch über die Firewall möglich sein.
Damit ein Gatewayszenario funktioniert, muss mindestens eines der unterstützten Protokolle des IoT Edge-Hubs für den eingehenden Datenverkehr von nachgeschalteten Geräten offen sein. Die unterstützten Protokolle sind MQTT, AMQP, HTTPS, MQTT über WebSockets und AMQP über WebSockets.
Port | Protokoll |
---|---|
8883 | MQTT |
5671 | AMQP |
443 | HTTPS MQTT+WS AMQP+WS |
Nächste Schritte
Da nun ein IoT Edge-Gerät als transparentes Gateway eingerichtet ist, müssen Sie Ihre nachgeschalteten Geräte so konfigurieren, dass sie dem Gateway vertrauen und Nachrichten daran senden. Lesen Sie Authentifizieren eines nachgeschalteten Geräts bei Azure IoT Hub, um die nächsten Schritte zum Einrichten Ihres Szenarios eines transparenten Gateways auszuführen.