Share via


Skapa programmatiskt en individuell registrering av enhetsetableringstjänsten för TPM-attestering

Den här artikeln visar hur du programmatiskt skapar en enskild registrering för en TPM-enhet i Azure IoT Hub Device Provisioning Service med hjälp av Azure IoT Hub DPS-tjänstenS SDK och ett exempelprogram. När du har skapat den enskilda registreringen kan du registrera en simulerad TPM-enhet till etableringstjänsten via den här registreringsposten.

Även om de här stegen fungerar på både Windows- och Linux-datorer använder den här artikeln en Windows-utvecklingsdator.

Förutsättningar

  • Installera .NET 6.0 SDK eller senare eller senare på din Windows-baserade dator. Du kan använda följande kommando för att kontrollera din version.

    dotnet --info
    
  • (Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Spara bekräftelsenyckeln när du använder den senare i den här artikeln.

    Kommentar

    Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

  • Installera Node.js v4.0+.

  • (Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel och registrerings-ID för enheten. Spara bekräftelsenyckelnoch registrerings-ID:t när du använder dem senare i den här artikeln.

    Kommentar

    Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

  • Installera Java SE Development Kit 8. Den här artikeln installerar Java Service SDK senare i artikeln. Det fungerar på både Windows och Linux. Den här artikeln använder Windows.

  • Installera Maven 3.

  • Installera Git och se till att sökvägen läggs till i miljövariabeln PATH.

  • (Valfritt) Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Observera bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.

    Kommentar

    Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

Hämta TPM-bekräftelsenyckel (valfritt)

Du kan följa stegen i den här artikeln för att skapa ett exempel på individuell registrering. I det här fallet kan du visa registreringsposten i DPS, men du kommer inte att kunna använda den för att etablera en enhet.

Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Spara bekräftelsenyckeln när du använder den senare i den här artikeln.

Kommentar

Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel och registrerings-ID för enheten. Spara bekräftelsenyckelnoch registrerings-ID:t när du använder dem senare i den här artikeln.

Kommentar

Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

Du kan också välja att följa stegen i den här artikeln för att skapa en enskild registrering och registrera en simulerad TPM-enhet. Om du vill registrera en simulerad enhet i slutet av den här artikeln följer du proceduren i Skapa och etablera en simulerad TPM-enhet fram till steget där du får en bekräftelsenyckel för enheten. Observera bekräftelsenyckeln och registrerings-ID:t när du använder dem senare i den här artikeln.

Kommentar

Följ inte stegen för att skapa en enskild registrering med hjälp av Azure-portalen.

Hämta anslutningssträngen för etableringstjänsten

För exemplet i den här artikeln måste du kopiera anslutningssträng för etableringstjänsten.

  1. Logga in på Azure-portalen.

  2. På den vänstra menyn eller på portalsidan väljer du Alla resurser.

  3. Välj enhetsetableringstjänsten.

  4. I menyn Inställningar väljer du Principer för delad åtkomst.

  5. Välj den åtkomstprincip som du vill använda.

  6. I panelen Åtkomstprincip kopierar och sparar du den primära nyckeln anslutningssträng.

    Get provisioning service connection string from the portal.

Skapa ett exempel på enskild registrering

Det här avsnittet visar hur du skapar en .NET Core-konsolapp som lägger till en enskild registrering för en TPM-enhet i etableringstjänsten.

  1. Öppna en Windows-kommandotolk och gå till en mapp där du vill skapa din app.

  2. Kör följande kommando för att skapa ett konsolprojekt:

    dotnet new console --framework net6.0 --use-program-main 
    
  3. Om du vill lägga till en referens till DPS-tjänstens SDK kör du följande kommando:

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

    Det här steget laddar ned, installerar och lägger till en referens till Azure IoT DPS-tjänstklientens NuGet-paket och dess beroenden. Det här paketet innehåller binärfilerna för .NET Service SDK.

  4. Öppna filen Program.cs i ett redigeringsprogram.

  5. Ersätt namespace-instruktionen överst i filen med följande:

    namespace CreateIndividualEnrollment;
    
  6. Lägg till följande using instruktioner överst i filen ovanför -instruktionen namespace :

    using System.Threading.Tasks;
    using Microsoft.Azure.Devices.Provisioning.Service;
    
  7. Lägg till följande fält i Program klassen och gör ändringarna i listan.

    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;
    
    • ProvisioningServiceConnectionString Ersätt platshållarvärdet med anslutningssträng för etableringstjänsten som du kopierade i föregående avsnitt.

    • Om du använder den här artikeln tillsammans med snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet ersätter du bekräftelsenyckeln med det värde som du antecknade i den snabbstarten. Du kan ersätta enhets-ID och registrerings-ID med de värden som föreslås i den snabbstarten, använda dina egna värden eller använda standardvärdena i det här exemplet.

  8. Lägg till följande metod i Program klassen. Den här koden skapar en enskild registreringspost och anropar CreateOrUpdateIndividualEnrollmentAsync sedan metoden för ProvisioningServiceClient att lägga till den enskilda registreringen i etableringstjänsten.

    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. Ersätt slutligen Main metoden med följande rader:

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

  1. Från ett kommandofönster i arbetsmappen kör du:

    npm install azure-iot-provisioning-service
    

    Det här steget laddar ned, installerar och lägger till en referens till Azure IoT DPS-tjänstklientpaketet och dess beroenden. Det här paketet innehåller binärfilerna för Node.js-tjänstens SDK.

  2. Med en textredigerare skapar du filen create_individual_enrollment.js i arbetsmappen. Lägg till följande kod i filen:

    '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. Spara filen.

  1. Öppna en Windows-kommandotolk.

  2. Klona Microsoft Azure IoT SDK:er för Java GitHub-lagringsplatsen:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  3. Gå till exempelmappen:

    cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample
    
  4. Öppna filen \src\main\java\samples\com\microsoft\azure\sdk\iot\ServiceEnrollmentSample.java i ett redigeringsprogram.

  5. Ersätt [Provisioning Connection String] med anslutningssträng som du kopierade i Hämta anslutningssträng för etableringstjänsten.

    private static final String PROVISIONING_CONNECTION_STRING = "[Provisioning Connection String]";
    
  6. Lägg till TPM-enhetsinformationen. [RegistrationId] Ersätt och [TPM Endorsement Key] i följande instruktioner med din bekräftelsenyckel och registrerings-ID.

    private static final String REGISTRATION_ID = "[RegistrationId]";
    private static final String TPM_ENDORSEMENT_KEY = "[TPM Endorsement Key]";
    
    • Om du använder den här artikeln tillsammans med snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet använder du nyckelvärdena Registrerings-ID och Bekräftelse som du antecknade från den snabbstarten.

    • Om du använder den här artikeln för att bara skapa en enskild exempelregistrering och inte tänker använda den för att registrera en enhet kan du använda följande värde för en bekräftelsenyckel:

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

      Ange ditt eget värde för registrerings-ID:t, till exempel "myJavaDevice".

  7. För enskilda registreringar kan du välja att ange ett enhets-ID som DPS tilldelar enheten när den etablerar den till IoT Hub. Om du inte tilldelar ett enhets-ID använder DPS registrerings-ID:t som enhets-ID. Som standard tilldelar det här exemplet "myJavaDevice" som enhets-ID. Om du vill ändra enhets-ID:t ändrar du följande instruktion:

        private static final String DEVICE_ID = "myJavaDevice";
    

    Om du inte vill tilldela ett specifikt enhets-ID kommenterar du ut följande instruktion:

    individualEnrollment.setDeviceId(DEVICE_ID);
    
  8. Med exemplet kan du ange en IoT-hubb i den enskilda registreringen som enheten ska etableras till. Den här IoT-hubben måste vara en som tidigare har länkats till etableringstjänsten. I den här artikeln låter vi DPS välja mellan de länkade hubbarna enligt standardallokeringsprincipen, jämnt viktad distribution. Kommentera ut följande instruktion i filen:

    individualEnrollment.setIotHubHostName(IOTHUB_HOST_NAME);
    
  9. Exemplet skapar, uppdaterar, frågar och tar bort en enskild TPM-enhetsregistrering. Om du vill verifiera lyckad registrering i portalen kommenterar du tillfälligt ut följande kodrader i slutet av filen:

    // *********************************** Delete info of individualEnrollment ************************************
    System.out.println("\nDelete the individualEnrollment...");
    provisioningServiceClient.deleteIndividualEnrollment(REGISTRATION_ID);
    
  10. Spara dina ändringar.

Köra exemplet på enskild registrering

  1. Kör exemplet:

    dotnet run
    
  2. När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.

För att köra exemplet behöver du anslutningssträng för etableringstjänsten som du kopierade i föregående avsnitt och bekräftelsenyckeln för enheten. Om du har följt snabbstarten Skapa och etablera en simulerad enhet för att skapa en simulerad TPM-enhet använder du bekräftelsenyckeln som skapats för den enheten. Om du vill skapa en exempelregistrering kan du använda följande bekräftelsenyckel som medföljer Node.js Service SDK:

AToAAQALAAMAsgAgg3GXZ0SEs/gakMyNRqXXJP1S124GUgtk8qHaGzMUaaoABgCAAEMAEAgAAAAAAAEAxsj2gUScTk1UjuioeTlfGYZrrimExB+bScH75adUMRIi2UOMxG1kw4y+9RW/IVoMl4e620VxZad0ARX2gUqVjYO7KPVt3dyKhZS3dkcvfBisBhP1XH9B33VqHG9SHnbnQXdBUaCgKAfxome8UmBKfe+naTsE5fkvjb/do3/dD6l4sGBwFCnKRdln4XpM03zLpoHFao8zOwt8l/uP3qUIxmCYv9A7m69Ms+5/pCkTu/rK4mRDsfhZ0QLfbzVI6zQFOKF/rwsfBtFeWlWtcuJMKlXdD8TXWElTzgh7JS4qhFzreL0c1mI0GCj+Aws0usZh7dLIVPnlgZcBhgy1SSDQMQ==
  1. Om du vill skapa en enskild registrering för din TPM-enhet kör du följande kommando (ta med citattecknen runt kommandoargumenten):

    node create_individual_enrollment.js "<the connection string for your provisioning service>" "<endorsement key>"
    
  2. När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.

  1. Från mappen azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-sample i kommandotolken kör du följande kommando för att skapa exemplet:

    mvn install -DskipTests
    

    Det här kommandot laddar ned Azure IoT DPS-tjänstklienten Maven-paketet till datorn och skapar exemplet. Det här paketet innehåller binärfilerna för Java Service SDK.

  2. Växla till målmappen och kör exemplet. Versionen i föregående steg matar ut .jar-filen i målmappenmed följande filformat: service-enrollment-sample-{version}-with-deps.jar; till exempel: service-enrollment-sample-1.8.1-with-deps.jar. Du kan behöva ersätta versionen i följande kommando.

    cd target
    java -jar ./service-enrollment-sample-1.8.1-with-deps.jar
    
  3. När det har skapats visar kommandofönstret egenskaperna för den nya registreringen.

Så här kontrollerar du att den enskilda registreringen har skapats:

  1. Gå till instansen av enhetsetableringstjänsten i Azure-portalen.

  2. På menyn Inställningar väljer du Hantera registreringar.

  3. Välj fliken Enskilda registreringar . Du bör se en ny registreringspost som motsvarar det registrerings-ID som du använde i exemplet.

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.

Registrera en simulerad enhet (valfritt)

Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.

Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.

Om du har följt stegen i snabbstarten Skapa och etablera en simulerad TPM-enhet för att etablera en simulerad enhet återupptar du snabbstarten på Registrera enheten.

Rensa resurser

Om du planerar att utforska DPS-självstudierna ska du inte rensa resurserna som skapas i den här artikeln. Annars kan du använda följande steg för att ta bort alla resurser som skapats av den här artikeln.

  1. Gå till instansen av enhetsetableringstjänsten i Azure-portalen.

  2. På menyn Inställningar väljer du Hantera registreringar.

  3. Välj fliken Enskilda registreringar .

  4. Markera kryssrutan bredvid registrerings-ID:t för registreringsposten som du skapade i den här artikeln.

  5. Välj Ta bort längst upp på sidan.

  1. Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:

    1. I Azure-portalen går du till den IoT Hub där din enhet etablerades.

    2. På den vänstra menyn under Enhetshantering väljer du Enheter.

    3. Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.

    4. Längst upp i fönstret väljer du Ta bort.

  1. Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:

    1. Stäng TPM-simulatorfönstret och exempelutdatafönstret för den simulerade enheten.

    2. I Azure-portalen går du till den IoT Hub där din enhet etablerades.

    3. På den vänstra menyn under Enhetshantering väljer du Enheter.

    4. Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.

    5. Längst upp i fönstret väljer du Ta bort.

  1. Om du följde stegen i Skapa och etablera en simulerad TPM-enhet för att skapa en simulerad TPM-enhet gör du följande:

    1. Stäng TPM-simulatorfönstret och exempelutdatafönstret för den simulerade enheten.

    2. I Azure-portalen går du till den IoT Hub där din enhet etablerades.

    3. På den vänstra menyn under Enhetshantering väljer du Enheter.

    4. Markera kryssrutan bredvid enhets-ID:t för den enhet som du registrerade i den här artikeln.

    5. Längst upp i fönstret väljer du Ta bort.

Nästa steg

I den här artikeln har du programmatiskt skapat en enskild registreringspost för en TPM-enhet. Du kan också skapa en TPM-simulerad enhet på datorn och etablera den till din IoT-hubb med hjälp av Azure IoT Hub Device Provisioning Service. Mer information finns på följande länkar: