Szybki start: aprowizuj symulowane urządzenie certyfikatu X.509
W tym przewodniku Szybki start utworzysz symulowane urządzenie na maszynie z systemem Windows. Symulowane urządzenie jest skonfigurowane do używania zaświadczania certyfikatów X.509 na potrzeby uwierzytelniania. Po skonfigurowaniu urządzenia aprowizujesz je w centrum IoT Przy użyciu usługi Azure IoT Hub Device Provisioning.
Jeśli nie znasz procesu aprowizacji, zapoznaj się z omówieniem aprowizacji . Pamiętaj również, aby wcześniej wykonać kroki przedstawione w części Konfigurowanie usługi IoT Hub Device Provisioning za pomocą witryny Azure Portal.
Ten przewodnik Szybki start przedstawia rozwiązanie dla stacji roboczej z systemem Windows. Można jednak również wykonać procedury w systemie Linux. Aby zapoznać się z przykładem systemu Linux, zobacz Samouczek: aprowizowanie opóźnienia geograficznego.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wykonaj kroki opisane w temacie Konfigurowanie usługi IoT Hub Device Provisioning Przy użyciu witryny Azure Portal.
Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows. W przypadku systemu Linux lub macOS zapoznaj się z odpowiednią sekcją w temacie Przygotowywanie środowiska projektowego w dokumentacji zestawu SDK.
Zainstaluj program Visual Studio 2022 z włączonym obciążeniem "Programowanie aplikacji klasycznych z językiem C++". Obsługiwane są również programy Visual Studio 2015, Visual Studio 2017 i Visual Studio 19. W przypadku systemu Linux lub macOS zapoznaj się z odpowiednią sekcją w temacie Przygotowywanie środowiska projektowego w dokumentacji zestawu SDK.
Zainstaluj najnowszy system kompilacji narzędzia CMake. Upewnij się, że zaznaczono opcję, która dodaje plik wykonywalny narzędzia CMake do ścieżki.
Ważne
Przed rozpoczęciem
CMake
instalacji upewnij się, że na maszynie są zainstalowane wymagania wstępne programu Visual Studio (Program Visual Studio i pakiet roboczy Programowanie aplikacji klasycznych z językiem C++). Gdy wymagania wstępne zostaną spełnione, a pobrane pliki zweryfikowane, zainstaluj system kompilacji CMake. Należy również pamiętać, że starsze wersje systemu kompilacji CMake nie mogą wygenerować pliku rozwiązania używanego w tym artykule. Upewnij się, że używasz najnowszej wersji narzędzia CMake.
Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows. W przypadku systemu Linux lub macOS zapoznaj się z odpowiednią sekcją w temacie Przygotowywanie środowiska projektowego w dokumentacji zestawu SDK.
Zainstaluj zestaw .NET SDK 6.0 lub nowszy na maszynie z systemem Windows. Aby sprawdzić wersję, możesz użyć następującego polecenia.
dotnet --info
Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows. W przypadku systemu Linux lub macOS zapoznaj się z odpowiednią sekcją w temacie Przygotowywanie środowiska projektowego w dokumentacji zestawu SDK.
- Zainstaluj Node.js w wersji 4.0 lub nowszej na maszynie.
Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows.
- Środowisko Python w wersji 3.6 lub nowszej na maszynie.
Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows. W przypadku systemu Linux lub macOS zapoznaj się z odpowiednią sekcją w temacie Przygotowywanie środowiska projektowego w dokumentacji zestawu SDK.
Zainstaluj zestaw Java SE Development Kit 8 lub nowszy na maszynie.
Pobierz i zainstaluj pakiet Maven.
Zainstaluj najnowszą wersję usługi Git. Upewnij się, że usługa Git jest dodawana do zmiennych środowiskowych dostępnych w oknie polecenia. Zobacz Narzędzia klienckie Git firmy Software Freedom Conservancy, aby zapoznać się z najnowszą wersją
git
narzędzi do zainstalowania, która obejmuje powłokę Git Bash, aplikację wiersza polecenia, której można użyć do interakcji z lokalnym repozytorium Git.Upewnij się, że na maszynie jest zainstalowany program OpenSSL . W systemie Windows instalacja narzędzia Git obejmuje instalację programu OpenSSL. Dostęp do protokołu OpenSSL można uzyskać z poziomu wiersza polecenia powłoki Git Bash. Aby sprawdzić, czy program OpenSSL jest zainstalowany, otwórz wiersz polecenia powłoki Git Bash i wprowadź polecenie
openssl version
.Uwaga
Jeśli nie znasz programu OpenSSL i nie masz go już zainstalowanego na maszynie z systemem Windows, zalecamy używanie biblioteki OpenSSL z poziomu wiersza polecenia powłoki Git Bash. Alternatywnie możesz pobrać kod źródłowy i skompilować bibliotekę OpenSSL. Aby dowiedzieć się więcej, zobacz stronę Pliki do pobrania openSSL. Możesz też pobrać wstępnie skompilowany program OpenSSL z poziomu innej firmy. Aby dowiedzieć się więcej, zobacz witrynę typu wiki openSSL. Firma Microsoft nie gwarantuje ważności pakietów pobranych od innych firm. Jeśli zdecydujesz się skompilować lub pobrać plik OpenSSL, upewnij się, że plik binarny OpenSSL jest dostępny w ścieżce i że
OPENSSL_CNF
zmienna środowiskowa jest ustawiona na ścieżkę pliku openssl.cnf .Otwórz zarówno wiersz polecenia systemu Windows, jak i wiersz polecenia powłoki Git Bash.
W krokach opisanych w tym przewodniku Szybki start założono, że używasz maszyny z systemem Windows i instalacji openSSL zainstalowanej w ramach usługi Git. Wiersz polecenia powłoki Git Bash służy do wydawania poleceń OpenSSL i wiersza polecenia systemu Windows dla wszystkich innych elementów. Jeśli używasz systemu Linux, możesz wydać wszystkie polecenia z powłoki Bash.
przygotowywanie środowiska programistycznego
W tej sekcji przygotujesz środowisko programistyczne używane do kompilowania zestawu SDK języka C usługi Azure IoT. Przykładowy kod próbuje aprowizować urządzenie podczas sekwencji rozruchu urządzenia.
Otwórz przeglądarkę internetową i przejdź do strony Wydanie zestawu AZURE IoT C SDK.
Wybierz kartę Tagi w górnej części strony.
Skopiuj nazwę tagu dla najnowszej wersji zestawu AZURE IoT C SDK.
W wierszu polecenia systemu Windows uruchom następujące polecenia, aby sklonować najnowszą wersję zestawu AZURE IoT Device SDK for C GitHub. Zastąp
<release-tag>
ciąg tagiem skopiowanymi w poprzednim kroku, na przykład: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
Wykonanie tej operacji może potrwać kilka minut.
Po zakończeniu operacji uruchom następujące polecenia z
azure-iot-sdk-c
katalogu:mkdir cmake cd cmake
Przykładowy kod używa certyfikatu X.509 w celu dostarczenia poświadczeń za pośrednictwem uwierzytelniania X.509. Uruchom następujące polecenie, aby skompilować wersję zestawu SDK specyficzną dla platformy programistycznej, która obejmuje klienta aprowizacji urządzeń. W katalogu jest generowane
cmake
rozwiązanie programu Visual Studio dla symulowanego urządzenia.Podczas określania ścieżki używanej
-Dhsm_custom_lib
w poniższym poleceniu upewnij się, że używasz ścieżki bezwzględnej do biblioteki wcmake
utworzonym wcześniej katalogu. Wyświetlona ścieżka zakłada, że sklonujesz zestaw SDK języka C w katalogu głównym dysku C. Jeśli użyto innego katalogu, odpowiednio dostosuj ścieżkę.
Napiwek
Jeśli cmake
nie znajdziesz kompilatora języka C++, podczas uruchamiania powyższego polecenia mogą wystąpić błędy kompilacji. W takim przypadku spróbuj uruchomić polecenie w wierszu polecenia programu Visual Studio.
Po pomyślnym zakończeniu kompilacji ostatnie kilka wierszy wyjściowych będzie wyglądać podobnie do następujących danych wyjściowych:
-- 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
W wierszu polecenia systemu Windows sklonuj repozytorium GitHub zestawu SDK usługi Azure IoT dla języka C# przy użyciu następującego polecenia:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
W wierszu polecenia systemu Windows sklonuj zestaw SDK usługi Azure IoT dla Node.js repozytorium GitHub przy użyciu następującego polecenia:
git clone https://github.com/Azure/azure-iot-sdk-node.git
W wierszu polecenia systemu Windows sklonuj repozytorium Azure IoT Device SDK for Python GitHub przy użyciu następującego polecenia:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
Uwaga
Przykłady używane w tym samouczku znajdują się w gałęzi w wersji 2 repozytorium azure-iot-sdk-python. Wersja 3 zestawu SDK języka Python jest dostępna do użycia w wersji beta.
W wierszu polecenia systemu Windows sklonuj repozytorium GitHub przykłady usługi Azure IoT dla języka Java przy użyciu następującego polecenia:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Przejdź do katalogu głównego
azure-iot-sdk-java
i skompiluj projekt, aby pobrać wszystkie potrzebne pakiety.cd azure-iot-sdk-java mvn install -DskipTests=true
Tworzenie certyfikatu urządzenia X.509 z podpisem własnym
W tej sekcji użyjesz biblioteki OpenSSL do utworzenia certyfikatu X.509 z podpisem własnym i klucza prywatnego. Ten certyfikat jest przekazywany do wystąpienia usługi aprowizacji i weryfikowany przez usługę.
Uwaga
Użyj certyfikatów utworzonych za pomocą biblioteki OpenSSL w tym przewodniku Szybki start tylko do testowania programowania. Nie używaj tych certyfikatów w środowisku produkcyjnym. Te certyfikaty wygasają po upływie 30 dni i mogą zawierać zakodowane na twardo hasła, takie jak 1234. Aby dowiedzieć się więcej na temat uzyskiwania certyfikatów odpowiednich do użycia w środowisku produkcyjnym, zobacz Jak uzyskać certyfikat X.509 urzędu certyfikacji w dokumentacji usługi Azure IoT Hub.
Wykonaj kroki opisane w tej sekcji w wierszu polecenia powłoki Git Bash.
W wierszu polecenia powłoki Git Bash przejdź do katalogu, w którym chcesz utworzyć certyfikaty.
Uruchom następujące polecenie:
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"
Ważne
Dodatkowy ukośnik podany dla nazwy podmiotu (
//CN=my-x509-device
) jest wymagany tylko do ucieczki ciągu z usługą Git na platformach Windows.Po wyświetleniu monitu o wprowadzenie frazy przekazywania PEM użyj frazy
1234
pass .Po wyświetleniu monitu Weryfikowanie — wprowadź frazę przekazywania PEM:, ponownie użyj frazy
1234
przekazywania.Plik certyfikatu klucza publicznego (device-cert.pem) i plik klucza prywatnego (device-key.pem) powinien zostać wygenerowany w katalogu, w którym uruchomiono
openssl
polecenie.Plik certyfikatu ma nazwę pospolitą podmiotu (CN) ustawioną na .
my-x509-device
W przypadku rejestracji opartych na architekturze X.509 identyfikator rejestracji jest ustawiony na nazwę pospolitą. Identyfikator rejestracji jest ciągiem bez uwzględniania wielkości liter znaków alfanumerycznych oraz znakami specjalnymi:'-'
, ,'.'
'_'
,':'
. Ostatni znak musi być alfanumeryczny lub kreskowy ('-'
). Nazwa pospolita musi być zgodna z tym formatem. Usługa DPS obsługuje identyfikatory rejestracji o długości do 128 znaków; jednak maksymalna długość nazwy pospolitej podmiotu w certyfikacie X.509 wynosi 64 znaki. W związku z tym identyfikator rejestracji jest ograniczony do 64 znaków w przypadku używania certyfikatów X.509.Plik certyfikatu jest zakodowany w formacie Base 64. Aby wyświetlić nazwę pospolitą podmiotu (CN) i inne właściwości pliku certyfikatu, wprowadź następujące polecenie:
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
Przykładowy kod wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:
Po wyświetleniu monitu o wprowadzenie frazy pass dla parametru device-key.pem:, użyj tej samej frazy dostępu, która została wcześniej użyta.
1234
Pozostaw otwarty monit powłoki Git Bash. Będzie on potrzebny w dalszej części tego przewodnika Szybki start.
Przykładowy kod w języku C# został skonfigurowany do używania certyfikatów X.509 przechowywanych w chronionym hasłem pliku PKCS#12 (certificate.pfx
). Nadal potrzebny jest plik certyfikatu klucza publicznego sformatowanego przez PEM (device-cert.pem
), który został właśnie utworzony w celu utworzenia wpisu rejestracji indywidualnej w dalszej części tego przewodnika Szybki start.
Aby wygenerować sformatowany plik PKCS12 oczekiwany przez przykład, wprowadź następujące polecenie:
Po wyświetleniu monitu o wprowadzenie frazy pass dla parametru device-key.pem:, użyj tej samej frazy dostępu, która została wcześniej użyta.
1234
Po wyświetleniu monitu o wprowadzenie hasła eksportu: użyj hasła
1234
.Po wyświetleniu monitu Zweryfikuj — wprowadź hasło eksportu: ponownie użyj hasła
1234
.Plik certyfikatu sformatowanego PKCS12 (certificate.pfx) powinien zostać wygenerowany w katalogu, w którym uruchomiono
openssl
polecenie.Skopiuj plik certyfikatu sformatowanego PKCS12 do katalogu projektu dla przykładu aprowizacji urządzeń X.509. Podana ścieżka jest względna do lokalizacji, w której pobrano przykładowe repozytorium.
cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
Nie potrzebujesz monitu powłoki Git Bash o pozostałą część tego przewodnika Szybki start. Możesz jednak pozostawić go otwarty, aby sprawdzić certyfikat, jeśli masz problemy w kolejnych krokach.
Przykładowy kod wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:
Po wyświetleniu monitu o wprowadzenie frazy pass dla parametru device-key.pem:, użyj tej samej frazy dostępu, która została wcześniej użyta.
1234
Skopiuj certyfikat urządzenia i niezaszyfrowany klucz prywatny do katalogu projektu dla przykładu aprowizacji urządzeń X.509. Podana ścieżka jest względna do lokalizacji, w której pobrano zestaw SDK.
cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
Nie potrzebujesz monitu powłoki Git Bash o pozostałą część tego przewodnika Szybki start. Możesz jednak pozostawić go otwarty, aby sprawdzić certyfikat, jeśli masz problemy w kolejnych krokach.
Skopiuj certyfikat urządzenia i klucz prywatny do katalogu projektu dla przykładu aprowizacji urządzeń X.509. Podana ścieżka jest względna do lokalizacji, w której pobrano zestaw SDK.
cp device-cert.pem ./azure-iot-sdk-python/samples/async-hub-scenarios cp device-key.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
Nie potrzebujesz monitu powłoki Git Bash o pozostałą część tego przewodnika Szybki start. Możesz jednak pozostawić go otwarty, aby sprawdzić certyfikat, jeśli masz problemy w kolejnych krokach.
Przykładowy kod Java wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:
Po wyświetleniu monitu o wprowadzenie frazy pass dla parametru device-key.pem:, użyj tej samej frazy dostępu, która została wcześniej użyta.
1234
Pozostaw otwarty monit powłoki Git Bash. Będzie on potrzebny w dalszej części tego przewodnika Szybki start.
Tworzenie rejestracji urządzenia
Usługa Azure IoT Device Provisioning obsługuje dwa typy rejestracji:
- Grupy rejestracji: służą do rejestrowania wielu pokrewnych urządzeń.
- Rejestracje indywidualne: służy do rejestrowania pojedynczego urządzenia.
W tym artykule przedstawiono rejestrację indywidualną dla pojedynczego urządzenia do aprowizowania w centrum IoT.
Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi Device Provisioning Service.
Wybierz pozycję Zarządzaj rejestracjami w sekcji Ustawienia w menu nawigacji.
Wybierz kartę Rejestracje indywidualne, a następnie wybierz pozycję Dodaj rejestrację indywidualną.
Na stronie Rejestracja i aprowizowanie dodaj rejestrację podaj następujące informacje, aby skonfigurować szczegóły rejestracji:
Pole opis Zaświadczanie Wybierz certyfikaty klienta X.509 jako mechanizm zaświadczania. Ustawienia certyfikatu X.509 Przekaż jeden lub dwa certyfikaty, które będą używane do weryfikowania urządzenia na potrzeby tej rejestracji. Stan aprowizacji Zaznacz pole Włącz tę rejestrację, jeśli ta rejestracja ma być dostępna do aprowizacji urządzenia. Usuń zaznaczenie tego pola, jeśli chcesz, aby rejestracja została wyłączona. To ustawienie można zmienić później. Zasady ponownej aprowizacji Wybierz zasady ponownej aprowizacji, które odzwierciedlają sposób obsługi urządzeń, które żądają ponownej aprowizacji przez usługę DPS. Aby uzyskać więcej informacji, zobacz Zasady ponownej aprowizacji. Wybierz pozycję Dalej: centra IoT.
Na karcie Centra IoT na stronie Dodawanie rejestracji podaj następujące informacje, aby określić, które centra IoT mogą aprowizować urządzenia:
Pole opis Docelowe centra IoT Wybierz co najmniej jedno połączone centra IoT lub dodaj nowy link do centrum IoT. Aby dowiedzieć się więcej na temat łączenia centrów IoT z wystąpieniem usługi DPS, zobacz Jak połączyć centra IoT i zarządzać nimi. Zasady alokacji Jeśli wybrano więcej niż jedno połączone centrum IoT, wybierz sposób przypisywania urządzeń do różnych centrów. Aby dowiedzieć się więcej na temat zasad alokacji, zobacz Jak używać zasad alokacji.
Jeśli wybrano tylko jedno połączone centrum IoT, zalecamy użycie zasad dystrybucji równomiernie ważonej.Wybierz pozycję Dalej: Ustawienia urządzenia
Na karcie Ustawienia urządzenia na stronie Dodawanie rejestracji podaj następujące informacje, aby zdefiniować sposób konfigurowania nowo aprowizowania urządzeń:
Pole opis Identyfikator urządzenia Podaj identyfikator urządzenia, który zostanie przypisany do aprowizowanego urządzenia w usłudze IoT Hub. Jeśli nie podasz identyfikatora urządzenia, zostanie użyty identyfikator rejestracji. IoT Edge Sprawdź włączanie usługi IoT Edge na aprowidowanych urządzeniach , jeśli aprowizowane urządzenie uruchomi usługę Azure IoT Edge. Usuń zaznaczenie tego pola, jeśli ta rejestracja dotyczy urządzenia z obsługą usługi IoT Edge. Tagi urządzeń Użyj tego pola tekstowego, aby podać tagi, które mają być stosowane do bliźniaczej reprezentacji urządzenia aprowizowanego urządzenia. Żądane właściwości Użyj tego pola tekstowego, aby podać żądane właściwości, które chcesz zastosować do bliźniaczej reprezentacji urządzenia aprowizowanego urządzenia. Aby uzyskać więcej informacji, zobacz Opis bliźniaczej reprezentacji urządzenia w usłudze IoT Hub oraz sposoby jej używania.
Wybierz pozycję Dalej: Przeglądanie i tworzenie.
Na karcie Przeglądanie i tworzenie sprawdź wszystkie wartości, a następnie wybierz pozycję Utwórz.
Przygotowywanie i uruchamianie kodu aprowizacji urządzenia
W tej sekcji zaktualizujesz przykładowy kod, aby wysłać sekwencję rozruchową urządzenia do wystąpienia usługi Device Provisioning Service. Ta sekwencja rozruchowa powoduje rozpoznawanie i przypisywanie urządzenia do centrum IoT Hub połączonego z wystąpieniem usługi DPS.
W tej sekcji użyjesz monitu powłoki Git Bash i środowiska IDE programu Visual Studio.
Konfigurowanie kodu urządzenia aprowizacji
W tej sekcji zaktualizujesz przykładowy kod przy użyciu informacji o wystąpieniu usługi Device Provisioning Service.
W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.
Skopiuj wartość Zakres identyfikatora.
Uruchom program Visual Studio i otwórz nowy plik rozwiązania utworzony w
cmake
katalogu głównym repozytorium git azure-iot-sdk-c. Plik rozwiązania ma nazwęazure_iot_sdks.sln
.W programie Eksplorator rozwiązań dla programu Visual Studio przejdź do Provision_Samples > pliki źródłowe prov_dev_client_sample > i otwórz plik prov_dev_client_sample.c.
Znajdź stałą
id_scope
i zastąp wartość wartością Zakres identyfikatorów skopiowaną w kroku 2.static const char* id_scope = "0ne00000A0A";
Znajdź definicję funkcji
main()
w tym samym pliku. Upewnij się, że zmienna jest ustawionahsm_type
naSECURE_DEVICE_TYPE_X509
.SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Zapisz zmiany.
Kliknij prawym przyciskiem myszy projekt prov_dev_client_sample i wybierz polecenie Ustaw jako projekt startowy.
Konfigurowanie niestandardowego kodu wycinkowego modułu HSM
Specyfika interakcji z rzeczywistym bezpiecznym magazynem opartym na sprzęcie różni się w zależności od sprzętu. W związku z tym certyfikat i klucz prywatny używany przez symulowane urządzenie w tym przewodniku Szybki start są zakodowane na stałe w niestandardowym kodzie wycinkowym sprzętowego modułu zabezpieczeń (HSM).
Aby zaktualizować niestandardowy kod wycinkowy modułu HSM w celu symulowania tożsamości urządzenia o identyfikatorze my-x509-device
:
W Eksplorator rozwiązań dla programu Visual Studio przejdź do Provision_Samples pliki > źródłowe custom_hsm_example > i otwórz plik custom_hsm_example.c.
Zaktualizuj wartość ciągu stałej
COMMON_NAME
ciągu przy użyciu nazwy pospolitej użytej podczas generowania certyfikatu urządzenia .my-x509-device
static const char* const COMMON_NAME = "my-x509-device";
Zaktualizuj wartość ciągu stałego
CERTIFICATE
przy użyciu wcześniej wygenerowanego certyfikatu urządzenia device-cert.pem.Składnia tekstu certyfikatu w przykładzie musi być zgodna z poniższym wzorcem bez dodatkowych spacji ani analizowania wykonanych przez program Visual Studio.
static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Ręczne aktualizowanie tej wartości ciągu może być podatne na błąd. Aby wygenerować właściwą składnię, możesz skopiować i wkleić następujące polecenie w wierszu polecenia powłoki Git Bash i nacisnąć ENTER. To polecenie generuje składnię stałej
CERTIFICATE
wartości ciągu i zapisuje ją w danych wyjściowych.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pem
Skopiuj i wklej tekst wyjściowego certyfikatu dla stałej wartości.
Zaktualizuj wartość ciągu stałej
PRIVATE_KEY
za pomocą niezaszyfrowanego klucza prywatnego certyfikatu urządzenia, unencrypted-device-key.pem.Składnia tekstu klucza prywatnego musi być zgodna z poniższym wzorcem bez dodatkowych spacji ani analizowania wykonywanego przez program Visual Studio.
static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n" "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" "-----END RSA PRIVATE KEY-----";
Ręczne aktualizowanie tej wartości ciągu może być podatne na błąd. Aby wygenerować właściwą składnię, możesz skopiować i wkleić następujące polecenie w wierszu polecenia powłoki Git Bash i nacisnąć ENTER. To polecenie generuje składnię stałej
PRIVATE_KEY
wartości ciągu i zapisuje ją w danych wyjściowych.sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pem
Skopiuj i wklej wyjściowy tekst klucza prywatnego dla wartości stałej.
Zapisz zmiany.
Kliknij prawym przyciskiem myszy projekt custom_hsm_-_example i wybierz pozycję Kompiluj.
Ważne
Przed utworzeniem pozostałej części rozwiązania w następnej sekcji należy skompilować projekt custom_hsm_example .
Uruchamianie aplikacji przykładowej
Z menu programu Visual Studio wybierz pozycję Debuguj>Uruchom bez debugowania, aby uruchomić rozwiązanie. Jeśli zostanie wyświetlony monit o ponowne skompilowanie projektu, wybierz pozycję Tak , aby ponownie skompilować projekt przed uruchomieniem.
Poniższe dane wyjściowe to przykład pomyślnego uruchomienia symulowanego urządzenia
my-x509-device
i nawiązania połączenia z usługą aprowizacji. Urządzenie jest przypisane do centrum IoT Hub i zarejestrowane: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:
W tej sekcji użyjesz wiersza polecenia systemu Windows.
W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.
Skopiuj wartość Zakres identyfikatora.
W wierszu polecenia systemu Windows przejdź do katalogu X509Sample. Ten katalog znajduje się w katalogu .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample w katalogu, w którym sklonowane przykłady na komputerze.
Wprowadź następujące polecenie, aby skompilować i uruchomić przykład aprowizacji urządzeń X.509 (zastąp
<IDScope>
wartość zakresem identyfikatorów skopiowaną w poprzedniej sekcji. Plik certyfikatu domyślnie ma wartość ./certificate.pfx i wyświetla monit o hasło pfx.dotnet run -- -s <IDScope>
Jeśli chcesz przekazać certyfikat i hasło jako parametr, możesz użyć następującego formatu.
Uwaga
Dodatkowe parametry można przekazać podczas uruchamiania aplikacji, aby zmienić typ transportu (-t) i globalDeviceEndpoint (-g).
dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
Urządzenie łączy się z usługą DPS i jest przypisane do centrum IoT. Następnie urządzenie wysyła komunikat telemetryczny do centrum IoT.
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.
W tej sekcji użyjesz wiersza polecenia systemu Windows.
W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.
Skopiuj wartość Zakres identyfikatora.
W wierszu polecenia systemu Windows przejdź do przykładowego katalogu i zainstaluj pakiety wymagane przez przykład. Wyświetlona ścieżka jest względna do lokalizacji, w której sklonowany zestaw SDK.
cd .\azure-iot-sdk-node\provisioning\device\samples npm install
W przykładzie użyto pięciu zmiennych środowiskowych do uwierzytelniania i aprowizacji urządzenia IoT przy użyciu usługi DPS. Te zmienne środowiskowe to:
Nazwa zmiennej opis PROVISIONING_HOST
Punkt końcowy używany do nawiązywania połączenia z wystąpieniem usługi DPS. W tym przewodniku Szybki start użyj globalnego punktu końcowego, global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Zakres identyfikatora wystąpienia usługi DPS. PROVISIONING_REGISTRATION_ID
Identyfikator rejestracji urządzenia. Musi być zgodna z nazwą pospolitą podmiotu w certyfikacie urządzenia. CERTIFICATE_FILE
Ścieżka do pliku certyfikatu urządzenia. KEY_FILE
Ścieżka do pliku klucza prywatnego urządzenia. Dodaj zmienne środowiskowe dla globalnego punktu końcowego urządzenia i zakresu identyfikatorów. Zastąp wartość
<id-scope>
skopiowaną w kroku 2.set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<id-scope>
Ustaw zmienną środowiskową dla identyfikatora rejestracji urządzenia. Identyfikator rejestracji urządzenia IoT musi być zgodny z nazwą pospolitą podmiotu w certyfikacie urządzenia. Jeśli wykonano kroki opisane w tym przewodniku Szybki start, aby wygenerować certyfikat testowy z podpisem własnym,
my-x509-device
jest zarówno nazwą podmiotu, jak i identyfikatorem rejestracji urządzenia.set PROVISIONING_REGISTRATION_ID=my-x509-device
Ustaw zmienne środowiskowe dla plików klucza prywatnego certyfikatu urządzenia i (niezaszyfrowanego).
set CERTIFICATE_FILE=.\device-cert.pem set KEY_FILE=.\unencrypted-device-key.pem
Uruchom przykład i sprawdź, czy urządzenie zostało pomyślnie zainicjowane.
node register_x509.js
Powinny zostać wyświetlone dane wyjściowe podobne do następującego przykładu:
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=my-x509-device Client connected send status: MessageEnqueued
W tej sekcji użyjesz wiersza polecenia systemu Windows.
W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.
Skopiuj wartości Zakres identyfikatorów i Globalny punkt końcowy urządzenia.
W wierszu polecenia systemu Windows przejdź do katalogu przykładu provision_x509.py . Wyświetlona ścieżka jest względna do lokalizacji, w której sklonowany zestaw SDK.
cd ./azure-iot-sdk-python/samples/async-hub-scenarios
W tym przykładzie użyto sześciu zmiennych środowiskowych do uwierzytelniania i aprowizacji urządzenia IoT przy użyciu usługi DPS. Te zmienne środowiskowe to:
Nazwa zmiennej opis PROVISIONING_HOST
Globalny punkt końcowy używany do nawiązywania połączenia z wystąpieniem usługi DPS. PROVISIONING_IDSCOPE
Zakres identyfikatora wystąpienia usługi DPS. DPS_X509_REGISTRATION_ID
Identyfikator rejestracji urządzenia. Musi również być zgodna z nazwą podmiotu w certyfikacie urządzenia. X509_CERT_FILE
Ścieżka do pliku certyfikatu urządzenia. X509_KEY_FILE
Ścieżka do pliku klucza prywatnego certyfikatu urządzenia. PASS_PHRASE
Fraza dostępu użyta do zaszyfrowania certyfikatu i pliku klucza prywatnego ( 1234
).Dodaj zmienne środowiskowe dla globalnego punktu końcowego urządzenia i zakresu identyfikatora.
set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
Ustaw zmienną środowiskową dla identyfikatora rejestracji. Identyfikator rejestracji urządzenia IoT musi być zgodny z nazwą podmiotu w certyfikacie urządzenia. Jeśli wykonano kroki opisane w tym przewodniku Szybki start, aby wygenerować certyfikat testowy z podpisem własnym,
my-x509-device
jest zarówno nazwą podmiotu, jak i identyfikatorem rejestracji urządzenia.set DPS_X509_REGISTRATION_ID=my-x509-device
Ustaw zmienne środowiskowe dla pliku certyfikatu, pliku klucza prywatnego i przekaż frazę.
set X509_CERT_FILE=./device-cert.pem set X509_KEY_FILE=./device-key.pem set PASS_PHRASE=1234
Przejrzyj kod provision_x509.py. Jeśli nie używasz języka Python w wersji 3.7 lub nowszej, wprowadź tutaj zmianę kodu, aby zastąpić
asyncio.run(main())
i zapisać zmiany.Uruchom przykład. Przykład łączy się z usługą DPS, która aprowizuje urządzenie do centrum IoT. Po aprowizacji urządzenia przykład wysyła kilka komunikatów testowych do centrum IoT.
$ 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
W tej sekcji użyjesz zarówno wiersza polecenia systemu Windows, jak i wiersza polecenia powłoki Git Bash.
W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.
Skopiuj wartości Zakres identyfikatorów i Globalny punkt końcowy urządzenia.
W wierszu polecenia systemu Windows przejdź do folderu przykładowego projektu. Wyświetlona ścieżka jest względna do lokalizacji, w której sklonowany zestaw SDK
cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
Wprowadź informacje o tożsamości usługi aprowizacji i X.509 w przykładowym kodzie. Te informacje są używane podczas aprowizacji na potrzeby zaświadczania symulowanego urządzenia przed rejestracją urządzenia.
Otwórz plik
.\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java
w ulubionym edytorze.Zaktualizuj następujące wartości za pomocą skopiowanego wcześniej globalnego punktu końcowego zakresu identyfikatorów i usługi aprowizacji.
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;
Zaktualizuj wartość ciągu stałego
leafPublicPem
przy użyciu wartości certyfikatu device-cert.pem.Składnia tekstu certyfikatu musi być zgodna z poniższym wzorcem bez dodatkowych spacji ani znaków.
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" + "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" + ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" + "-----END CERTIFICATE-----";
Ręczne aktualizowanie tej wartości ciągu może być podatne na błąd. Aby wygenerować właściwą składnię, możesz skopiować i wkleić następujące polecenie w wierszu polecenia powłoki Git Bash i nacisnąć ENTER. To polecenie generuje składnię stałej
leafPublicPem
wartości ciągu i zapisuje ją w danych wyjściowych.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pem
Skopiuj i wklej tekst wyjściowego certyfikatu dla stałej wartości.
Zaktualizuj wartość ciągu stałej
leafPrivateKey
za pomocą niezaszyfrowanego klucza prywatnego certyfikatu urządzenia, unencrypted-device-key.pem.Składnia tekstu klucza prywatnego musi być zgodna z poniższym wzorcem bez dodatkowych spacji ani znaków.
private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" + ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" + "-----END PRIVATE KEY-----";
Ręczne aktualizowanie tej wartości ciągu może być podatne na błąd. Aby wygenerować właściwą składnię, możesz skopiować i wkleić następujące polecenie w wierszu polecenia powłoki Git Bash i nacisnąć ENTER. To polecenie generuje składnię stałej
leafPrivateKey
wartości ciągu i zapisuje ją w danych wyjściowych.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pem
Skopiuj i wklej wyjściowy tekst klucza prywatnego dla wartości stałej.
Zapisz zmiany.
Skompiluj przykład, a następnie przejdź do
target
folderu .mvn clean install cd target
Dane wyjściowe kompilacji .jar pliku w
target
folderze o następującym formacie pliku:provisioning-x509-sample-{version}-with-deps.jar
na przykład :provisioning-x509-sample-1.8.1-with-deps.jar
. Wykonaj plik .jar. Może być konieczne zastąpienie wersji w poniższym poleceniu.java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
Przykład łączy się z usługą DPS, która aprowizuje urządzenie do centrum IoT. Po aprowizacji urządzenia przykład wysyła kilka komunikatów testowych do centrum IoT.
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!
Potwierdzanie rejestracji aprowizacji urządzeń
Aby sprawdzić, w którym centrum IoT Zostało zainicjowane twoje urządzenie, sprawdź szczegóły rejestracji utworzonej wcześniej rejestracji:
W witrynie Azure Portal przejdź do usługi Device Provisioning Service.
W menu Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz pozycję Rejestracje indywidualne. Na liście powinien zostać wyświetlony wpis rejestracji X.509 utworzony wcześniej my-x509-device.
Wybierz wpis rejestracji. Centrum IoT, do którego przypisano urządzenie, a jego identyfikator urządzenia jest wyświetlany w obszarze Stan rejestracji.
Aby sprawdzić urządzenie w centrum IoT Hub:
W witrynie Azure Portal przejdź do centrum IoT Hub, do którego przypisano Urządzenie.
W menu Zarządzanie urządzeniami wybierz pozycję Urządzenia.
Jeśli urządzenie zostało pomyślnie aprowizowane, jego identyfikator urządzenia, my-x509-device, powinien zostać wyświetlony na liście z ustawionym stanem ustawionym jako włączone. Jeśli urządzenie nie jest widoczne, wybierz pozycję Odśwież.
Ważne
Jeśli zmienisz wartość w polu Początkowy stan bliźniaczej reprezentacji urządzenia z domyślnej na inną we wpisie rejestracji dla Twojego urządzenia, może to spowodować pobranie z centrum żądanego stanu reprezentacji bliźniaczej i odpowiednie do niego działanie. Aby uzyskać więcej informacji, zobacz Opis bliźniaczej reprezentacji urządzenia w usłudze IoT Hub oraz sposoby jej używania
Czyszczenie zasobów
Jeśli planujesz kontynuować pracę i eksplorujesz przykład klienta urządzenia, nie usuwaj zasobów utworzonych w tym przewodniku Szybki start. Jeśli nie planujesz kontynuować, wykonaj następujące kroki, aby usunąć wszystkie zasoby utworzone w tym przewodniku Szybki start.
Usuwanie rejestracji urządzenia
Zamknij okno danych wyjściowych przykładu klienta urządzenia na swojej maszynie.
W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby.
Wybierz usługę Device Provisioning Service.
W menu Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz kartę Rejestracje indywidualne.
Zaznacz pole wyboru obok identyfikatora rejestracji urządzenia zarejestrowanego w tym przewodniku Szybki start.
W górnej części strony wybierz pozycję Usuń.
Usuwanie rejestracji urządzenia z usługi IoT Hub
W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby.
Wybierz centrum IoT Hub.
W menu Eksploratory wybierz pozycję Urządzenia IoT.
Zaznacz pole wyboru obok identyfikatora urządzenia zarejestrowanego w tym przewodniku Szybki start.
W górnej części strony wybierz pozycję Usuń.
Następne kroki
W tym przewodniku Szybki start zainicjowano aprowizację pojedynczego urządzenia w centrum IoT przy użyciu rejestracji indywidualnej. Następnie dowiedz się, jak aprowizować wiele urządzeń w wielu centrach.