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

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.

Die folgenden Voraussetzungen gelten für eine Windows-Entwicklungsumgebung.

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 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.

  1. Öffnen Sie einen Webbrowser, und wechseln Sie zur Releaseseite für das Azure IoT C SDK.

  2. Wählen Sie oben auf der Seite die Registerkarte Tags aus.

  3. Kopieren Sie den Tagnamen für das aktuelle Release des Azure IoT C SDK.

  4. 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.

  5. Wenn der Vorgang abgeschlossen ist, führen Sie die folgenden Befehle aus dem Verzeichnis azure-iot-sdk-c aus:

    mkdir cmake
    cd cmake
    
  6. 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 Verzeichnis cmake 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.

    cmake -Duse_prov_client:BOOL=ON -Dhsm_custom_lib=c:/azure-iot-sdk-c/cmake/provisioning_client/samples/custom_hsm_example/Debug/custom_hsm_example.lib ..
    

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.

  1. 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.

  1. 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
    
  2. 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.

  1. Navigieren Sie in Ihrer Git Bash-Eingabeaufforderung zu dem Verzeichnis, in dem Sie Ihre Zertifikate erstellen möchten.

  2. 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.

  3. Wenn die Aufforderung PEM-Passphrase eingeben: angezeigt wird, verwenden Sie die Passphrase 1234.

  4. 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.

  5. 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:

    winpty openssl x509 -in device-cert.pem -text -noout
    
    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
    
  1. 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:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. 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.

  1. Geben Sie zum Generieren der von dem Beispiel erwarteten Datei im PKCS12-Format den folgenden Befehl ein:

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. 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.

  3. Wenn die Aufforderung Enter Export Password: (Exportkennwort eingeben) angezeigt wird, verwenden Sie das Kennwort 1234.

  4. 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.

  5. 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.

  1. 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:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. 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.

  3. 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.

  1. 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.

  1. 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:

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. 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:

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.

  1. Melden Sie sich beim Azure-Portal an, und navigieren Sie zur Dienstinstanz für die Gerätebereitstellung.

  2. Wählen Sie im Navigationsmenü im Abschnitt Einstellungen die Option Registrierungen verwalten aus.

  3. Wählen Sie die Registerkarte Individuelle Registrierungen und dann Individuelle Registrierung hinzufügen aus.

    Screenshot, der die Option „Individuelle Registrierung hinzufügen“ anzeigt.

  4. 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.
  5. Wählen Sie Weiter: IoT-Hubs aus.

  6. 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.
  7. Wählen Sie Weiter: Geräteeinstellungen aus

  8. 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.

  9. Klicken Sie auf Weiter: Überprüfen + erstellen.

  10. Ü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.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.

  2. Kopieren Sie den Wert von ID-Bereich.

    Screenshot des ID-Bereichs im Azure-Portal.

  3. 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 Namen azure_iot_sdks.sln.

  4. 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.

  5. 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";
    
  6. Suchen Sie die Definition für die Funktion main() in der gleichen Datei. Stellen Sie sicher, dass die Variable hsm_type auf SECURE_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;
    
  7. Speichern Sie die Änderungen.

  8. 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:

  1. Navigieren Sie im Projektmappen-Explorer von Visual Studio zu Provision_Samples> custom_hsm_example > Source Files, und öffnen Sie custom_hsm_example.c.

  2. Aktualisieren Sie den Zeichenfolgenwert der Zeichenfolgenkonstante COMMON_NAME mit dem allgemeinen Namen, den Sie beim Generieren des Gerätezertifikats my-x509-device verwendet haben.

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. 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.

  4. 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.

  5. Speichern Sie die Änderungen.

  6. 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

  1. 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.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.

  2. Kopieren Sie den Wert von ID-Bereich.

    Screenshot des ID-Bereichs im Azure-Portal.

  3. 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.

  4. 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
    
  5. 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.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.

  2. Kopieren Sie den Wert von ID-Bereich.

    Screenshot des ID-Bereichs im Azure-Portal.

  3. 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.
  4. 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>
    
  5. 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
    
  6. 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
    
  7. 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.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.

  2. Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.

    Screenshot des ID-Bereichs und globalen Geräteendpunkts im Azure-Portal.

  3. 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.
  4. 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>
    
  5. 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
    
  6. 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
    
  7. 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.

  8. 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.

  1. Wählen Sie im Azure-Portal die Registerkarte Übersicht für Ihre Device Provisioning Service-Instanz.

  2. Kopieren Sie die Werte für ID-Bereich und Globaler Geräteendpunkt.

    Screenshot des ID-Bereichs und globalen Geräteendpunkts im Azure-Portal.

  3. 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
    
  4. 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.

    1. Öffnen Sie die Datei .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java in Ihrem bevorzugten Text-Editor.

    2. 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;
      
      
    3. 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.

    4. 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.

    5. Speichern Sie die Änderungen.

  5. Erstellen Sie das Beispiel, und wechseln Sie zum Ordner target.

    mvn clean install
    cd target
    
  6. 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:

  1. Wechseln Sie im Azure-Portal zu Ihrem Device Provisioning Service.

  2. Wählen Sie im Menü Einstellungen die Option Registrierungen verwalten aus.

  3. Wählen Sie Individuelle Registrierungen aus. Der von Ihnen zuvor erstellte X.509-Registrierungseintrag, my-x509-device, sollte in der Liste angezeigt werden.

  4. 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:

  1. Wechseln Sie im Azure-Portal zu dem IoT-Hub, dem Ihr Gerät zugewiesen wurde.

  2. Wählen Sie im Menü Geräteverwaltung die Option Geräte aus.

  3. 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.

    Screenshot, der zeigt, dass das Gerät beim IoT-Hub im Azure-Portal registriert wurde

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

  1. Schließen Sie auf Ihrem Computer das Ausgabefenster des Geräteclientbeispiels.

  2. Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.

  3. Wählen Sie Ihre Device Provisioning Service-Instanz aus.

  4. Wählen Sie im Menü Einstellungen die Option Registrierungen verwalten aus.

  5. Wählen Sie die Registerkarte Individuelle Registrierungen aus.

  6. Aktivieren Sie das Kontrollkästchen neben der Registrierungs-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.

  7. Wählen Sie oben auf der Seite Löschen aus.

Löschen Ihrer Geräteregistrierung aus IoT Hub

  1. Wählen Sie im Azure-Portal im linken Menü die Option Alle Ressourcen aus.

  2. Wählen Sie Ihren IoT Hub aus.

  3. Wählen Sie im Menü Explorer die Option IoT-Geräte aus.

  4. Aktivieren Sie das Kontrollkästchen neben der Geräte-ID des Geräts, das Sie in dieser Schnellstartanleitung registriert haben.

  5. 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.