Schnellstart: Bereitstellen eines simulierten Geräts mit X.509-Zertifikat
In dieser Schnellstartanleitung erstellen Sie ein simuliertes Gerät auf Ihrem Windows-Computer. Das simulierte Gerät wird für die Verwendung des Mechanismus des X.509-Zertifikatnachweises für die Authentifizierung konfiguriert. Nachdem Sie Ihr Gerät konfiguriert haben, werden Sie es mithilfe des Azure IoT Hub Device Provisioning Service für Ihren IoT-Hub bereitstellen.
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 unter Bereitstellen für Mehrinstanzenfähigkeit.
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 versionein.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_CNFauf 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 werden die Git Bash-Eingabeaufforderung für die Ausgabe von OpenSSL-Befehlen und die Windows-Eingabeaufforderung für alles andere verwenden. 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 C-SDK aus. (Ersetzen Sie
<release-tag>durch das Tag, das Sie im vorherigen Schritt kopiert haben.)git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --initDieser Vorgang kann mehrere Minuten dauern.
Wenn der Vorgang abgeschlossen ist, führen Sie die folgenden Befehle aus dem Verzeichnis
azure-iot-sdk-caus:mkdir cmake cd cmakeDas 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_libangeben, müssen Sie unbedingt den absoluten Pfad zur Bibliothek in dem zuvor erstellten Verzeichniscmakeverwenden. Beim unten 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
cmakeIhren 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:
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 .. -- 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 den Azure IoT-Beispielen für C# mithilfe des folgenden Befehls:
git clone https://github.com/Azure-Samples/azure-iot-samples-csharp.git
Klonen Sie in Ihrer Windows-Eingabeaufforderung das GitHub-Repository mit den Azure IoT-Beispielen 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 mit den Azure IoT-Beispielen für Python mithilfe des folgenden Befehls:
git clone https://github.com/Azure/azure-iot-sdk-python.git --recursive
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 --recursiveNavigieren 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, um ein selbstsigniertes X.509-Zertifikat und einen privaten Schlüssel zu erstellen. 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
1234erneut 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
opensslausgeführt haben.Für die Zertifikatdatei ist der CN des Antragstellers auf
my-x509-devicefestgelegt. Bei X.509-basierten Registrierungen wird die Registrierungs-ID auf den allgemeinen Namen festgelegt. Bei der Registrierungs-ID handelt es sich um eine Zeichenfolge (bis zu 128 Zeichen lang) alphanumerischer Zeichen ohne Beachtung der Groß-/Kleinschreibung plus diese Sonderzeichen:'-','.','_',':'. Das letzte Zeichen muss alphanumerisch oder ein Bindestrich ('-') sein. Der allgemeine Name muss diesem Format entsprechen.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 noch 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
opensslausgefü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-samples-csharp/provisioning/Samples/device/X509Sample
Sie benötigen die Git Bash-Eingabeaufforderung für den Rest dieses Schnellstarts nicht. 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-node/provisioning/device/samples cp device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
Sie benötigen die Git Bash-Eingabeaufforderung für den Rest dieses Schnellstarts nicht. 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/azure-iot-device/samples/async-hub-scenarios cp device-key.pem ./azure-iot-sdk-python/azure-iot-device/samples/async-hub-scenarios
Sie benötigen die Git Bash-Eingabeaufforderung für den Rest dieses Schnellstarts nicht. 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 noch 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.
Wählen Sie im Menü auf der linken Seite oder auf der Portalseite 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 oben auf der Seite die Option + Individuelle Registrierung hinzufügen aus.
Geben Sie auf der Seite Registrierung hinzufügen die folgenden Informationen ein.
- Mechanismus: Wählen Sie X.509 als Mechanismus für den Nachweis der Identität.
- Primäres Zertifikat (PEM- oder CER-Datei): Wählen Sie Datei auswählen, navigieren Sie zu der im vorhergehenden Abschnitt erstellten Zertifikatdatei, device-cert.pem, und wählen Sie sie aus.
- Lassen Sie das Feld IoT Hub-Geräte-ID leer. Bei der Bereitstellung Ihres Geräts wird die Geräte-ID auf den allgemeinen Namen (Common Name, CN) aus dem X.509-Zertifikat, my-x509-device, festgelegt. Dieser allgemeine Name wird auch für die Registrierungs-ID des Eintrags für die individuelle Registrierung verwendet.
- Optional können Sie die folgenden Informationen angeben:
- Wählen Sie einen IoT Hub aus, der mit Ihrem Bereitstellungsdienst verknüpft ist.
- Aktualisieren Sie Initial device twin state (Anfänglicher Gerätezwillingsstatus) mit der gewünschten Anfangskonfiguration für das Gerät.
Wählen Sie Speichern aus. Sie werden zu Registrierungen verwalten zurückgeleitet.
Wählen Sie Individuelle Registrierungen aus. Ihr X.509-Registrierungseintrag, my-x509-device, sollte in der Liste angezeigt werden.
Vorbereiten und Ausführen des Gerätebereitstellungscodes
In diesem Abschnitt aktualisieren Sie den Beispielcode, um die Startsequenz des Geräts an Ihre Device Provisioning Service-Instanz 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
cmakeerstellt 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_typewie unten dargestellt aufSECURE_DEVICE_TYPE_X509festgelegt 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. Daher 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_NAMEmit dem allgemeinen Namen, den Sie beim Generieren des Gerätezertifikatsmy-x509-deviceverwendet haben.static const char* const COMMON_NAME = "my-x509-device";Aktualisieren Sie den Zeichenfolgenwert der konstanten Zeichenfolge
CERTIFICATEmithilfe des zuvor generierten Gerätezertifikats, device-cert.pem.Die Syntax des Zertifikattexts im Beispiel muss dem unten angegebenen 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
CERTIFICATEund schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pemKopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
PRIVATE_KEYmit 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 unten angegebenen 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_KEYund schreibt sie in die Ausgabe.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pemKopieren 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-deviceerfolgreich 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“. Es befindet sich im Verzeichnis .\azure-iot-samples-csharp\provisioning\Samples\device\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 1234Das 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 die Werte für ID-Bereich und Globaler Geräteendpunkt.
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 installBearbeiten Sie die Datei register_x509.js, und nehmen Sie folgende Änderungen vor:
- Ersetzen Sie
provisioning hostdurch den Globalen Geräteendpunkt aus Schritt 1 oben. - Ersetzen Sie
id scopedurch den ID-Bereich aus Schritt 1 oben. - Ersetzen Sie
registration iddurch die Registrierungs-ID aus dem vorherigen Abschnitt. - Ersetzen Sie
cert filenameundkey filenamedurch die zuvor generierten Dateien, device-cert.pem und device-key.pem.
- Ersetzen Sie
Speichern Sie die Datei .
Führen Sie das Beispiel aus, und überprüfen Sie, ob das Gerät erfolgreich bereitgestellt wurde.
node register_x509.js
Tipp
Die Verwendung des Node.js-Geräte-SDK für Azure IoT Hub ist eine einfache Möglichkeit zum Simulieren eines Geräts. Weitere Informationen finden Sie unter Gerätekonzepte.
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/azure-iot-device/samples/async-hub-scenariosIn 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_HOSTDieser Wert steht für den globalen Endpunkt für die Verbindungsherstellung mit Ihrer DPS-Ressource. PROVISIONING_IDSCOPEDieser Wert steht für den ID-Bereich für Ihre DPS-Ressource. DPS_X509_REGISTRATION_IDDieser Wert ist die ID für Ihr Gerät. Er muss auch mit dem Antragstellernamen auf dem Gerätezertifikat übereinstimmen. X509_CERT_FILEDer Dateiname Ihres Gerätezertifikats. X509_KEY_FILEDer Name Ihrer Datei mit dem privaten Schlüssel für Ihr Gerätezertifikat. PASS_PHRASEDie 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>Die Registrierungs-ID für das IoT-Gerät muss mit dem Antragstellernamen im Gerätezertifikat übereinstimmen. Wenn Sie ein selbstsigniertes Testzertifikat generiert haben, ist
my-x509-devicesowohl der Antragstellername als auch die Registrierungs-ID für das Gerät.Legen Sie die Umgebungsvariable für die Registrierungs-ID wie folgt fest:
set DPS_X509_REGISTRATION_ID=my-x509-deviceLegen 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=1234Sehen 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.Speichern Sie die Ä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/azure-iot-device/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-samples\provisioning-X509-sampleGeben Sie im Beispielcode den Bereitstellungsdienst und die X.509-Identitätsinformationen ein. Diese Angaben werden während der Bereitstellung als Nachweis für das simulierte Gerät verwendet, bevor es registriert wird.
Öffnen Sie die Datei
.\src\main\java\samples\com/microsoft\azure\sdk\iot\ProvisioningX509Sample.javain 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
leafPublicPemmit dem Wert Ihres Zertifikats, device-cert.pem.Die Syntax des Zertifikattexts muss dem unten angegebenen 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
leafPublicPemund schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pemKopieren Sie den ausgegebenen Zertifikattext für den konstanten Wert, und fügen Sie ihn ein.
Aktualisieren Sie den Zeichenfolgenwert der Konstante
leafPrivateKeymit 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 unten angegebenen 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
leafPrivateKeyund schreibt sie in die Ausgabe.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pemKopieren 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 targetDer Build gibt die JAR-Datei im Ordner
targetmit 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.jarDas 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 [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) 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 [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) 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 [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) 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 [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) 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
Fahren Sie mit der folgenden Schnellstartanleitung fort, um zu lernen, wie Sie Ihr X.509-Gerät programmgesteuert registrieren: