Condividi tramite


Avvio rapido: effettuare il provisioning di un dispositivo simulato con certificato X.509

In questa guida di avvio rapido si crea un dispositivo simulato nel computer Windows. Il dispositivo simulato è configurato per l'uso dell'attestazione del certificato X.509 per l'autenticazione. Dopo aver configurato il dispositivo, eseguirne il provisioning nell'hub IoT usando il servizio Device Provisioning in hub IoT di Azure.

Se non si ha familiarità con il processo di provisioning, esaminare la panoramica del provisioning . Assicurarsi anche di completare i passaggi descritti in Avvio rapido: Configurare il servizio Device Provisioning in hub IoT con il portale di Azure prima di continuare.

Questa guida di avvio rapido illustra una soluzione per una workstation basata su Windows. Tuttavia, è anche possibile eseguire le procedure in Linux. Per un esempio di Linux, vedere Esercitazione: effettuare il provisioning per la latenza geografica.

Prerequisites

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

  • Installare Visual Studio 2022 con il carico di lavoro Sviluppo di applicazioni desktop con C++ abilitato. Sono supportati anche Visual Studio 2015, Visual Studio 2017 e Visual Studio 19. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

  • Installare il sistema di compilazione CMake più recente. Assicurarsi di selezionare l'opzione che aggiunge il file eseguibile di CMake al percorso.

    Important

    Verificare che nel computer siano installati i prerequisiti di Visual Studio (Visual Studio e il carico di lavoro "Sviluppo per desktop con C++") prima di avviare l'installazione CMake. Quando i prerequisiti sono pronti e il download è stato verificato, installare il sistema di compilazione CMake. Inoltre, le versioni precedenti del sistema di compilazione CMake non riescono a generare il file di soluzione usato in questo articolo. Assicurarsi di usare la versione più recente di CMake.

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

  • Installare .NET SDK 6.0 o versione successiva nel computer basato su Windows. È possibile usare il comando seguente per controllare la versione.

    dotnet --info
    

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows.

I prerequisiti seguenti si riferiscono a un ambiente di sviluppo Windows. Per Linux o macOS, vedere la sezione appropriata in Preparare l'ambiente di sviluppo nella documentazione dell'SDK.

  • Installare la versione più recente di Git. Verificare che Git venga aggiunto alle variabili di ambiente accessibili alla finestra di comando. Vedere gli strumenti client Git di Software Freedom Conservancy per la versione più recente degli strumenti git da installare, tra cui Git Bash, l'app da riga di comando che è possibile usare per interagire con il repository Git locale.

  • Assicurarsi che OpenSSL sia installato nel computer. In Windows l'installazione di Git include un'installazione di OpenSSL. È possibile accedere a OpenSSL dal prompt di Git Bash. Per verificare che OpenSSL sia installato, aprire un prompt di Git Bash e immettere openssl version.

    Note

    A meno che non si abbia familiarità con OpenSSL e che sia già installato nel computer Windows, è consigliabile usare OpenSSL dal prompt di Git Bash. In alternativa, è possibile scegliere di scaricare il codice sorgente e compilare OpenSSL. Per altre informazioni, vedere la pagina Download di OpenSSL. In alternativa, è possibile scaricare OpenSSL predefinito da un provider non Microsoft. Per altre informazioni, vedere la pagina Wiki di OpenSSL. Microsoft non garantisce la validità dei pacchetti scaricati da provider non Microsoft. Se si sceglie di compilare o scaricare OpenSSL, assicurarsi che il file binario OpenSSL sia accessibile nel percorso e che la variabile di ambiente OPENSSL_CNF sia impostata sul percorso del file openssl.cnf.

  • Aprire sia un prompt dei comandi di Windows che un prompt di Git Bash.

    I passaggi descritti in questa guida introduttiva presuppongono che si usi un computer Windows e l'installazione di OpenSSL installata come parte di Git. Usare il prompt di Git Bash per eseguire comandi OpenSSL e il prompt dei comandi di Windows per tutto il resto. Se si usa Linux, è possibile eseguire tutti i comandi da una shell Bash.

Preparare l'ambiente di sviluppo

In questa sezione viene preparato un ambiente di sviluppo usato per compilare Azure IoT C SDK. Il codice di esempio tenta di effettuare il provisioning del dispositivo durante la sequenza di avvio del dispositivo.

  1. Aprire un browser Web e passare alla pagina Versione di Azure IoT C SDK.

  2. Selezionare la scheda Tag nella parte superiore della pagina.

  3. Copiare il nome del tag per la versione più recente di Azure IoT C SDK.

  4. Nel prompt dei comandi di Windows eseguire i comandi seguenti per clonare la versione più recente del repository GitHub di Azure IoT Device SDK per C. Sostituire <release-tag> con il tag copiato nel passaggio precedente, ad esempio: 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
    

    Il completamento dell'operazione potrebbe richiedere alcuni minuti.

  5. Al termine dell'operazione, eseguire i comandi seguenti dalla directory azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  6. L'esempio di codice usa un certificato X.509 per fornire l'attestazione tramite l'autenticazione X.509. Eseguire il comando seguente per compilare una versione dell'SDK specifica per la piattaforma di sviluppo che include il client di provisioning di dispositivi. Viene generata una soluzione di Visual Studio per il dispositivo simulato nella directory cmake.

    Quando si specifica il percorso usato con -Dhsm_custom_lib nel comando seguente, assicurarsi di usare il percorso assoluto della libreria nella directory cmake creata in precedenza. Il percorso illustrato presuppone che l'SDK C sia stato clonato nella directory radice dell'unità C. Se è stata usata un'altra directory, modificare il percorso di conseguenza.

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

Tip

Se cmake non trova il compilatore C++, è possibile che si verifichino errori di compilazione durante l'esecuzione del comando precedente. In tal caso, provare a eseguire il comando nel prompt dei comandi per gli sviluppatori di Visual Studio.

  1. Quando la compilazione ha esito positivo, le ultime righe di output hanno un aspetto simile all'output seguente:

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

Nel prompt dei comandi di Windows clonare il repository GitHub azure IoT SDK per .NET usando il comando seguente:

git clone https://github.com/Azure/azure-iot-sdk-csharp.git

Nel prompt dei comandi di Windows clonare il repository GitHub azure IoT Node.js SDK usando il comando seguente:

git clone https://github.com/Azure/azure-iot-sdk-node.git

Nel prompt dei comandi di Windows, clonare il repository GitHub Azure IoT Python SDK usando il comando seguente:

git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive

Note

Gli esempi usati in questa esercitazione si trovano nel ramo v2 del repository azure-iot-sdk-python. La versione 3 di Python SDK è disponibile per l'uso in versione beta.

  1. Nel prompt dei comandi di Windows, clonare il repository GitHub Azure IoT SDKs per Java usando il comando seguente:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  2. Passare alla directory azure-iot-sdk-java della radice e compilare il progetto per scaricare tutti i pacchetti necessari.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Creare un certificato per un dispositivo X.509 autofirmato

In questa sezione si usa OpenSSL per creare un certificato X.509 autofirmato e una chiave privata. Questo certificato viene caricato nell'istanza del servizio di provisioning e verificato dal servizio.

Caution

Usare i certificati creati con OpenSSL in questa guida introduttiva solo per i test di sviluppo. Non usare questi certificati nell'ambiente di produzione. Questi certificati scadono dopo 30 giorni e possono contenere password hardcoded, ad esempio 1234. Per informazioni su come ottenere certificati adatti per l'uso nell'ambiente di produzione, vedere Come ottenere un certificato CA X.509 nella documentazione hub IoT di Azure.

Eseguire i passaggi descritti in questa sezione nel prompt di Git Bash.

  1. Nel prompt di Git Bash passare a una directory in cui si vogliono creare i certificati.

  2. Eseguire il comando seguente:

    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"
    

    Important

    La barra aggiuntiva specificata per il nome del soggetto (//CN=my-x509-device) è necessaria solo per eseguire l'escape della stringa con Git nelle piattaforme Windows.

  3. Quando viene richiesto di immettere la passphrase PEM, usare la passphrase 1234.

  4. Quando viene chiesto Verifica - Immettere la passphrase PEM:, usare di nuovo la passphrase 1234.

    È ora necessario generare un file di certificato a chiave pubblica (device-cert.pem) e un file di chiave privata (device-key.pem) nella directory in cui è stato eseguito il comando openssl.

    Il nome comune del soggetto (CN) del file del certificato è impostato su my-x509-device. Per le registrazioni basate su X.509, l'ID registrazione è impostato sul nome comune. L'ID registrazione è una stringa di caratteri alfanumerici senza distinzione tra maiuscole e minuscole più i caratteri speciali: '-', '.', '_', ':'. L'ultimo carattere deve essere alfanumerico o un trattino ('-'). Il nome comune deve rispettare questo formato. Il DPS supporta ID di registrazione di lunghezza fino a 128 caratteri; tuttavia, la lunghezza massima del nome comune del soggetto in un certificato X.509 è di 64 caratteri. L'ID di registrazione, pertanto, è limitato a 64 caratteri quando si usano certificati X.509.

  5. Il file del certificato dispone della codifica Base 64. Per visualizzare il nome comune del soggetto e altre proprietà del file di certificato, immettere il comando seguente:

    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. Il codice di esempio richiede una chiave privata non crittografata. Eseguire il comando seguente per creare una chiave privata non crittografata:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Quando viene chiesto di immettere la passphrase per device-key.pem:, usare la stessa passphrase usata in precedenza, 1234.

Tenere aperto il prompt di Git Bash. Sarà necessario più avanti in questa guida introduttiva.

Il codice di esempio C# è configurato per l'uso di certificati X.509 archiviati in un file formattato PKCS #12 protetto da password (certificate.pfx). È ancora necessario il file di certificato (device-cert.pem) a chiave pubblica formattato PEM appena creato per creare una singola voce di registrazione più avanti in questo argomento di avvio rapido.

  1. Per generare il file formattato PKCS12 previsto dall'esempio, immettere il comando seguente:

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. Quando viene chiesto di immettere la passphrase per device-key.pem:, usare la stessa passphrase usata in precedenza, 1234.

  3. Quando viene richiesto Immettere la password di esportazione: usare la password 1234.

  4. Quando viene chiesto Verifica - Immettere la password di esportazione:, usare di nuovo la password 1234.

    È ora necessario generare un file di certificato formattato PKCS12 (certificate.pfx) nella directory in cui è stato eseguito il comando openssl.

  5. Copiare il file di certificato formattato PKCS12 nella directory del progetto per l'esempio di provisioning di dispositivi X.509. Il percorso specificato è relativo alla posizione in cui è stato scaricato il repository di esempio.

    cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
    

Non è necessario il prompt di Git Bash per il resto di questa guida introduttiva. Tuttavia, potrebbe essere necessario mantenerlo aperto per controllare il certificato in caso di problemi nei passaggi successivi.

  1. Il codice di esempio richiede una chiave privata non crittografata. Eseguire il comando seguente per creare una chiave privata non crittografata:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. Quando viene chiesto di immettere la passphrase per device-key.pem:, usare la stessa passphrase usata in precedenza, 1234.

  3. Copiare il certificato del dispositivo e la chiave privata non crittografata nella directory del progetto per l'esempio di provisioning del dispositivo X.509. Il percorso specificato è relativo al percorso in cui è stato scaricato l'SDK.

    cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples
    cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
    

Non è necessario il prompt di Git Bash per il resto di questa guida introduttiva. Tuttavia, potrebbe essere necessario mantenerlo aperto per controllare il certificato in caso di problemi nei passaggi successivi.

  1. Copiare il certificato del dispositivo e la chiave privata nella directory del progetto per l'esempio di provisioning del dispositivo X.509. Il percorso specificato è relativo al percorso in cui è stato scaricato l'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
    

Non è necessario il prompt di Git Bash per il resto di questa guida introduttiva. Tuttavia, potrebbe essere necessario mantenerlo aperto per controllare il certificato in caso di problemi nei passaggi successivi.

  1. Il codice di esempio Java richiede una chiave privata non crittografata. Eseguire il comando seguente per creare una chiave privata non crittografata:

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. Quando viene chiesto di immettere la passphrase per device-key.pem:, usare la stessa passphrase usata in precedenza, 1234.

Tenere aperto il prompt di Git Bash. Sarà necessario più avanti in questa guida introduttiva.

Creare una registrazione dei dispositivi

Il servizio Device Provisioning in Azure IoT supporta due tipi di registrazione:

Questo articolo illustra una registrazione singola per un singolo dispositivo di cui eseguire il provisioning con un hub IoT.

  1. Accedere al portale di Azure e aprire l'istanza del servizio Device Provisioning.

  2. Selezionare Gestisci registrazioni nella sezione Impostazioni del menu delle risorse.

  3. Selezionare la scheda Registrazioni singole, quindi selezionare Aggiungi registrazione singola.

    Screenshot che mostra l'opzione Aggiungi registrazione singola.

  4. Nella scheda Registrazione e provisioning della pagina Aggiungi registrazione specificare le informazioni seguenti per configurare i dettagli della registrazione:

    Field Description
    Attestation Selezionare Certificati client X.509 come Meccanismo di attestazione.
    Impostazioni del certificato X.509 Caricare uno o due certificati che verranno usati per verificare il dispositivo per questa registrazione.
    Stato del provisioning Selezionare la casella Abilita questa registrazione se si vuole che questa registrazione sia disponibile per il provisioning del relativo dispositivo. Deselezionare questa casella se si vuole disabilitare la registrazione. Non è possibile modificare questa impostazione in un secondo momento.
    Criteri di reprovisioning Scegliere un criterio di reprovisioning che rifletta il modo in cui si vuole che il servizio Device Provisioning gestisca i dispositivi che richiedono il provisioning. Per altre informazioni, vedere Criteri di reprovisioning.
  5. Selezionare Avanti: Hub IoT.

  6. Nella scheda Hub IoT della pagina Aggiungi registrazione specificare le informazioni seguenti per determinare gli hub IoT in cui la registrazione può effettuare il provisioning dei dispositivi:

    Field Description
    Hub IoT di destinazione Selezionare uno o più hub IoT collegati oppure aggiungere un nuovo collegamento a un hub IoT. Per altre informazioni sul collegamento degli hub IoT all'istanza del servizio Device Provisioning, vedere Come collegare e gestire hub IoT.
    Criteri di allocazione Se sono stati selezionati più hub IoT collegati, selezionare la modalità di assegnazione dei dispositivi ai diversi hub. Per altre informazioni sui criteri di allocazione, vedere Come usare i criteri di allocazione.

    Se è stato selezionato un solo hub IoT collegato, è consigliabile usare il criterio Distribuzione ponderata in modo uniforme.
  7. Selezionare Avanti: Impostazioni dispositivo

  8. Nella scheda Impostazioni dispositivo della pagina Aggiungi registrazione specificare le informazioni seguenti per definire la modalità di configurazione dei dispositivi di cui è stato appena effettuato il provisioning:

    Field Description
    ID dispositivo Specificare un ID dispositivo che verrà assegnato al dispositivo di cui è stato effettuato il provisioning nell'hub IoT. Se non si specifica un ID dispositivo, verrà usato l'ID di registrazione.
    IoT Edge Selezionare Abilita IoT Edge nei dispositivi di cui è stato effettuato il provisioning se il dispositivo con provisioning eseguirà Azure IoT Edge. Deselezionare questa casella se questa registrazione è per un dispositivo non abilitato per IoT Edge.
    Tag del dispositivo Usare questa casella di testo per specificare i tag da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.
    Proprietà desiderate Usare questa casella di testo per specificare le proprietà da applicare al dispositivo gemello del dispositivo di cui è stato effettuato il provisioning.

    Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT.

  9. Selezionare Avanti: Rivedi + Crea.

  10. Nella scheda Rivedi e crea, verificare tutti i valori e quindi selezionare Crea.

Preparare ed eseguire il codice di provisioning del dispositivo

In questa sezione si aggiorna il codice di esempio per inviare la sequenza di avvio del dispositivo all'istanza del servizio provisioning di dispositivi. Questa sequenza di avvio fa sì che il dispositivo venga riconosciuto e assegnato a un hub IoT collegato all'istanza di DPS.

In questa sezione vengono usati il prompt di Git Bash e l'IDE Visual Studio.

Configurare il codice del dispositivo di provisioning

In questa sezione si aggiorna il codice di esempio con le informazioni sull'istanza del servizio Device Provisioning.

  1. Nel portale di Azure selezionare la scheda Panoramica dal menu delle risorse per l'istanza del servizio Device Provisioning.

  2. Copiare il valore dell'ambito ID.

    Screenshot dell'ambito ID in portale di Azure.

  3. Avviare Visual Studio e aprire il nuovo file di soluzione che è stato creato nella directory cmake creata nella radice del repository Git azure-iot-sdk-c. Il nome del file di soluzione è azure_iot_sdks.sln.

  4. In Esplora soluzioni per Visual Studio passare a Provision_Samples > prov_dev_client_sample > File di origine e aprire prov_dev_client_sample.c.

  5. Trovare la costante id_scope e sostituire il valore con il valore ambito ID copiato nel passaggio 2.

    static const char* id_scope = "0ne00000A0A";
    
  6. Trovare la definizione per la funzione main() nello stesso file. Assicurarsi che la variabile hsm_type sia impostata su 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. Salvare le modifiche.

  8. Fare clic con il pulsante destro del mouse sul progetto prov_dev_client_sample e scegliere Imposta come progetto di avvio.

Configurare il codice stub del modulo di protezione hardware personalizzato

Le specifiche di interazione con uno spazio di archiviazione sicuro reale basato su hardware variano a seconda dell'hardware. Di conseguenza, il certificato e la chiave privata usati dal dispositivo simulato in questa guida introduttiva sono hardcoded nel codice dello stub del modulo di protezione hardware personalizzato.

Per aggiornare il codice dello stub del modulo di protezione hardware personalizzato per simulare l'identità del dispositivo con ID my-x509-device:

  1. In Esplora soluzioni di Visual Studio passare a Provision_Samples > custom_hsm_example > File di origine e aprire custom_hsm_example.c.

  2. Aggiornare il valore stringa della costante stringa COMMON_NAME usando il nome comune usato per generare il certificato del dispositivo, my-x509-device.

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. Aggiornare il valore stringa della stringa costante CERTIFICATE usando il certificato del dispositivo, device-cert.pem, generato in precedenza.

    La sintassi del testo del certificato nell'esempio deve seguire il modello seguente senza spazi aggiuntivi o l'analisi eseguita da Visual Studio.

    static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n"
    "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n"
        ...
    "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n"
    "-----END CERTIFICATE-----";        
    

    L'aggiornamento manuale di questo valore stringa può essere soggetto a errori. Per generare la sintassi corretta, è possibile copiare e incollare il comando seguente nel prompt di Git Bash e premere INVIO. Questo comando genera la sintassi per il valore costante stringa CERTIFICATE e lo scrive nell'output.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pem
    

    Copiare e incollare il testo del certificato di output per il valore costante.

  4. Aggiornare il valore stringa della costante PRIVATE_KEY con la chiave privata non crittografata per il certificato del dispositivo, unencrypted-device-key.pem.

    La sintassi del testo della chiave privata deve seguire il modello seguente senza spazi aggiuntivi o l'analisi eseguita da Visual Studio.

    static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n"
    "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n"
        ...
    "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n"
    "-----END RSA PRIVATE KEY-----";
    

    L'aggiornamento manuale di questo valore stringa può essere soggetto a errori. Per generare la sintassi corretta, è possibile copiare e incollare il comando seguente nel prompt di Git Bash e premere INVIO. Questo comando genera la sintassi per il valore costante stringa PRIVATE_KEY e lo scrive nell'output.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pem
    

    Copiare e incollare il testo della chiave privata di output per il valore costante.

  5. Salvare le modifiche.

  6. Fare clic con il pulsante destro del mouse sul progetto custom_hsm_-_example e scegliere Compila.

    Important

    È necessario compilare il progetto custom_hsm_example prima di compilare il resto della soluzione nella sezione successiva.

Eseguire l'esempio

  1. Nel menu di Visual Studio selezionare Debug>Avvia senza eseguire debug per eseguire la soluzione. Se viene richiesto di ricompilare il progetto, selezionare per ricompilare il progetto prima dell'esecuzione.

    L'output seguente è un esempio dell'avvio corretto del dispositivo simulato my-x509-device e della connessione al servizio di provisioning. Il dispositivo viene assegnato a un hub IoT e registrato:

    Provisioning API Version: 1.8.0
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-iot-hub-2.azure-devices.net, deviceId: my-x509-device
    Press enter key to exit:
    

In questa sezione si usa il prompt dei comandi di Windows.

  1. Nel portale di Azure selezionare la scheda Panoramica dal menu delle risorse per l'istanza del servizio Device Provisioning.

  2. Copiare il valore dell'ambito ID.

    Screenshot dell'ambito ID in portale di Azure.

  3. Nel prompt dei comandi di Windows passare alla directory X509Sample. Questa directory si trova nella directory .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample dalla directory in cui sono stati clonati gli esempi nel computer.

  4. Immettere il comando seguente per compilare ed eseguire l'esempio di provisioning del dispositivo X.509 (sostituire il valore <IDScope> con l'ambito ID copiato nella sezione precedente.) Per impostazione predefinita, il file di certificato è ./certificate.pfx e richiede la password con estensione pfx.

    dotnet run -- -s <IDScope>
    

    Se si desidera passare il certificato e la password come parametro, è possibile usare il formato seguente.

    Note

    È possibile passare parametri aggiuntivi durante l'esecuzione dell'applicazione per modificare TransportType (-t) e GlobalDeviceEndpoint (-g).

    dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
    
  5. Il dispositivo si connette al DPS e viene assegnato a un hub IoT. Il dispositivo invia quindi un messaggio all'hub 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.
    

In questa sezione si usa il prompt dei comandi di Windows.

  1. Nel portale di Azure selezionare la scheda Panoramica dal menu delle risorse per l'istanza del servizio Device Provisioning.

  2. Copiare il valore dell'ambito ID.

    Screenshot dell'ambito ID in portale di Azure.

  3. Nel prompt dei comandi di Windows passare alla directory di esempio e installare i pacchetti necessari per l'esempio. Il percorso visualizzato è relativo alla posizione in cui è stato clonato l'SDK.

    cd .\azure-iot-sdk-node\provisioning\device\samples
    npm install
    

    L'esempio usa cinque variabili di ambiente per autenticare ed effettuare il provisioning di un dispositivo IoT tramite DPS. Queste variabili di ambiente sono:

    Nome variabile Description
    PROVISIONING_HOST Endpoint da usare per la connessione all'istanza del DPS. Per questa guida introduttiva usare l'endpoint globale, global.azure-devices-provisioning.net.
    PROVISIONING_IDSCOPE Ambito ID per l'istanza del DPS.
    PROVISIONING_REGISTRATION_ID ID di registrazione per il dispositivo. Deve corrispondere al nome comune del soggetto nel certificato del dispositivo.
    CERTIFICATE_FILE Percorso del file di certificato del dispositivo.
    KEY_FILE Percorso del file di chiave privata del dispositivo.
  4. Aggiungere variabili di ambiente per l'endpoint del dispositivo globale e l'ambito ID. Sostituire <id-scope> con il valore copiato nel passaggio 2.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<id-scope>
    
  5. Impostare la variabile di ambiente per l'ID di registrazione del dispositivo. L'ID di registrazione per il dispositivo IoT deve corrispondere al nome comune del soggetto nel certificato del dispositivo. Se sono stati seguiti i passaggi descritti in questa guida introduttiva per generare un certificato di test autofirmato, my-x509-device è sia del nome del soggetto che dell'ID registrazione per il dispositivo.

    set PROVISIONING_REGISTRATION_ID=my-x509-device
    
  6. Impostare le variabili di ambiente per i file di chiave privata del certificato del dispositivo e del dispositivo (non crittografati).

    set CERTIFICATE_FILE=.\device-cert.pem
    set KEY_FILE=.\unencrypted-device-key.pem
    
  7. Eseguire l'esempio e verificare che il provisioning del dispositivo sia stato eseguito correttamente.

    node register_x509.js
    

    L'output dovrebbe essere simile all'esempio seguente:

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=my-x509-device
    Client connected
    send status: MessageEnqueued
    

In questa sezione si usa il prompt dei comandi di Windows.

  1. Nel portale di Azure selezionare la scheda Panoramica dal menu delle risorse per l'istanza del servizio Device Provisioning.

  2. Copiare i valori dell'ambito ID e dell'endpoint del dispositivo globale.

    Screenshot dell'ambito ID e dell'endpoint del dispositivo globale in portale di Azure.

  3. Nel prompt dei comandi di Windows passare alla directory dell'esempio di provision_x509.py . Il percorso visualizzato è relativo alla posizione in cui è stato clonato l'SDK.

    cd ./azure-iot-sdk-python/samples/async-hub-scenarios
    

    Questo esempio usa sei variabili di ambiente per autenticare ed eseguire il provisioning di un dispositivo IoT tramite DPS. Queste variabili di ambiente sono:

    Nome variabile Description
    PROVISIONING_HOST Endpoint globale usato per la connessione all'istanza del servizio Device Provisioning.
    PROVISIONING_IDSCOPE Ambito ID per l'istanza del DPS.
    DPS_X509_REGISTRATION_ID ID di registrazione per il dispositivo. Deve anche corrispondere al nome del soggetto nel certificato del dispositivo.
    X509_CERT_FILE Percorso del file di certificato del dispositivo.
    X509_KEY_FILE Percorso del file di chiave privata del certificato del dispositivo.
    PASS_PHRASE Passphrase usata per crittografare il certificato e il file di chiave privata (1234).
  4. Aggiungere le variabili di ambiente per l'endpoint del dispositivo globale e l'ambito ID.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
    
  5. Impostare la variabile di ambiente per l'ID di registrazione. L'ID di registrazione per il dispositivo IoT deve corrispondere al nome del soggetto nel certificato del dispositivo. Se sono stati seguiti i passaggi descritti in questa guida introduttiva per generare un certificato di test autofirmato, my-x509-device è sia del nome del soggetto che dell'ID registrazione per il dispositivo.

    set DPS_X509_REGISTRATION_ID=my-x509-device
    
  6. Impostare le variabili di ambiente per il file di certificato, il file di chiave privata e la passphrase.

    set X509_CERT_FILE=./device-cert.pem
    set X509_KEY_FILE=./device-key.pem
    set PASS_PHRASE=1234
    
  7. Esaminare il codice per provision_x509.py. Se non si usa Python versione 3.7 o successiva, apportare la modifica del codice indicata qui per sostituire asyncio.run(main()) e salvare le modifiche.

  8. Eseguire l'esempio. L'esempio si connette al DPS, che effettua il provisioning del dispositivo in un hub IoT. Dopo il provisioning del dispositivo, l'esempio invia alcuni messaggi di test all'hub 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
    

In questa sezione vengono usati sia il prompt dei comandi di Windows che il prompt di Git Bash.

  1. Nel portale di Azure selezionare la scheda Panoramica dal menu delle risorse per l'istanza del servizio Device Provisioning.

  2. Copiare i valori dell'ambito ID e dell'endpoint del dispositivo globale.

    Screenshot dell'ambito ID e dell'endpoint del dispositivo globale in portale di Azure.

  3. Nel prompt dei comandi di Windows passare alla cartella del progetto di esempio. Il percorso visualizzato è relativo al percorso in cui è stato clonato l'SDK

    cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
    
  4. Immettere il servizio di provisioning e le informazioni sull'identità X.509 nel codice di esempio. Queste informazioni vengono usate durante il provisioning, per l'attestazione del dispositivo simulato, prima della registrazione del dispositivo.

    1. Aprire il file .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java nell'editor preferito.

    2. Aggiornare i valori seguenti con l'ambito ID e l'endpoint globale del servizio di provisioning copiati in precedenza.

      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. Aggiornare il valore della stringa costante leafPublicPem con il valore del certificato, device-cert.pem.

      La sintassi del testo del certificato deve seguire il modello seguente senza spazi o caratteri aggiuntivi.

      private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" +
      "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" +
          ...
      "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" +
      "-----END CERTIFICATE-----";        
      

      L'aggiornamento manuale di questo valore stringa può essere soggetto a errori. Per generare la sintassi corretta, è possibile copiare e incollare il comando seguente nel prompt di Git Bash e premere INVIO. Questo comando genera la sintassi per il valore costante stringa leafPublicPem e lo scrive nell'output.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pem
      

      Copiare e incollare il testo del certificato di output per il valore costante.

    4. Aggiornare il valore stringa della costante leafPrivateKey con la chiave privata non crittografata per il certificato del dispositivo, unencrypted-device-key.pem.

      La sintassi del testo della chiave privata deve seguire il modello seguente senza spazi o caratteri aggiuntivi.

      private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" +
      "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" +
          ...
      "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" +
      "-----END PRIVATE KEY-----";
      

      L'aggiornamento manuale di questo valore stringa può essere soggetto a errori. Per generare la sintassi corretta, è possibile copiare e incollare il comando seguente nel prompt di Git Bash e premere INVIO. Questo comando genera la sintassi per il valore costante stringa leafPrivateKey e lo scrive nell'output.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pem
      

      Copiare e incollare il testo della chiave privata di output per il valore costante.

    5. Salvare le modifiche.

  5. Compilare l'esempio e quindi passare alla cartella target.

    mvn clean install
    cd target
    
  6. La compilazione restituisce .jar file nella cartella target con il formato di file seguente: provisioning-x509-sample-{version}-with-deps.jar; ad esempio: provisioning-x509-sample-1.8.1-with-deps.jar. Eseguire il file di .jar. Potrebbe essere necessario sostituire la versione nel comando seguente.

    java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
    

    L'esempio si connette al DPS, che effettua il provisioning del dispositivo in un hub IoT. Dopo il provisioning del dispositivo, l'esempio invia alcuni messaggi di test all'hub 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!
    

Confermare la registrazione del provisioning del dispositivo

Per vedere a quale hub IoT è stato effettuato il provisioning del dispositivo, esaminare i dettagli della registrazione singola creata in precedenza:

  1. Nel portale di Azure passare all'istanza del servizio Device Provisioning.

  2. Nel menu delle risorse, in Impostazioni, selezionare Gestisci registrazioni.

  3. Selezionare Registrazioni singole. La voce di registrazione X.509 creata in precedenza, my-x509-device, dovrebbe essere visualizzata nell'elenco.

  4. Selezionare la voce di registrazione. L'hub IoT a cui è stato assegnato il dispositivo e il relativo ID dispositivo viene visualizzato nello stato di registrazione.

Per verificare il dispositivo nell'hub IoT:

  1. Nel portale di Azure passare all'hub IoT a cui è stato assegnato il dispositivo.

  2. Nel menu delle risorse, in Gestione dei dispositivi, selezionare Dispositivi.

  3. Se il provisioning del dispositivo è stato eseguito correttamente, l'ID dispositivo, my-x509-device, dovrebbe essere visualizzato nell'elenco, con lo stato impostato come abilitato. Se il dispositivo non è visualizzato, seleziona Aggiorna.

    Screenshot che mostra che il dispositivo è registrato con l'hub IoT nel portale di Azure.

Important

Se si è modificato lo stato iniziale del dispositivo gemello rispetto al valore predefinito della voce di registrazione del dispositivo, è possibile eseguire il pull dello stato del dispositivo desiderato dall'hub e agire di conseguenza. Per altre informazioni, vedere Comprendere e usare dispositivi gemelli nell'hub IoT

Pulire le risorse

Se si prevede di continuare a usare ed esplorare l'esempio di client dispositivo, non eseguire la pulizia delle risorse create in questa guida di avvio rapido. Se non si intende continuare, seguire questa procedura per eliminare tutte le risorse create in questa guida.

Eliminare la registrazione del dispositivo

  1. Chiudere la finestra di output di esempio di client del dispositivo sul computer.

  2. Dal menu del portale nel portale di Azure selezionare Tutte le risorse.

  3. Selezionare l'istanza del Device Provisioning Service.

  4. Nel menu del servizio, in Impostazioni, selezionare Gestisci registrazioni.

  5. Nel riquadro di lavoro selezionare la scheda Registrazioni singole .

  6. Selezionare la casella di controllo accanto all'ID registrazione del dispositivo registrato in questa guida introduttiva.

  7. Nella parte superiore del riquadro selezionare Elimina.

Eliminare la registrazione del dispositivo dall'hub IoT

  1. Dal menu del portale nel portale di Azure selezionare Tutte le risorse.

  2. Selezionare l'hub IoT.

  3. Nel menu del servizio, in Gestione dei dispositivi, selezionare Dispositivi.

  4. Nel riquadro di lavoro, selezionare la casella di controllo accanto all'ID dispositivo del dispositivo registrato in questa guida all'avvio rapido.

  5. Nella parte superiore del riquadro selezionare Elimina.

Passaggi successivi

In questa guida introduttiva è stato effettuato il provisioning di un singolo dispositivo nell'hub IoT usando una registrazione singola. Successivamente sarà possibile trovare informazioni su come effettuare il provisioning di più dispositivi in più hub.