Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:
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.
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.
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.
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:
Ein nachgeschaltetes Gerät.
Dieses Gerät kann eine beliebige Anwendung oder Plattform mit einer identität sein, die in Azure IoT Hub erstellt wurde. In vielen Fällen verwenden Anwendungen das Azure IoT-Geräte-SDK. Ein nachgeschaltetes Gerät kann auch eine Anwendung sein, die auf dem IoT Edge-Gatewaygerät ausgeführt wird.
Später wird in diesem Artikel erläutert, wie Sie ein IoT-Gerät als nachgeschaltetes Gerät verbinden. Wenn Sie ein IoT Edge-Gerät als nachgeschaltetes Gerät verwenden möchten, lesen Sie Verknüpfen von Azure IoT Edge-Geräten zum Erstellen einer Hierarchie (Nested Edge).
Eine Zertifikatdatei von einer Stammzertifizierungsstelle.
Diese Datei wird verwendet, um das Edge-Zertifizierungsstellenzertifikat unter Konfigurieren eines IoT Edge-Geräts zu generieren, das als transparentes Gateway fungiert und auf Ihrem downstream-Gerät verfügbar ist.
Ihr downstreames Gerät verwendet dieses Zertifikat, um die Identität des Gatewaygeräts zu überprüfen. Dieses vertrauenswürdige Zertifikat validiert die TLS-Verbindungen (Transport Layer Security) mit dem Gatewaygerät. Informationen zur Verwendung finden Sie unter Bereitstellung des Root-CA-Zertifikats.
Eine geänderte Verbindungszeichenfolge, die auf das Gatewaygerät verweist.
Informationen zum Ändern Ihrer Verbindungszeichenfolge finden Sie unter Authentifizieren eines nachgeschalteten Geräts bei Azure IoT Hub.
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.
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.
- 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.
- Stellen Sie sicher, dass alle Voraussetzungen zum Ausführen des Beispiels erfüllt sind, indem Sie die Datei readme.md überprüfen.
- Aktualisieren Sie in der Datei „edge_downstream_device_device.js“ die Variablen connectionString und edge_ca_cert_path.
- 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.
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.