Programowe tworzenie indywidualnej rejestracji usługi Device Provisioning Service na potrzeby zaświadczania modułu TPM

W tym artykule pokazano, jak programowo utworzyć rejestrację indywidualną dla urządzenia TPM w usłudze Azure IoT Hub Device Provisioning przy użyciu zestawu SDK usługi AZURE IoT Hub DPS i przykładowej aplikacji. Po utworzeniu rejestracji indywidualnej możesz opcjonalnie zarejestrować symulowane urządzenie TPM w usłudze aprowizacji za pomocą tego wpisu rejestracji.

Mimo że te kroki działają zarówno na komputerach z systemami Windows, jak i Linux, w tym artykule jest używany komputer deweloperzy z systemem Windows.

Wymagania wstępne

  • Zainstaluj zestaw .NET 6.0 SDK lub nowszy lub nowszy na maszynie z systemem Windows. Aby sprawdzić wersję, możesz użyć następującego polecenia.

    dotnet --info
    
  • (Opcjonalnie) Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia dla urządzenia. Zapisz klucz poręczenia w dalszej części tego artykułu.

    Uwaga

    Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

  • Zainstaluj środowisko Node.js w wersji 4.0 lub nowszej.

  • (Opcjonalnie) Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia i identyfikator rejestracji urządzenia. Zapisz klucz poręczenia i identyfikator rejestracji, korzystając z nich w dalszej części tego artykułu.

    Uwaga

    Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

  • Zainstaluj zestaw Java SE Development Kit 8. W tym artykule zostanie zainstalowany zestaw SDK usługi Java w dalszej części artykułu. Działa zarówno w systemach Windows, jak i Linux. W tym artykule jest używany system Windows.

  • Zainstaluj narzędzie Maven 3.

  • Zainstaluj narzędzie Git i upewnij się, że ścieżka jest dodawana do zmiennej środowiskowej PATH.

  • (Opcjonalnie) Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia dla urządzenia. Zanotuj klucz poręczenia i identyfikator rejestracji, korzystając z nich w dalszej części tego artykułu.

    Uwaga

    Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

Uzyskiwanie klucza poręczenia modułu TPM (opcjonalnie)

Aby utworzyć przykładową rejestrację indywidualną, możesz wykonać kroki opisane w tym artykule. W takim przypadku będzie można wyświetlić wpis rejestracji w usłudze DPS, ale nie będzie można go użyć do aprowizowania urządzenia.

Możesz również wykonać kroki opisane w tym artykule, aby utworzyć rejestrację indywidualną i zarejestrować symulowane urządzenie TPM. Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia dla urządzenia. Zapisz klucz poręczenia, ponieważ będzie używany w dalszej części tego artykułu.

Uwaga

Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

Możesz również wykonać kroki opisane w tym artykule, aby utworzyć rejestrację indywidualną i zarejestrować symulowane urządzenie TPM. Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia i identyfikator rejestracji urządzenia. Zapisz klucz poręczenia i identyfikator rejestracji, korzystając z nich w dalszej części tego artykułu.

Uwaga

Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

Możesz również wykonać kroki opisane w tym artykule, aby utworzyć rejestrację indywidualną i zarejestrować symulowane urządzenie TPM. Jeśli chcesz zarejestrować symulowane urządzenie na końcu tego artykułu, postępuj zgodnie z procedurą w temacie Tworzenie i aprowizuj symulowane urządzenie TPM do kroku, w którym uzyskasz klucz poręczenia dla urządzenia. Zanotuj klucz poręczenia i identyfikator rejestracji, korzystając z nich w dalszej części tego artykułu.

Uwaga

Nie należy wykonywać kroków tworzenia rejestracji indywidualnej przy użyciu witryny Azure Portal.

Uzyskiwanie parametrów połączenia usługi aprowizacji

Aby uzyskać przykład w tym artykule, musisz skopiować parametry połączenia dla usługi aprowizacji.

  1. Zaloguj się w witrynie Azure Portal.

  2. W menu po lewej stronie lub na stronie portalu wybierz pozycję Wszystkie zasoby.

  3. Wybierz usługę Device Provisioning Service.

  4. W menu Ustawienia wybierz pozycję Zasady dostępu współdzielonego.

  5. Wybierz zasady dostępu, których chcesz użyć.

  6. Na panelu Zasady dostępu skopiuj i zapisz klucz podstawowy parametry połączenia.

    Get provisioning service connection string from the portal.

Tworzenie przykładowej rejestracji indywidualnej

W tej sekcji pokazano, jak utworzyć aplikację konsolową platformy .NET Core, która dodaje rejestrację indywidualną dla urządzenia TPM do usługi aprowizacji.

  1. Otwórz wiersz polecenia systemu Windows i przejdź do folderu, w którym chcesz utworzyć aplikację.

  2. Aby utworzyć projekt konsoli, uruchom następujące polecenie:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Aby dodać odwołanie do zestawu SDK usługi DPS, uruchom następujące polecenie:

    dotnet add package Microsoft.Azure.Devices.Provisioning.Service 
    

    Ten krok pobiera, instaluje i dodaje odwołanie do pakietu NuGet klienta usługi Azure IoT DPS i jego zależności. Ten pakiet zawiera pliki binarne zestawu SDK usługi .NET.

  4. Otwórz plik Program.cs w edytorze.

  5. Zastąp instrukcję przestrzeni nazw w górnej części pliku następującymi elementami:

    namespace CreateIndividualEnrollment;
    
  6. Dodaj następujące using instrukcje w górnej części pliku powyżej instrukcji namespace :

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Dodaj następujące pola do Program klasy i wprowadź wymienione zmiany.

    private static string ProvisioningConnectionString = "{ProvisioningServiceConnectionString}";
    private const string RegistrationId = "sample-registrationid-csharp";
    private const string TpmEndorsementKey =
        "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUS" +
        "cTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3d" +
        "yKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKR" +
        "dln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFe" +
        "WlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==";
    
    // Optional parameters
    private const string OptionalDeviceId = "myCSharpDevice";
    private const ProvisioningStatus OptionalProvisioningStatus = ProvisioningStatus.Enabled;
    
    • Zastąp wartość symbolu ProvisioningServiceConnectionString zastępczego parametry połączenia usługi aprowizacji skopiowaną w poprzedniej sekcji.

    • Jeśli używasz tego artykułu razem z przewodnikiem Szybki start Tworzenie i aprowizuj symulowane urządzenie TPM, aby aprowizować symulowane urządzenie, zastąp klucz poręczenia wartością zanotowaną w tym przewodniku Szybki start. Identyfikator urządzenia i identyfikator rejestracji można zastąpić wartościami sugerowanymi w tym przewodniku Szybki start, użyć własnych wartości lub użyć wartości domyślnych w tym przykładzie.

  8. Dodaj następującą metodę do Program klasy . Ten kod tworzy wpis rejestracji indywidualnej, a następnie wywołuje CreateOrUpdateIndividualEnrollmentAsync metodę w ProvisioningServiceClient obiekcie , aby dodać rejestrację indywidualną do usługi aprowizacji.

    public static async Task RunSample()
    {
        Console.WriteLine("Starting sample...");
    
        using (ProvisioningServiceClient provisioningServiceClient =
                ProvisioningServiceClient.CreateFromConnectionString(ProvisioningConnectionString))
        {
            #region Create a new individualEnrollment config
            Console.WriteLine("\nCreating a new individualEnrollment object...");
            Attestation attestation = new TpmAttestation(TpmEndorsementKey);
            IndividualEnrollment individualEnrollment =
                    new IndividualEnrollment(
                            RegistrationId,
                            attestation);
    
            // The following parameters are optional. Remove them if you don't need them.
            individualEnrollment.DeviceId = OptionalDeviceId;
            individualEnrollment.ProvisioningStatus = OptionalProvisioningStatus;
            #endregion
    
            #region Create the individualEnrollment
            Console.WriteLine("\nAdding the individualEnrollment to the provisioning service...");
            IndividualEnrollment individualEnrollmentResult =
                await provisioningServiceClient.CreateOrUpdateIndividualEnrollmentAsync(individualEnrollment).ConfigureAwait(false);
            Console.WriteLine("\nIndividualEnrollment created with success.");
            Console.WriteLine(individualEnrollmentResult);
            #endregion
    
        }
    }
    
  9. Na koniec zastąp metodę Main następującymi wierszami:

    static async Task Main(string[] args)
    {
        await RunSample();
        Console.WriteLine("\nHit <Enter> to exit ...");
        Console.ReadLine();
    }
    
  10. Zapisz zmiany.

  1. Z poziomu okna polecenia w folderze roboczym uruchom następujące polecenie:

    npm install azure-iot-provisioning-service
    

    Ten krok pobiera, instaluje i dodaje odwołanie do pakietu klienta usługi Azure IoT DPS i jego zależności. Ten pakiet zawiera pliki binarne zestawu SDK usługi Node.js.

  2. Za pomocą edytora tekstu utwórz plik create_individual_enrollment.js w folderze roboczym. Dodaj następujący kod do pliku:

    'use strict';
    
    var provisioningServiceClient = require('azure-iot-provisioning-service').ProvisioningServiceClient;
    
    var serviceClient = provisioningServiceClient.fromConnectionString(process.argv[2]);
    var endorsementKey = process.argv[3];
    
    var enrollment = {
      registrationId: 'first',
      attestation: {
        type: 'tpm',
        tpm: {
          endorsementKey: endorsementKey
        }
      }
    };
    
    serviceClient.createOrUpdateIndividualEnrollment(enrollment, function(err, enrollmentResponse) {
      if (err) {
        console.log('error creating the individual enrollment: ' + err);
      } else {
        console.log("enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2));
      }
    });
    
  3. Zapisz plik.

  1. Otwórz wiersz polecenia systemu Windows.

  2. Sklonuj zestawy SDK usługi Microsoft Azure IoT dla repozytorium GitHub języka Java:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Przejdź do folderu przykładowego:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Otwórz plik \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java w edytorze.

  5. Zastąp [Provisioning Connection String] wartość parametry połączenia skopiowaną w sekcji Pobierz parametry połączenia dla usługi aprowizacji.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Dodaj szczegóły urządzenia TPM. Zastąp wartości i [RegistrationId][TPM Endorsement Key] w poniższych instrukcjach kluczem poręczenia i identyfikatorem rejestracji.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Jeśli używasz tego artykułu razem z przewodnikiem Szybki start Tworzenie i aprowizuj symulowane urządzenie TPM, aby aprowizować symulowane urządzenie, użyj wartości identyfikatora rejestracji i klucza poręczenia zanotowanych w tym przewodniku Szybki start.

    • Jeśli używasz tego artykułu do utworzenia przykładowej rejestracji indywidualnej i nie zamierzasz jej używać do rejestrowania urządzenia, możesz użyć następującej wartości dla klucza poręczenia:

      private static final String TPM_ENDORSEMENT_KEY = "AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnefZcBhgy1SSDQMQ==";
      

      Wprowadź własną wartość identyfikatora rejestracji, na przykład "myJavaDevice".

  7. W przypadku rejestracji indywidualnych można ustawić identyfikator urządzenia przypisany przez usługę DPS do urządzenia, gdy aprowizuje je w usłudze IoT Hub. Jeśli nie przypiszesz identyfikatora urządzenia, usługa DPS używa identyfikatora rejestracji jako identyfikatora urządzenia. Domyślnie ten przykład przypisuje identyfikator urządzenia "myJavaDevice". Jeśli chcesz zmienić identyfikator urządzenia, zmodyfikuj następującą instrukcję:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Jeśli nie chcesz przypisywać określonego identyfikatora urządzenia, oznacz jako komentarz następującą instrukcję:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Przykład umożliwia ustawienie centrum IoT w ramach rejestracji indywidualnej w celu aprowizacji urządzenia. To centrum IoT musi być takie, które zostało wcześniej połączone z usługą aprowizacji. W tym artykule możemy wybrać usługę DPS z połączonych centrów zgodnie z domyślnymi zasadami alokacji, równomiernie ważonymi dystrybucjami. Oznacz następującą instrukcję w pliku jako komentarz:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. Przykład tworzy, aktualizuje, wykonuje zapytania i usuwa rejestrację poszczególnych urządzeń TPM. Aby zweryfikować pomyślną rejestrację w portalu, tymczasowo oznacz jako komentarz następujące wiersze kodu na końcu pliku:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Zapisz zmiany.

Uruchamianie przykładowej rejestracji indywidualnej

  1. Uruchom przykład:

    dotnet run
    
  2. Po pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej rejestracji.

Aby uruchomić przykład, potrzebujesz parametry połączenia dla usługi aprowizacji skopiowanych w poprzedniej sekcji oraz klucza poręczenia dla urządzenia. Jeśli wykonano czynności opisane w przewodniku Szybki start Tworzenie i aprowizowania symulowanego urządzenia w celu utworzenia symulowanego urządzenia TPM, użyj klucza poręczenia utworzonego dla tego urządzenia. W przeciwnym razie, aby utworzyć przykładową rejestrację indywidualną, możesz użyć następującego klucza poręczenia dostarczonego z zestawem SDK usługi Node.js:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Aby utworzyć rejestrację indywidualną dla urządzenia TPM, uruchom następujące polecenie (z uwzględnieniem cudzysłowów wokół argumentów polecenia):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. Po pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej rejestracji.

  1. W folderze azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample w wierszu polecenia uruchom następujące polecenie, aby skompilować przykład:

    mvn install -DskipTests
    

    To polecenie pobiera pakiet Maven klienta usługi Azure IoT DPS na maszynę i kompiluje przykład. Ten pakiet zawiera pliki binarne zestawu SDK usługi Java.

  2. Przejdź do folderu docelowego i uruchom przykład. Kompilacja w poprzednim kroku generuje plik jar w folderze docelowym o następującym formacie pliku: service-enrollment-sample-{version}-with-deps.jarna przykład: service-enrollment-sample-1.8.1-with-deps.jar. Może być konieczne zastąpienie wersji w poniższym poleceniu.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. Po pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej rejestracji.

Aby sprawdzić, czy rejestracja indywidualna została utworzona:

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

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

  3. Wybierz kartę Rejestracje indywidualne. Powinien zostać wyświetlony nowy wpis rejestracji odpowiadający identyfikatorowi rejestracji użytemu w przykładzie.

Screenshot that shows verifying enrollment for a C# individual device in the portal.

Screenshot that shows verifying enrollment for a Node.js individual device in the portal.

Screenshot that shows verifying enrollment for a Java individual device in the portal.

Rejestrowanie symulowanego urządzenia (opcjonalnie)

Jeśli wykonano kroki opisane w przewodniku Szybki start Tworzenie i aprowizuj symulowane urządzenie TPM w celu aprowizowania symulowanego urządzenia, wznów przewodnik Szybki start w temacie Rejestrowanie urządzenia.

Jeśli wykonano kroki opisane w przewodniku Szybki start Tworzenie i aprowizuj symulowane urządzenie TPM w celu aprowizowania symulowanego urządzenia, wznów przewodnik Szybki start w temacie Rejestrowanie urządzenia.

Jeśli wykonano kroki opisane w przewodniku Szybki start Tworzenie i aprowizuj symulowane urządzenie TPM w celu aprowizowania symulowanego urządzenia, wznów przewodnik Szybki start w temacie Rejestrowanie urządzenia.

Czyszczenie zasobów

Jeśli planujesz zapoznać się z samouczkami usługi DPS, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie wykonaj następujące kroki, aby usunąć wszystkie zasoby utworzone w tym artykule.

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

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

  3. Wybierz kartę Rejestracje indywidualne.

  4. Zaznacz pole wyboru obok identyfikatora rejestracji wpisu rejestracji utworzonego w tym artykule.

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

  1. Jeśli wykonano kroki opisane w temacie Tworzenie i aprowizuj symulowane urządzenie TPM w celu utworzenia symulowanego urządzenia TPM, wykonaj następujące czynności:

    1. W witrynie Azure Portal przejdź do usługi IoT Hub, w której zaaprowizowano urządzenie.

    2. W menu po lewej stronie w obszarze Zarządzanie urządzeniami wybierz pozycję Urządzenia.

    3. Zaznacz pole wyboru obok identyfikatora urządzenia zarejestrowanego w tym artykule.

    4. W górnej części okienka wybierz pozycję Usuń.

  1. Jeśli wykonano kroki opisane w temacie Tworzenie i aprowizuj symulowane urządzenie TPM w celu utworzenia symulowanego urządzenia TPM, wykonaj następujące czynności:

    1. Zamknij okno symulatora modułu TPM i przykładowe okno danych wyjściowych urządzenia symulowanego.

    2. W witrynie Azure Portal przejdź do usługi IoT Hub, w której zaaprowizowano urządzenie.

    3. W menu po lewej stronie w obszarze Zarządzanie urządzeniami wybierz pozycję Urządzenia.

    4. Zaznacz pole wyboru obok identyfikatora urządzenia zarejestrowanego w tym artykule.

    5. W górnej części okienka wybierz pozycję Usuń.

  1. Jeśli wykonano kroki opisane w temacie Tworzenie i aprowizuj symulowane urządzenie TPM w celu utworzenia symulowanego urządzenia TPM, wykonaj następujące czynności:

    1. Zamknij okno symulatora modułu TPM i przykładowe okno danych wyjściowych urządzenia symulowanego.

    2. W witrynie Azure Portal przejdź do usługi IoT Hub, w której zaaprowizowano urządzenie.

    3. W menu po lewej stronie w obszarze Zarządzanie urządzeniami wybierz pozycję Urządzenia.

    4. Zaznacz pole wyboru obok identyfikatora urządzenia zarejestrowanego w tym artykule.

    5. W górnej części okienka wybierz pozycję Usuń.

Następne kroki

W tym artykule programowo utworzono wpis rejestracji indywidualnej dla urządzenia TPM. Opcjonalnie utworzono symulowane urządzenie TPM na komputerze i aprowizować je w centrum IoT przy użyciu usługi Azure IoT Hub Device Provisioning. Aby dowiedzieć się więcej, zapoznaj się z następującymi linkami: