Schnellstart: Bereitstellen eines simulierten Geräts mit X.509-Zertifikat
In diesem Schnellstart erstellen Sie ein simuliertes Gerät auf Ihrem Windows-Computer. Das simulierte Gerät wird für die Verwendung des X.509-Zertifikatnachweises zur Authentifizierung konfiguriert. Nachdem Sie Ihr Gerät konfiguriert haben, stellen Sie es mithilfe des Azure IoT Hub Device Provisioning Service für Ihren IoT-Hub bereit.
Wenn Sie mit dem Prozess der Bereitstellung noch nicht vertraut sind, sollten Sie zunächst die Übersicht zur Bereitstellung lesen. Vergewissern Sie sich außerdem, dass Sie die Schritte unter Einrichten des IoT Hub Device Provisioning-Diensts über das Azure-Portal ausgeführt haben, bevor Sie fortfahren.
In dieser Schnellstartanleitung wird eine Projektmappe für eine Windows-Arbeitsstation gezeigt. Sie können die Schritte aber auch unter Linux ausführen. Ein Beispiel für Linux finden Sie im Tutorial: Bereitstellen für Geolatenz.
Voraussetzungen
Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
Führen Sie die Schritte im Artikel Einrichten des IoT Hub Device Provisioning Service im Azure-Portal aus.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie Visual Studio 2022 mit der aktivierten Workload Desktopentwicklung mit C++. Visual Studio 2015, Visual Studio 2017 und Visual Studio 2019 werden ebenfalls unterstützt. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das neueste CMake-Buildsystem. Überprüfen Sie unbedingt die Option, mit der die ausführbare Datei „CMake“ Ihrem Pfad hinzugefügt wird.
Wichtig
Vergewissern Sie sich vor Beginn der Installation von
CMake
, dass die erforderlichen Visual Studio-Komponenten (Visual Studio und die Workload „Desktopentwicklung mit C++“) auf dem Computer installiert sind. Sobald die Voraussetzungen erfüllt sind und der Download überprüft wurde, installieren Sie das CMake-Buildsystem. Beachten Sie auch, dass ältere Versionen des CMake-Buildsystems die in diesem Artikel verwendete Projektmappendatei nicht generieren können. Stellen Sie sicher, dass Sie die neueste Version von CMake verwenden.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das .NET SDK 6.0 oder höher auf Ihrem Windows-Computer. Sie können den folgenden Befehl ausführen, um Ihre Version zu überprüfen:
dotnet --info
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
- Installieren Sie Node.js v4.0 oder höher auf Ihrem Computer.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung.
- Python 3.6 oder höher auf Ihrem Computer.
Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung. Informationen zu Linux oder macOS finden Sie in der SDK-Dokumentation im entsprechenden Abschnitt unter Vorbereiten Ihrer Entwicklungsumgebung.
Installieren Sie das Java SE Development Kit 8 oder höher auf Ihrem Computer.
Laden Sie Maven herunter, und installieren Sie es.
Installieren Sie die aktuelle Version von Git. Stellen Sie sicher, dass Git den Umgebungsvariablen hinzugefügt wurde, auf die das Befehlsfenster Zugriff hat. Unter den Git-Clienttools von Software Freedom Conservancy finden Sie die neueste Version der zu installierenden
git
-Tools. Hierzu zählt auch die Befehlszeilen-App Git Bash, über die Sie mit Ihrem lokalen Git-Repository interagieren können.Sorgen Sie dafür, dass OpenSSL auf Ihrem Computer installiert wird. Unter Windows enthält Ihre Git-Installation eine Installation von OpenSSL. Sie können über die Git Bash-Eingabeaufforderung auf OpenSSL zugreifen. Zur Überprüfung, ob OpenSSL installiert ist, öffnen Sie eine Git Bash-Eingabeaufforderung, und geben Sie
openssl version
ein.Hinweis
Außer wenn Sie mit OpenSSL vertraut sind und es auf Ihrem Windows-Computer bereits installiert haben, empfehlen wir die Verwendung von OpenSSL über die Git Bash-Eingabeaufforderung. Alternativ können Sie den Quellcode herunterladen und OpenSSL erstellen. Weitere Informationen dazu finden Sie auf der Seite OpenSSL-Downloads. Oder Sie können vordefiniertes OpenSSL von einem Drittanbieter herunterladen. Weitere Informationen dazu finden Sie im OpenSSL-Wiki. Microsoft garantiert nicht die Gültigkeit von Paketen, die von Drittanbietern heruntergeladen wurden. Wenn Sie OpenSSL erstellen oder herunterladen möchten, sorgen Sie dafür, dass auf die OpenSSL-Binärdatei in Ihrem Pfad zugegriffen werden kann und dass die Umgebungsvariable
OPENSSL_CNF
auf den Pfad Ihrer Datei openssl.cnf festgelegt wird.Öffnen Sie sowohl eine Windows-Eingabeaufforderung als auch eine Git Bash-Eingabeaufforderung.
Bei den Schritten in diesem Schnellstart wird davon ausgegangen, dass Sie einen Windows-Computer und die OpenSSL-Installation verwenden, die als Teil von Git installiert wurde. Sie verwenden die Git Bash-Eingabeaufforderung für die Ausgabe von OpenSSL-Befehlen und die Windows-Eingabeaufforderung für alles andere. Wenn Sie Linux verwenden, können Sie alle Befehle aus einer Bash-Shell ausgeben.
Vorbereiten Ihrer Entwicklungsumgebung
In diesem Abschnitt bereiten Sie eine Entwicklungsumgebung vor, die zum Erstellen des Azure IoT C SDK verwendet wird. Mit dem Beispielcode wird versucht, das Gerät während der Startsequenz des Geräts bereitzustellen.
Öffnen Sie einen Webbrowser, und wechseln Sie zur Releaseseite für das Azure IoT C SDK.
Wählen Sie oben auf der Seite die Registerkarte Tags aus.
Kopieren Sie den Tagnamen für das aktuelle Release des Azure IoT C SDK.
Führen Sie in Ihrer Windows-Eingabeaufforderung die folgenden Befehle zum Klonen des aktuellen Releases des GitHub-Repositorys Azure IoT-Geräte-SDK für C aus. Ersetzen Sie
<release-tag>
durch das Tag, das Sie im vorherigen Schritt kopiert haben. Beispiel:lts_01_2023
.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
Dieser Vorgang kann mehrere Minuten dauern.
Wenn der Vorgang abgeschlossen ist, führen Sie die folgenden Befehle aus dem Verzeichnis
azure-iot-sdk-c
aus:mkdir cmake cd cmake
Das Codebeispiel verwendet ein X.509-Zertifikat für den Nachweis mittels X.509-Authentifizierung. Erstellen Sie mithilfe des folgenden Befehls eine spezifische SDK-Version für Ihre Entwicklungsplattform, die den Gerätebereitstellungsclient enthält. Im
cmake
-Verzeichnis wird eine Visual Studio-Projektmappe für das simulierte Gerät generiert.Wenn Sie im folgenden Befehl den verwendeten Pfad mit
-Dhsm_custom_lib
angeben, müssen Sie unbedingt den absoluten Pfad zur Bibliothek in dem zuvor erstellten Verzeichniscmake
verwenden. Beim gezeigten Pfad wird davon ausgegangen, dass Sie das C-SDK im Stammverzeichnis des Laufwerks „C:“ geklont haben. Wenn Sie ein anderes Verzeichnis verwendet haben, passen Sie den Pfad entsprechend an.
Tipp
Falls cmake
Ihren C++-Compiler nicht findet, treten beim Ausführen des obigen Befehls unter Umständen Buildfehler auf. Führen Sie den Befehl in diesem Fall an der Visual Studio-Eingabeaufforderung aus.
Nach erfolgreicher Erstellung ähneln die letzten Ausgabezeilen der folgenden Ausgabe:
-- Building for: Visual Studio 17 2022 -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000. -- The C compiler identification is MSVC 19.32.31329.0 -- The CXX compiler identification is MSVC 19.32.31329.0 ... -- Configuring done -- Generating done -- Build files have been written to: C:/azure-iot-sdk-c/cmake
Klonen Sie in Ihrer Windows-Eingabeaufforderung das GitHub-Repository mit dem Azure IoT SDK für C# mithilfe des folgenden Befehls:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Klonen Sie in Ihrer Windows-Eingabeaufforderung das GitHub-Repository mit den Azure IoT-SDK für Node.js mithilfe des folgenden Befehls:
git clone https://github.com/Azure/azure-iot-sdk-node.git
Klonen Sie in Ihrer Windows-Eingabeaufforderung das GitHub-Repository Azure IoT-Geräte-SDK für Python mithilfe des folgenden Befehls:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
Hinweis
Die in diesem Tutorial verwendeten Beispiele befinden sich im v2-Branch des Repositorys „azure-iot-sdk-python“. V3 des Python SDK ist für die Verwendung in der Betaversion verfügbar.
Klonen Sie in Ihrer Windows-Eingabeaufforderung das GitHub-Repository mit den Azure IoT-Beispielen für Java mithilfe des folgenden Befehls:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Navigieren Sie zum Stammverzeichnis
azure-iot-sdk-java
, und erstellen Sie das Projekt, um alle erforderlichen Pakete herunterzuladen.cd azure-iot-sdk-java mvn install -DskipTests=true
Erstellen eines selbstsignierten X.509-Gerätezertifikats
In diesem Abschnitt verwenden Sie OpenSSL zum Erstellen eines selbstsignierten X.509-Zertifikats und eines privaten Schlüssels. Dieses Zertifikat wird in Ihre Instanz des Bereitstellungsdiensts hochgeladen und vom Dienst überprüft.
Achtung
Verwenden Sie mit OpenSSL erstellte Zertifikate in diesem Schnellstart nur für Entwicklungstests. Verwenden Sie diese Zertifikate nicht in der Produktionsumgebung. Diese Zertifikate laufen nach 30 Tagen ab und enthalten möglicherweise hartcodierte Kennwörter, z. B. 1234. Informationen zum Abrufen von Zertifikaten, die für den Einsatz in der Produktion geeignet sind, finden Sie in der Azure IoT Hub-Dokumentation unter Abrufen eines X.509-Zertifizierungsstellenzertifikats.
Führen Sie die Schritte in diesem Abschnitt in Ihrer Git Bash-Eingabeaufforderung aus.
Navigieren Sie in Ihrer Git Bash-Eingabeaufforderung zu dem Verzeichnis, in dem Sie Ihre Zertifikate erstellen möchten.
Führen Sie den folgenden Befehl aus:
winpty openssl req -outform PEM -x509 -sha256 -newkey rsa:4096 -keyout device-key.pem -out device-cert.pem -days 30 -extensions usr_cert -addext extendedKeyUsage=clientAuth -subj "//CN=my-x509-device"
Wichtig
Der zusätzliche Schrägstrich für den Antragstellernamen (
//CN=my-x509-device
) ist nur erforderlich, um die Zeichenfolge für Git auf Windows-Plattformen mit einem Escapezeichen zu versehen.Wenn die Aufforderung PEM-Passphrase eingeben: angezeigt wird, verwenden Sie die Passphrase
1234
.Wenn Sie zum Bestätigen der PEM-Passphrase aufgefordert werden, geben Sie die Passphrase
1234
erneut ein.Eine Datei für das öffentliche Schlüsselzertifikat (device-cert.pem) und eine Datei für den privaten Schlüssel (device-key.pem) sollten jetzt in dem Verzeichnis generiert werden, in dem Sie den Befehl
openssl
ausgeführt haben.Für die Zertifikatdatei ist der CN des Antragstellers auf
my-x509-device
festgelegt. Bei X.509-basierten Registrierungen wird die Registrierungs-ID auf den allgemeinen Namen festgelegt. Die Registrierungs-ID ist eine von der Groß- und Kleinschreibung unabhängige Zeichenfolge aus alphanumerischen Zeichen und Sonderzeichen:'-'
,'.'
,'_'
,':'
. Das letzte Zeichen muss alphanumerisch oder ein Bindestrich ('-'
) sein. Der allgemeine Name muss diesem Format entsprechen. DPS unterstützt Registrierungs-IDs mit einer Länge von bis zu 128 Zeichen; die maximale Länge des allgemeinen Namens des Antragstellers in einem X.509-Zertifikat beträgt jedoch 64 Zeichen. Die Registrierungs-ID ist daher auf 64 Zeichen beschränkt, wenn Sie X.509-Zertifikate verwenden.Die Zertifikatdatei ist Base64-codiert. Wenn Sie den allgemeinen Namen (Common Name, CN) des Antragstellers und andere Eigenschaften der Zertifikatdatei anzeigen möchten, geben Sie den folgenden Befehl ein:
Certificate: Data: Version: 3 (0x2) Serial Number: 77:3e:1d:e4:7e:c8:40:14:08:c6:09:75:50:9c:1a:35:6e:19:52:e2 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = my-x509-device Validity Not Before: May 5 21:41:42 2022 GMT Not After : Jun 4 21:41:42 2022 GMT Subject: CN = my-x509-device Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit) Modulus: 00:d2:94:37:d6:1b:f7:43:b4:21:c6:08:1a:d6:d7: e6:40:44:4e:4d:24:41:6c:3e:8c:b2:2c:b0:23:29: ... 23:6e:58:76:45:18:03:dc:2e:9d:3f:ac:a3:5c:1f: 9f:66:b0:05:d5:1c:fe:69:de:a9:09:13:28:c6:85: 0e:cd:53 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Authority Key Identifier: keyid:63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Extended Key Usage: TLS Web Client Authentication Signature Algorithm: sha256WithRSAEncryption 82:8a:98:f8:47:00:85:be:21:15:64:b9:22:b0:13:cc:9e:9a: ed:f5:93:b9:4b:57:0f:79:85:9d:89:47:69:95:65:5e:b3:b1: ... cc:b2:20:9a:b7:f2:5e:6b:81:a1:04:93:e9:2b:92:62:e0:1c: ac:d2:49:b9:36:d2:b0:21
Der Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234
.
Lassen Sie die Git Bash-Eingabeaufforderung geöffnet. Sie benötigen sie im weiteren Verlauf dieses Schnellstarts.
Der C#-Beispielcode ist für die Verwendung von X.509-Zertifikaten konzipiert, die in einer kennwortgeschützten Datei im PKCS12-Format (certificate.pfx
) gespeichert sind. Sie benötigen noch die Datei für das öffentliche Schlüsselzertifikat im PEM-Format (device-cert.pem
), die Sie gerade erstellt haben, um im weiteren Verlauf dieses Schnellstarts einen einzelnen Registrierungseintrag zu erstellen.
Geben Sie zum Generieren der von dem Beispiel erwarteten Datei im PKCS12-Format den folgenden Befehl ein:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234
.Wenn die Aufforderung Enter Export Password: (Exportkennwort eingeben) angezeigt wird, verwenden Sie das Kennwort
1234
.Wenn die Aufforderung Verifying – Enter Export Password: (Überprüfen – Kennwort eingeben) angezeigt wird, verwenden Sie erneut das Kennwort
1234
.Jetzt sollte eine Zertifikatdatei im PKCS12-Format (certificate.pfx) in dem Verzeichnis generiert werden, in dem Sie den Befehl
openssl
ausgeführt haben.Kopieren Sie die Zertifikatdatei im PKCS12-Format in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das Beispiel-Repository heruntergeladen haben.
cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Der Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234
.Kopieren Sie das Gerätezertifikat und den unverschlüsselten privaten Schlüssel in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das SDK heruntergeladen haben.
cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Kopieren Sie das Gerätezertifikat und den privaten Schlüssel in das Projektverzeichnis für das Beispiel zur X.509-Gerätebereitstellung. Der angegebene Pfad ist relativ zu dem Speicherort, in den Sie das SDK heruntergeladen haben.
cp device-cert.pem ./azure-iot-sdk-python/samples/async-hub-scenarios cp device-key.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
Sie benötigen die Git Bash-Eingabeaufforderung nicht für den Rest dieses Schnellstarts. Möglicherweise möchten Sie sie aber geöffnet lassen, damit Sie Ihr Zertifikat überprüfen können, wenn in späteren Schritten Probleme auftreten.
Der Java-Beispielcode erfordert einen privaten Schlüssel, der nicht verschlüsselt ist. Führen Sie den folgenden Befehl aus, um einen unverschlüsselten privaten Schlüssel zu erstellen:
Wenn die Aufforderung Enter pass phrase for device-key.pem (Passphrase für device-key.pem eingeben) angezeigt wird, verwenden Sie dieselbe Passphrase wie zuvor,
1234
.
Lassen Sie die Git Bash-Eingabeaufforderung geöffnet. Sie benötigen sie im weiteren Verlauf dieses Schnellstarts.
Erstellen einer Geräteregistrierung
In Azure IoT Device Provisioning Service werden zwei Registrierungsarten unterstützt:
- Registrierungsgruppen: Für die Registrierung mehrerer verbundener Geräte
- Individuelle Registrierung: Für die Registrierung eines einzelnen Geräts
In diesem Artikel wird veranschaulicht, wie eine individuelle Registrierung für ein einzelnes Gerät, das mit einem IoT-Hub bereitgestellt werden soll, durchgeführt wird.
Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Dienstinstanz für die Gerätebereitstellung.
Wählen Sie im Navigationsmenü im Abschnitt Einstellungen die Option Registrierungen verwalten aus.
Wählen Sie die Registerkarte Individuelle Registrierungen und dann Individuelle Registrierung hinzufügen aus.
Geben Sie unter Registrierung und Bereitstellung der Seite Registrierung hinzufügen die folgenden Informationen an, um die Registrierungsdetails zu konfigurieren:
Feld Beschreibung Nachweis Wählen Sie X.509-Clientzertifikate als Nachweismechanismus aus. Einstellungen des X.509-Zertifikats Laden Sie ein oder zwei Zertifikate hoch, die zum Überprüfen des Geräts für diese Registrierung verwendet werden. Bereitstellungsstatus Aktivieren Sie das Kontrollkästchen Diese Registrierung aktivieren, wenn diese Registrierung für die Bereitstellung des Geräts verfügbar sein soll. Deaktivieren Sie dieses Kontrollkästchen, wenn die Registrierung deaktiviert werden soll. Sie können diese Einstellung später ändern. Richtlinie für die erneute Bereitstellung Wählen Sie eine Richtlinie für die erneute Bereitstellung aus, die angibt, wie DPS Geräte, die eine erneute Bereitstellung anfordern, handhaben soll. Weitere Informationen finden Sie unter Richtlinien für die erneute Bereitstellung. Wählen Sie Weiter: IoT-Hubs aus.
Geben Sie auf der Registerkarte IoT-Hubs der Seite Registrierung hinzufügen die folgenden Informationen an, um zu bestimmen, für welche IoT-Hubs die Registrierung Geräte bereitstellen kann:
Feld Beschreibung Ziel-IoT-Hubs Wählen Sie einen oder mehrere Ihrer verknüpften IoT-Hubs aus, oder fügen Sie einem IoT-Hub einen neuen Link hinzu. Weitere Informationen zum Verknüpfen von IoT-Hubs mit Ihrer DPS-Instanz finden Sie unter Verknüpfen und Verwalten von IoT-Hubs. Zuordnungsrichtlinie Wenn Sie mehrere verknüpfte IoT-Hubs ausgewählt haben, wählen Sie aus, wie Sie den verschiedenen Hubs Geräte zuweisen möchten. Weitere Informationen zu Zuordnungsrichtlinien finden Sie unter Verwenden von Zuordnungsrichtlinien.
Wenn Sie nur einen verknüpften IoT-Hub ausgewählt haben, empfehlen wir die Verwendung der Richtlinie Gleichmäßig gewichtete Verteilung.Wählen Sie Weiter: Geräteeinstellungen aus
Geben Sie auf der Registerkarte Geräteeinstellungen der Seite Registrierung hinzufügen die folgenden Informationen an, um zu definieren, wie neu bereitgestellte Geräte konfiguriert werden sollen:
Feld Beschreibung Geräte-ID Geben Sie eine Geräte-ID an, die dem bereitgestellten Gerät im IoT-Hub zugewiesen wird. Wenn Sie keine Geräte-ID angeben, wird die Registrierungs-ID verwendet. IoT Edge Aktivieren Sie das Kontrollkästchen IoT Edge auf bereitgestellten Geräten aktivieren, wenn auf dem bereitgestellten Gerät Azure IoT Edge ausgeführt wird. Deaktivieren Sie dieses Kontrollkästchen, wenn diese Registrierung für ein Gerät ohne IoT Edge aktiviert ist. Gerätetags Verwenden Sie dieses Textfeld, um alle Tags anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten. Gewünschte Eigenschaften Verwenden Sie dieses Textfeld, um alle gewünschten Eigenschaften anzugeben, die Sie auf den Gerätezwilling des bereitgestellten Geräts anwenden möchten. Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.
Klicken Sie auf Weiter: Überprüfen + erstellen.
Überprüfen Sie auf der Registerkarte Überprüfen + erstellen all Ihre Werte, und wählen Sie dann Erstellen aus.
Vorbereiten und Ausführen des Gerätebereitstellungscodes
In diesem Abschnitt aktualisieren Sie den Beispielcode, um die Startsequenz des Geräts an Ihre Device Provisioning-Dienstinstanz zu senden. Diese Startsequenz bewirkt, dass das Gerät erkannt und einem IoT-Hub zugewiesen wird, der mit der DPS-Instanz verknüpft ist.
In diesem Abschnitt verwenden Sie Ihre Git Bash-Eingabeaufforderung und die Visual Studio-IDE.
Konfigurieren des Codes für die Bereitstellung des Geräts
In diesem Abschnitt aktualisieren Sie den Beispielcode mit den Informationen zu Ihrer Device Provisioning Service-Instanz.
Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.
Kopieren Sie den Wert von ID-Bereich.
Starten Sie Visual Studio, und öffnen Sie die neue Projektmappendatei, die im Verzeichnis
cmake
erstellt wurde, das Sie im Stammverzeichnis des Git-Repositorys „azure-iot-sdk-c“ erstellt haben. Die Projektmappendatei hat den Namenazure_iot_sdks.sln
.Navigieren Sie im Projektmappen-Explorer von Visual Studio zu Provision_Samples > prov_dev_client_sample > Source Files, und öffnen Sie prov_dev_client_sample.c.
Suchen Sie die Konstante
id_scope
, und ersetzen Sie den Wert durch Ihren Wert ID-Bereich, den Sie in Schritt 2 kopiert haben.static const char* id_scope = "0ne00000A0A";
Suchen Sie die Definition für die Funktion
main()
in der gleichen Datei. Stellen Sie sicher, dass die Variablehsm_type
aufSECURE_DEVICE_TYPE_X509
festgelegt ist.SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Speichern Sie die Änderungen.
Klicken Sie mit der rechten Maustaste auf das Projekt prov_dev_client_sample, und wählen Sie Als Startprojekt festlegen aus.
Konfigurieren des Stubcodes für das benutzerdefinierte HSM
Die Details der Interaktion mit sicherem hardwarebasiertem Speicher in der Praxis variieren je nach Hardware. Deshalb werden das Zertifikat und der private Schlüssel, die von dem simulierten Gerät in diesem Schnellstart verwendet werden, im Stubcode für das benutzerdefinierte Hardwaresicherheitsmodul (HSM) hart codiert.
So aktualisieren Sie den Stubcode für das benutzerdefinierte HSM zum Simulieren der Identität des Geräts mit der ID my-x509-device
:
Navigieren Sie im Projektmappen-Explorer von Visual Studio zu Provision_Samples> custom_hsm_example > Source Files, und öffnen Sie custom_hsm_example.c.
Aktualisieren Sie den Zeichenfolgenwert der Zeichenfolgenkonstante
COMMON_NAME
mit dem allgemeinen Namen, den Sie beim Generieren des Gerätezertifikatsmy-x509-device
verwendet haben.static const char* const COMMON_NAME = "my-x509-device";
Aktualisieren Sie den Zeichenfolgenwert der konstanten Zeichenfolge
CERTIFICATE
mithilfe des zuvor generierten Gerätezertifikats, device-cert.pem.Die Syntax des Zertifikattexts im Beispiel muss dem folgenden Muster (ohne zusätzliche Leerstellen oder eine Analyse durch Visual Studio) entsprechen.
static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
CERTIFICATE
und schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pem
Kopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
PRIVATE_KEY
mit dem unverschlüsselten privaten Schlüssel für Ihr Gerätezertifikat, unencrypted-device-key.pem.Die Syntax des Texts zum privaten Schlüssel muss dem folgenden Muster ohne zusätzliche Leerstellen oder eine Analyse durch Visual Studio entsprechen.
static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n" "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" "-----END RSA PRIVATE KEY-----";
Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
PRIVATE_KEY
und schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pem
Kopieren Sie den ausgegebenen Text zum privaten Schlüssel für den konstanten Wert, und fügen Sie ihn ein.
Speichern Sie die Änderungen.
Klicken Sie mit der rechten Maustaste auf das Projekt custom_hsm_-_example, und wählen Sie Erstellen aus.
Wichtig
Sie müssen das Projekt custom_hsm_example erstellen, bevor Sie die restliche Projektmappe im nächsten Abschnitt erstellen.
Ausführen des Beispiels
Wählen Sie im Visual Studio-Menü die Option Debuggen>Starten ohne Debugging aus, um die Projektmappe auszuführen. Wenn Sie zum erneuten Erstellen des Projekts aufgefordert werden, wählen Sie Ja aus, um es vor der Ausführung neu zu erstellen.
Die folgende Ausgabe ist ein Beispiel dafür, wie das simulierte Gerät
my-x509-device
erfolgreich gestartet wird und eine Verbindung mit dem Bereitstellungsdienst herstellt. Das Gerät wird einem IoT-Hub zugewiesen und registriert:Provisioning API Version: 1.8.0 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-iot-hub-2.azure-devices.net, deviceId: my-x509-device Press enter key to exit:
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.
Kopieren Sie den Wert von ID-Bereich.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Verzeichnis „X509Sample“. Dieses Verzeichnis befindet sich im Verzeichnis .\azure-iot-sdk-csharp\provisioning\device\samples\Getting Started\X509Sample unter dem Verzeichnis, in dem Sie die Beispiele auf Ihrem Computer geklont haben.
Geben Sie den folgenden Befehl ein, um das Beispiel für die X.509-Gerätebereitstellung zu erstellen und auszuführen (ersetzen Sie den Wert
<IDScope>
durch den ID-Bereich, den Sie im vorhergehenden Abschnitt kopiert haben). Die Zertifikatdatei wird standardmäßig unter ./certificate.pfx erstellt, und Sie werden zur Eingabe des PFX-Kennworts aufgefordert.dotnet run -- -s <IDScope>
Wenn Sie das Zertifikat und Kennwort als Parameter übergeben möchten, können Sie das folgende Format verwenden.
Hinweis
Zusätzliche Parameter können beim Ausführen der Anwendung übergeben werden, um den TransportType (-t) und den GlobalDeviceEndpoint (-g) zu ändern.
dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
Das Gerät stellt eine Verbindung mit DPS her und wird einem IoT-Hub zugewiesen. Dann sendet das Gerät eine Telemetrienachricht an den IoT-Hub.
Loading the certificate... Enter the PFX password for certificate.pfx: **** Found certificate: A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device; PrivateKey: True Using certificate A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device Initializing the device provisioning client... Initialized for registration Id my-x509-device. Registering with the device provisioning service... Registration status: Assigned. Device my-x509-device registered to MyExampleHub.azure-devices.net. Creating X509 authentication for IoT Hub... Testing the provisioned device with IoT Hub... Sending a telemetry message... Finished.
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.
Kopieren Sie den Wert von ID-Bereich.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Beispielverzeichnis, und installieren Sie die für das Beispiel erforderlichen Pakete. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd .\azure-iot-sdk-node\provisioning\device\samples npm install
In dem Beispiel werden fünf Umgebungsvariablen für die Authentifizierung und Bereitstellung eines IoT-Geräts per DPS genutzt. Dies sind die folgenden Umgebungsvariablen:
Variablenname BESCHREIBUNG PROVISIONING_HOST
Der Endpunkt, der zum Herstellen einer Verbindung mit Ihrer DPS-Instanz verwendet werden soll. Verwenden Sie für diese Schnellstartanleitung den globalen Endpunkt: global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Der ID-Bereich für Ihre DPS-Instanz. PROVISIONING_REGISTRATION_ID
Registrierungs-ID für Ihre Geräteregistrierung Er muss mit dem allgemeinen Namen des Antragstellers im Gerätezertifikat übereinstimmen. CERTIFICATE_FILE
Der Pfad zu Ihrer Gerätezertifikatdatei. KEY_FILE
Der Pfad zur privaten Geräteschlüsseldatei. Fügen Sie Umgebungsvariablen für den globalen Geräteendpunkt und den ID-Bereich hinzu. Ersetzen Sie
<id-scope>
durch den Wert, den Sie in Schritt 2 kopiert haben.set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<id-scope>
Legen Sie die Umgebungsvariable für die Registrierungs-ID für das Gerät fest. Die Registrierungs-ID für das IoT-Gerät muss mit dem allgemeinen Namen des Antragstellers im Gerätezertifikat übereinstimmen. Wenn Sie die Schritte in der Schnellstartanleitung zum Generieren eines selbstsignierten Testzertifikats befolgt haben, ist
my-x509-device
sowohl der Antragstellername als auch die Registrierungs-ID für das Gerät.set PROVISIONING_REGISTRATION_ID=my-x509-device
Legen Sie die Umgebungsvariablen für das Gerätezertifikat und (unverschlüsselte) private Geräteschlüsseldateien fest.
set CERTIFICATE_FILE=.\device-cert.pem set KEY_FILE=.\unencrypted-device-key.pem
Führen Sie das Beispiel aus, und überprüfen Sie, ob das Gerät erfolgreich bereitgestellt wurde.
node register_x509.js
Die Ausgabe sollte etwa folgendem Beispiel entsprechen:
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=my-x509-device Client connected send status: MessageEnqueued
In diesem Abschnitt verwenden Sie Ihre Windows-Eingabeaufforderung.
Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.
Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.
Wechseln Sie in Ihrer Windows-Eingabeaufforderung zum Verzeichnis des Beispiels provision_x509.py. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd ./azure-iot-sdk-python/samples/async-hub-scenarios
In diesem Beispiel werden sechs Umgebungsvariablen für die Authentifizierung und Bereitstellung eines IoT-Geräts per DPS genutzt. Dies sind die folgenden Umgebungsvariablen:
Variablenname BESCHREIBUNG PROVISIONING_HOST
Der globale Endpunkt, der für die Herstellung der Verbindung mit Ihrer DPS-Ressource verwendet wird. PROVISIONING_IDSCOPE
Der ID-Bereich für Ihre DPS-Instanz. DPS_X509_REGISTRATION_ID
Registrierungs-ID für Ihre Geräteregistrierung Er muss auch mit dem Antragstellernamen auf dem Gerätezertifikat übereinstimmen. X509_CERT_FILE
Der Pfad zu Ihrer Gerätezertifikatdatei. X509_KEY_FILE
Der Pfad zur privaten Schlüsseldatei für das Gerätezertifikat. PASS_PHRASE
Die Passphrase, die Sie zum Verschlüsseln des Zertifikats und der Datei für den privaten Schlüssel ( 1234
) verwendet haben.Fügen Sie die Umgebungsvariablen für den globalen Geräteendpunkt und den ID-Bereich hinzu.
set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
Legen Sie die Umgebungsvariable für die Registrierungs-ID fest. Die Registrierungs-ID für das IoT-Gerät muss mit dem Antragstellernamen im Gerätezertifikat übereinstimmen. Wenn Sie die Schritte in der Schnellstartanleitung zum Generieren eines selbstsignierten Testzertifikats befolgt haben, ist
my-x509-device
sowohl der Antragstellername als auch die Registrierungs-ID für das Gerät.set DPS_X509_REGISTRATION_ID=my-x509-device
Legen Sie die Umgebungsvariablen für die Zertifikatdatei, die Datei mit dem privaten Schlüssel und die Passphrase fest.
set X509_CERT_FILE=./device-cert.pem set X509_KEY_FILE=./device-key.pem set PASS_PHRASE=1234
Sehen Sie sich den Code für provision_x509.py an. Wenn Sie nicht die Python-Version 3.7 oder höher verwenden, führen Sie die hier beschriebene Codeänderung durch, um
asyncio.run(main())
zu ersetzen und speichern Sie Ihre Änderungen.Führen Sie das Beispiel aus. Das Beispiel stellt eine Verbindung mit DPS her, wodurch das Gerät für einen IoT-Hub bereitgestellt wird. Nachdem das Gerät bereitgestellt wurde, sendet das Beispiel einige Testnachrichten an den IoT-Hub.
$ python azure-iot-sdk-python/samples/async-hub-scenarios/provision_x509.py RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2. Setting timer. The complete registration result is my-x509-device TestHub12345.azure-devices.net initialAssignment null Will send telemetry from the provisioned device sending message #4 sending message #7 sending message #2 sending message #8 sending message #5 sending message #9 sending message #1 sending message #6 sending message #10 sending message #3 done sending message #4 done sending message #7 done sending message #2 done sending message #8 done sending message #5 done sending message #9 done sending message #1 done sending message #6 done sending message #10 done sending message #3
In diesem Abschnitt verwenden Sie sowohl Ihre Windows-Eingabeaufforderung als auch Ihre Git Bash-Eingabeaufforderung.
Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.
Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.
Navigieren Sie in Ihrer Windows-Eingabeaufforderung zum Ordner des Beispielprojekts. Der angezeigte Pfad ist relativ zu dem Speicherort, in dem Sie das SDK geklont haben.
cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
Geben Sie im Beispielcode den Bereitstellungsdienst und die X.509-Identitätsinformationen ein. Diese Informationen werden während der Bereitstellung als Nachweis für das simulierte Gerät verwendet, bevor das Gerät registriert wird.
Öffnen Sie die Datei
.\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java
in Ihrem bevorzugten Text-Editor.Aktualisieren Sie die folgenden Werte mit dem ID-Bereich und globalen Endpunkt für den Bereitstellungsdienst, die Sie zuvor kopiert haben.
private static final String idScope = "[Your ID scope here]"; private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]"; private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
Aktualisieren Sie den Wert der konstanten Zeichenfolge
leafPublicPem
mit dem Wert Ihres Zertifikats, device-cert.pem.Die Syntax des Zertifikattexts muss dem unten folgenden Muster (ohne zusätzliche Leerstellen oder Zeichen) entsprechen.
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" + "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" + ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" + "-----END CERTIFICATE-----";
Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
leafPublicPem
und schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pem
Kopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
leafPrivateKey
mit dem unverschlüsselten privaten Schlüssel für Ihr Gerätezertifikat, unencrypted-device-key.pem.Die Syntax des Texts zum privaten Schlüssel muss dem folgenden Muster (ohne zusätzliche Leerstellen oder Zeichen) entsprechen.
private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" + ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" + "-----END PRIVATE KEY-----";
Das manuelle Aktualisieren dieses Zeichenfolgenwerts kann fehleranfällig sein. Zum Generieren der richtigen Syntax können Sie den folgenden Befehl kopieren und in Ihre Git Bash-Eingabeaufforderung einfügen. Drücken Sie dann die EINGABETASTE. Dieser Befehl generiert die Syntax für den Wert der Zeichenfolgenkonstante
leafPrivateKey
und schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pem
Kopieren Sie den ausgegebenen Text zum privaten Schlüssel für den konstanten Wert, und fügen Sie ihn ein.
Speichern Sie die Änderungen.
Erstellen Sie das Beispiel, und wechseln Sie zum Ordner
target
.mvn clean install cd target
Der Build gibt die JAR-Datei im Ordner
target
mit folgendem Dateiformat aus:provisioning-x509-sample-{version}-with-deps.jar
; Beispiel:provisioning-x509-sample-1.8.1-with-deps.jar
. Führen Sie die JAR-Datei aus. Möglicherweise müssen Sie die Version im folgenden Befehl ersetzen.java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
Das Beispiel stellt eine Verbindung mit DPS her, wodurch das Gerät für einen IoT-Hub bereitgestellt wird. Nachdem das Gerät bereitgestellt wurde, sendet das Beispiel einige Testnachrichten an den IoT-Hub.
Starting... Beginning setup. WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. 2022-05-11 09:42:05,025 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.0 2022-05-11 09:42:05,027 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread... Waiting for Provisioning Service to register 2022-05-11 09:42:05,030 INFO (global.azure-devices-provisioning.net-6255a8ba-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service... 2022-05-11 09:42:05,252 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message 2022-05-11 09:42:05,286 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using x509 certificates 2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device... 2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING Waiting for Provisioning Service to register 2022-05-11 09:42:15,685 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully IotHUb Uri : MyExampleHub.azure-devices.net Device ID : java-device-01 2022-05-11 09:42:25,057 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-05-11 09:42:25,080 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-05-11 09:42:25,087 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.0.3 2022-05-11 09:42:25,129 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection... 2022-05-11 09:42:25,150 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet... 2022-05-11 09:42:25,982 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged 2022-05-11 09:42:25,983 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# 2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# was acknowledged 2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully 2022-05-11 09:42:26,070 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established 2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK 2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads 2022-05-11 09:42:26,073 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details 2022-05-11 09:42:26,074 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully 2022-05-11 09:42:26,075 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully Sending message from device to IoT Hub... 2022-05-11 09:42:26,077 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) Press any key to exit... 2022-05-11 09:42:26,079 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-05-11 09:42:26,422 DEBUG (MQTT Call: java-device-01) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-05-11 09:42:26,425 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK Message sent!
Bestätigen der Registrierung der Gerätebereitstellung
Wenn Sie sehen möchten, für welchen IoT-Hub Ihr Gerät bereitgestellt wurde, überprüfen Sie die Registrierungsdetails der einzelnen Registrierung, die Sie zuvor erstellt haben:
Wechseln Sie im Azure-Portal zu Ihrem Device Provisioning Service.
Wählen Sie im Menü Einstellungen die Option Registrierungen verwalten aus.
Wählen Sie Individuelle Registrierungen aus. Der von Ihnen zuvor erstellte X.509-Registrierungseintrag, my-x509-device, sollte in der Liste angezeigt werden.
Wählen Sie den Registrierungseintrag aus. Der IoT-Hub, dem Ihr Gerät zugewiesen wurde, und dessen Geräte-ID werden unter Registrierungsstatus angezeigt.
So überprüfen Sie das Gerät auf Ihrem IoT-Hub:
Wechseln Sie im Azure-Portal zu dem IoT-Hub, dem Ihr Gerät zugewiesen wurde.
Wählen Sie im Menü Geräteverwaltung die Option Geräte aus.
Wenn Ihr Gerät erfolgreich bereitgestellt wurde, sollte dessen Geräte-ID, my-x509-device, in der Liste mit dem StatusAktiviert angezeigt werden. Wenn Ihr Gerät nicht angezeigt wird, wählen Sie Aktualisieren aus.
Wichtig
Wenn Sie den anfänglichen Gerätezwillingsstatus im Registrierungseintrag für Ihr Gerät gegenüber dem Standardwert geändert haben, kann der gewünschte Zwillingsstatus vom Hub abgerufen werden, und es können entsprechende Aktionen durchgeführt werden. Weitere Informationen finden Sie unter Verstehen und Verwenden von Gerätezwillingen in IoT Hub.
Bereinigen von Ressourcen
Wenn Sie das Geräteclientbeispiel weiter verwenden und erkunden möchten, sollten Sie die in dieser Schnellstartanleitung erstellten Ressourcen nicht bereinigen. Falls Sie nicht fortfahren möchten, führen Sie die folgenden Schritte aus, um alle Ressourcen zu löschen, die im Rahmen dieser Schnellstartanleitung erstellt wurden.
Löschen der Geräteregistrierung
Schließen Sie auf Ihrem Computer das Ausgabefenster des Geräteclientbeispiels.
Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.
Wählen Sie Ihre Device Provisioning Service-Instanz aus.
Wählen Sie im Menü Einstellungen die Option Registrierungen verwalten aus.
Wählen Sie die Registerkarte Individuelle Registrierungen aus.
Aktivieren Sie das Kontrollkästchen neben der Registrierungs-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.
Wählen Sie oben auf der Seite Löschen aus.
Löschen Ihrer Geräteregistrierung aus IoT Hub
Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.
Wählen Sie Ihren IoT Hub aus.
Wählen Sie im Menü Explorer die Option IoT-Geräte aus.
Aktivieren Sie das Kontrollkästchen neben der Geräte-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.
Wählen Sie oben auf der Seite Löschen aus.
Nächste Schritte
In dieser Schnellstartanleitung haben Sie ein einzelnes Gerät mit einer individuellen Registrierung für Ihren IoT-Hub bereitgestellt. Informieren Sie sich als Nächstes, wie IoT-Geräte auf mehreren IoT-Hubs bereitgestellt werden.