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

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.

Poniższe wymagania wstępne dotyczą środowiska deweloperskiego systemu Windows.

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

  1. Otwórz przeglądarkę internetową i przejdź do strony Wydanie zestawu AZURE IoT C SDK.

  2. Wybierz kartę Tagi w górnej części strony.

  3. Skopiuj nazwę tagu dla najnowszej wersji zestawu AZURE IoT C SDK.

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

  5. Po zakończeniu operacji uruchom następujące polecenia z azure-iot-sdk-c katalogu:

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

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

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.

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

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

  1. W wierszu polecenia powłoki Git Bash przejdź do katalogu, w którym chcesz utworzyć certyfikaty.

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

  3. Po wyświetleniu monitu o wprowadzenie frazy przekazywania PEM użyj frazy 1234pass .

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

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

    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. Przykładowy kod wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:

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

  1. Aby wygenerować sformatowany plik PKCS12 oczekiwany przez przykład, wprowadź następujące polecenie:

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

  3. Po wyświetleniu monitu o wprowadzenie hasła eksportu: użyj hasła 1234.

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

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

  1. Przykładowy kod wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:

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

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

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

  1. Przykładowy kod Java wymaga klucza prywatnego, który nie jest zaszyfrowany. Uruchom następujące polecenie, aby utworzyć niezaszyfrowany klucz prywatny:

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

  1. Zaloguj się do witryny Azure Portal i przejdź do wystąpienia usługi Device Provisioning Service.

  2. Wybierz pozycję Zarządzaj rejestracjami w sekcji Ustawienia menu nawigacji.

  3. Wybierz kartę Rejestracje indywidualne, a następnie wybierz pozycję Dodaj rejestrację indywidualną.

    Zrzut ekranu przedstawiający opcję dodawania rejestracji indywidualnej.

  4. Na stronie Rejestracja i aprowizowaniedodaj 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.
  5. Wybierz pozycję Dalej: centra IoT.

  6. 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.
  7. Wybierz pozycję Dalej: Ustawienia urządzenia

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

  9. Wybierz pozycję Dalej: Przeglądanie i tworzenie.

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

  1. W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.

  2. Skopiuj wartość Zakres identyfikatora.

    Zrzut ekranu przedstawiający zakres identyfikatorów w witrynie Azure Portal.

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

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

  5. Znajdź stałą id_scope i zastąp wartość wartością Zakres identyfikatorów skopiowaną w kroku 2.

    static const char* id_scope = "0ne00000A0A";
    
  6. Znajdź definicję funkcji main() w tym samym pliku. Upewnij się, że zmienna jest ustawiona hsm_type na SECURE_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;
    
  7. Zapisz zmiany.

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

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

  2. 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";
    
  3. 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ąć klawisz 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.

  4. 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ąć klawisz 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.

  5. Zapisz zmiany.

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

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

  1. W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.

  2. Skopiuj wartość Zakres identyfikatora.

    Zrzut ekranu przedstawiający zakres identyfikatorów w witrynie Azure Portal.

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

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

  1. W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.

  2. Skopiuj wartość Zakres identyfikatora.

    Zrzut ekranu przedstawiający zakres identyfikatorów w witrynie Azure Portal.

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

  1. W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.

  2. Skopiuj wartości Zakres identyfikatorów i Globalny punkt końcowy urządzenia.

    Zrzut ekranu przedstawiający zakres identyfikatorów i globalny punkt końcowy urządzenia w witrynie Azure Portal.

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

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

  1. W witrynie Azure Portal wybierz kartę Przegląd dla usługi Device Provisioning Service.

  2. Skopiuj wartości Zakres identyfikatorów i Globalny punkt końcowy urządzenia.

    Zrzut ekranu przedstawiający zakres identyfikatorów i globalny punkt końcowy urządzenia w witrynie Azure Portal.

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

    1. Otwórz plik .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java w ulubionym edytorze.

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

    4. 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ąć klawisz 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.

    5. Zapisz zmiany.

  5. Skompiluj przykład, a następnie przejdź do target folderu .

    mvn clean install
    cd target
    
  6. Dane wyjściowe kompilacji .jar pliku w target folderze o następującym formacie pliku: provisioning-x509-sample-{version}-with-deps.jarna 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 [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!
    

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:

  1. W witrynie Azure Portal przejdź do usługi Device Provisioning Service.

  2. W menu Ustawienia wybierz pozycję Zarządzaj rejestracjami.

  3. Wybierz pozycję Rejestracje indywidualne. Na liście powinien zostać wyświetlony wpis rejestracji X.509 utworzony wcześniej my-x509-device.

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

  1. W witrynie Azure Portal przejdź do centrum IoT Hub, do którego przypisano Urządzenie.

  2. W menu Zarządzanie urządzeniami wybierz pozycję Urządzenia.

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

    Zrzut ekranu pokazujący, że urządzenie zostało zarejestrowane w centrum IoT Hub w witrynie Azure Portal.

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

  1. Zamknij okno danych wyjściowych przykładu klienta urządzenia na swojej maszynie.

  2. W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby.

  3. Wybierz usługę Device Provisioning Service.

  4. W menu Ustawienia wybierz pozycję Zarządzaj rejestracjami.

  5. Wybierz kartę Rejestracje indywidualne.

  6. Zaznacz pole wyboru obok identyfikatora rejestracji urządzenia zarejestrowanego w tym przewodniku Szybki start.

  7. W górnej części strony wybierz pozycję Usuń.

Usuwanie rejestracji urządzenia z usługi IoT Hub

  1. W menu po lewej stronie w witrynie Azure Portal wybierz pozycję Wszystkie zasoby.

  2. Wybierz centrum IoT Hub.

  3. W menu Eksploratory wybierz pozycję Urządzenia IoT.

  4. Zaznacz pole wyboru obok identyfikatora urządzenia zarejestrowanego w tym przewodniku Szybki start.

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