Freigeben über


Verbinden eines nachgeschalteten Geräts mit einem Azure IoT Edge-Gateway

Gilt für:Häkchen für IoT Edge 1.5 IoT Edge 1.5

Wichtig

IoT Edge 1.5 LTS ist das unterstützte Release. IoT Edge 1.4 LTS wurde am 12. November 2024 eingestellt. Wenn Sie ein früheres Release verwenden, finden Sie weitere Informationen unter Aktualisieren von IoT Edge.

Dieser Artikel enthält Anweisungen zum Einrichten einer vertrauenswürdigen Verbindung zwischen downstreamen Geräten und transparenten IoT Edge-Gateways. In einem transparenten Gatewayszenario senden mindestens ein Gerät Nachrichten über ein einzelnes Gatewaygerät, das die Verbindung mit IoT Hub verwaltet. In diesem Artikel bedeuten die Begriffe Gateway und IoT Edge-Gateway ein IoT Edge-Gerät, das als transparentes Gateway konfiguriert ist.

Hinweis

Ein nachgeschaltetes Gerät sendet Daten direkt an das Internet oder an Gatewaygeräte (IoT Edge-aktiviert oder nicht). Ein untergeordnetes Gerät kann ein nachgeschaltetes Gerät oder ein Gatewaygerät in einer geschachtelten Topologie sein.

Sie richten eine transparente Gatewayverbindung in drei Schritten ein. In diesem Artikel wird der dritte Schritt erläutert.

  1. Konfigurieren Sie das Gatewaygerät als Server, damit nachgeschaltete Geräte sicher mit dem Gerät verbunden werden können. Richten Sie das Gateway ein, um Nachrichten von nachgeschalteten Geräten zu empfangen und an das richtige Ziel weiterzuleiten. Die dazu erforderlichen Schritte finden Sie unter Konfigurieren eines IoT Edge-Geräts als transparentes Gateway.

  2. Erstellen Sie eine Geräteidentität für das nachgeschaltete Gerät, damit sie 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.

  3. Verbinden Sie das nachgeschaltete Gerät mit dem Gatewaygerät, und beginnen Sie mit dem Senden von Nachrichten.

In diesem Artikel werden nachgeschaltete Geräteverbindungskomponenten erläutert, z. B.:

  • Transport Layer Security (TLS) und Zertifikatgrundlagen
  • TLS-Bibliotheken, die auf unterschiedlichen Betriebssystemen funktionieren und Zertifikate unterschiedlich behandeln

Sie durchlaufen Azure IoT-Beispiele in Ihrer bevorzugten Sprache, um Ihr Gerät dazu zu bringen, Nachrichten an das Gateway zu senden.

Voraussetzungen

Für die Vorbereitung Ihres nachgeschalteten Geräts benötigen Sie Folgendes:

Hinweis

Mit IoT Hub registrierte IoT-Geräte können mithilfe von Modulzwillingen verschiedene Prozesse, Hardware oder Funktionen auf einem einzigen Gerät zu isolieren. IoT Edge-Gateways unterstützen Downstreammodulverbindungen mithilfe der symmetrischen Schlüsselauthentifizierung, jedoch nicht der X.509-Zertifikatauthentifizierung.

Grundlegendes zu TLS und Zertifikaten

Die sichere Verbindung nachgeschalteter Geräte mit IoT Edge ähnelt anderen sicheren Client- und Serverkommunikation über das Internet. Ein Client und ein Server kommunizieren mithilfe von Transport Layer Security (TLS) sicher über das Internet. TLS verwendet standardmäßige Public Key-Infrastruktur (PKI)- Konstrukte, die als Zertifikate bezeichnet werden. TLS ist eine detaillierte Spezifikation, die viele Themen im Zusammenhang mit der Sicherung von zwei Endpunkten behandelt. In diesem Abschnitt werden die Konzepte zusammengefasst, die Sie benötigen, um Geräte sicher mit einem IoT Edge-Gateway zu verbinden.

Wenn ein Client eine Verbindung mit einem Server herstellt, stellt der Server eine Kette von Zertifikaten dar, die als Serverzertifikatkette bezeichnet werden. Eine Zertifikatkette verfügt in der Regel über ein Zertifizierungsstellenzertifikat (Root Certificate Authority, CA), ein oder mehrere Zwischenzertifizierungsstellenzertifikate und das Zertifikat des Servers. Der Client vertraut dem Server durch kryptografische Überprüfung der gesamten Serverzertifikatkette. Dieser Prozess wird als Serverkettenüberprüfung bezeichnet. Der Client fordert auch den Server auf, zu beweisen, dass er über den privaten Schlüssel für das Serverzertifikat verfügt, der als Besitznachweis bezeichnet wird. Zusammen werden die Serverkettenüberprüfung und der Besitznachweis als Serverauthentifizierung bezeichnet. Um eine Serverzertifikatkette zu überprüfen, benötigt der Client eine Kopie des Stammzertifizierungsstellenzertifikats, das zum Ausgeben des Serverzertifikats verwendet wird. Beim Herstellen einer Verbindung mit Websites sind Browser vorkonfiguriert mit gängigen Zertifizierungsstellenzertifikaten, sodass der Clientprozess nahtlos ist.

Wenn sich ein Gerät mit Azure IoT Hub verbindet, ist das Gerät der Client und der IoT Hub-Clouddienst der Server. Der IoT Hub-Clouddienst verwendet ein Stammzertifizierungsstellenzertifikat namens Baltimore CyberTrust Root, das öffentlich verfügbar und weit verbreitet ist. Da das IoT Hub CA-Zertifikat bereits auf den meisten Geräten installiert ist, verwenden viele TLS-Implementierungen (OpenSSL, Schannel, LibreSSL) diese automatisch während der Serverzertifikatüberprüfung. Ein Gerät, das eine Verbindung mit IoT Hub herstellt, kann jedoch Probleme beim Herstellen einer Verbindung mit einem IoT Edge-Gateway haben.

Wenn sich ein Gerät mit einem IoT Edge-Gateway verbindet, ist das nachgeschaltete Gerät der Client und das Gatewaygerät der Server. Mit Azure IoT Edge können Sie bei Bedarf Gatewayzertifikatketten erstellen. Sie können ein öffentliches Zertifizierungsstellenzertifikat wie Baltimore oder ein selbstsigniertes (oder internes) Stammzertifizierungsstellenzertifikat verwenden. Öffentliche CA-Zertifikate kosten häufig Geld, daher werden sie normalerweise in Produktionsumgebungen verwendet. Selbstsignierte ZS-Zertifikate werden für Entwicklung und Tests bevorzugt. Die Demozertifikate sind selbstsignierte Zertifikate der Stammzertifizierungsstelle.

Wenn Sie ein selbstsigniertes Stammzertifizierungsstellenzertifikat für ein IoT Edge-Gateway verwenden, müssen Sie es auf allen nachgeschalteten Geräten installieren oder bereitstellen, die eine Verbindung mit dem Gateway herstellen.

Screenshot der Gatewayzertifikateinrichtung.

Weitere Informationen zu IoT Edge-Zertifikaten und Produktionsauswirkungen finden Sie unter IoT Edge-Zertifikatverwendungsdetails.

Bereitstellen des Stamm-ZS-Zertifikats

Um die Zertifikate des Gatewaygeräts zu überprüfen, muss das nachgeschaltete Gerät über eine eigene Kopie des Stamm-ZS-Zertifikats verfügen. Wenn Sie die Skripts im IoT Edge-Git-Repository zum Erstellen von Testzertifikaten verwenden, wird das Zertifikat der Stammzertifizierungsstelle als azure-iot-test-only.root.ca.cert.pem bezeichnet.

Falls noch nicht geschehen, verschieben Sie diese Zertifikatdatei in ein beliebiges Verzeichnis auf Ihrem nachgeschalteten Gerät. Verschieben Sie die Datei, indem Sie das Zertifizierungsstellenzertifikat im Zertifikatspeicher des Betriebssystems installieren oder auf das Zertifikat in Anwendungen verweisen, die die Azure IoT-SDKs verwenden.

Verwenden Sie einen Dienst wie Azure Key Vault oder ein Tool wie secure copy protocol , um die Zertifikatdatei zu verschieben.

Installieren von Zertifikaten im Betriebssystem

Nachdem Sie das Zertifikat der Stammzertifizierungsstelle auf das nachgeschaltete Gerät kopiert haben, stellen Sie sicher, dass Anwendungen, die eine Verbindung mit dem Gateway herstellen, auf das Zertifikat zugreifen können.

Installieren Sie das Zertifikat der Stammzertifizierungsstelle im Zertifikatspeicher des Betriebssystems, damit die meisten Anwendungen es verwenden können. Einige Anwendungen wie Node.jsverwenden nicht den Zertifikatspeicher des Betriebssystems und verwenden stattdessen den internen Zertifikatspeicher der Knotenlaufzeit. Wenn Sie das Zertifikat nicht auf Betriebssystemebene installieren können, wechseln Sie zum Abschnitt "Verwenden von Zertifikaten mit Azure IoT SDKs ".

Installieren Sie das Zertifikat der Stammzertifizierungsstelle unter Ubuntu oder Windows.

Verwenden Sie die folgenden Befehle, um ein Zertifizierungsstellenzertifikat auf einem Ubuntu-Host zu installieren. In diesem Beispiel wird das Zertifikat "azure-iot-test-only.root.ca.cert.pem" aus den Artikeln mit den Voraussetzungen verwendet, wobei davon ausgegangen wird, dass Sie das Zertifikat an einen Speicherort auf dem Downstream-Gerät kopiert haben.

sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates

Wenn Sie fertig sind, wird eine Aktualisierung von Zertifikaten in /etc/ssl/certs angezeigt... 1 hinzugefügt, 0 entfernt; Fertige Nachricht.

Verwenden von Zertifikaten mit Azure IoT SDKs

Azure IoT SDKs verwenden einfache Beispielanwendungen, um eine Verbindung mit einem IoT Edge-Gerät herzustellen. Das Ziel der Beispiele besteht darin, den Geräteclient zu verbinden und Gerätetelemetrienachrichten an das Gateway zu senden und dann die Verbindung zu schließen und zu beenden.

Für die Verwendung der Beispiele auf Anwendungsebene wird Folgendes benötigt:

  • Die IoT Hub-Verbindungszeichenfolge Ihres nachgeschalteten Geräts, die so geändert wurde, dass sie auf das Gatewaygerät verweist.

  • Alle Zertifikate, die erforderlich sind, um Ihr nachgeschaltetes Gerät bei IoT Hub zu authentifizieren. Weitere Informationen finden Sie unter Authentifizieren eines nachgeschalteten Geräts bei Azure IoT Hub.

  • Sie haben den vollständigen Pfad zum Stamm-ZS-Zertifikat kopiert und auf Ihrem nachgeschalteten Gerät gespeichert.

    Beispiel: <file path>/azure-iot-test-only.root.ca.cert.pem

Nun können Sie Zertifikate mit einem Beispiel in der von Ihnen bevorzugten Programmiersprache verwenden:

Dieser Abschnitt enthält eine Beispielanwendung zum Verbinden eines Azure IoT-Node.js-Geräteclients mit einem IoT Edge-Gateway. Für Node.js-Anwendungen müssen Sie das Stammzertifizierungsstellen-Zertifikat auf Anwendungsebene installieren, wie es hier gezeigt ist. Node.js-Anwendungen verwenden nicht den Zertifikatspeicher des Systems.

  1. Rufen Sie das Beispiel für edge_downstream_device.js aus dem Repository für das Azure IoT-Geräte-SDK für Node.js-Beispiele ab.
  2. Stellen Sie sicher, dass alle Voraussetzungen zum Ausführen des Beispiels erfüllt sind, indem Sie die Datei readme.md überprüfen.
  3. Aktualisieren Sie in der Datei „edge_downstream_device_device.js“ die Variablen connectionString und edge_ca_cert_path.
  4. In der SDK-Dokumentation finden Sie Anweisungen zum Ausführen des Beispiels auf Ihrem Gerät.

Zum besseren Verständnis dieses Beispiels zeigt der folgende Codeausschnitt, wie das Client-SDK die Zertifikatsdatei liest und damit eine sichere TLS-Verbindung herstellt:

// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
    ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};

Testen der Gatewayverbindung

Führen Sie diesen Beispielbefehl auf dem nachgeschalteten Gerät aus, um zu testen, ob sie eine Verbindung mit dem Gatewaygerät herstellen kann:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Dieser Befehl überprüft die Verbindung über MQTTS (Port 8883). Wenn Sie ein anderes Protokoll verwenden, passen Sie den Befehl für AMQPS (5671) oder HTTPS (443) an.

Die Ausgabe dieses Befehls kann lang sein und enthält Informationen zu allen Zertifikaten in der Kette. Wenn die Verbindung erfolgreich ist, wird eine Zeile wie Verification: OK oder Verify return code: 0 (ok)angezeigt.

Screenshot der Überprüfung einer Gatewayverbindung.

Problembehandlung bei der Gatewayverbindung

Wenn die nachgeschaltete Geräteverbindung mit seinem Gatewaygerät instabil ist, sollten Sie sich diese Fragen stellen, um das Problem zu beheben.

  • Ist der Hostname des Gateways in der Verbindungszeichenfolge mit dem Hostnamenwert in der IoT Edge-Konfigurationsdatei auf dem Gatewaygerät identisch?
  • Kann der Gatewayhostname in eine IP-Adresse aufgelöst werden? Beheben Sie zeitweilige Verbindungen mithilfe von DNS oder Hinzufügen eines Hostdateieintrags auf dem downstream-Gerät.
  • Sind in Ihrer Firewall Kommunikationsports geöffnet? Stellen Sie sicher, dass die erforderlichen Protokollports (MQTTS:8883, AMQPS:5671, HTTPS:433) zwischen dem nachgeschalteten Gerät und dem transparenten IoT Edge-Gerät geöffnet sind.

Nächste Schritte

Erfahren Sie, wie IoT Edge Offlinefunktionen auf nachgeschaltete Geräte erweitert.