Creare ed effettuare il provisioning di dispositivi IoT Edge su larga scala in Windows usando certificati X.509

Si applica a: Icona Sì IoT Edge 1.1

Importante

La data di fine del supporto di IoT Edge 1.1 è stata il 13 dicembre 2022. Controlla il ciclo di vita dei prodotti Microsoft per ottenere informazioni sul modo in cui viene supportato questo prodotto, servizio, tecnologia o API. Per altre informazioni sull'aggiornamento alla versione più recente di IoT Edge, vedere Aggiornare IoT Edge.

Questo articolo fornisce istruzioni end-to-end per il provisioning automatico di uno o più dispositivi Windows IoT Edge con certificati X.509. È possibile effettuare automaticamente il provisioning di dispositivi Azure IoT Edge con servizio Device Provisioning in hub IoT di Azure (DPS). Se non si ha familiarità con il processo di provisioning automatico, vedere la panoramica sul provisioning prima di continuare.

Nota

Azure IoT Edge con contenitori Windows non sarà supportato a partire dalla versione 1.2 di Azure IoT Edge.

Prendere in considerazione l'uso del nuovo metodo per l'esecuzione di IoT Edge nei dispositivi Windows, Azure IoT Edge per Linux in Windows.

Se si vuole usare Azure IoT Edge per Linux in Windows, è possibile seguire la procedura descritta nella guida pratica equivalente.

Le attività sono le seguenti:

  1. Generare certificati e chiavi.
  2. Creare una registrazione singola per un singolo dispositivo o una registrazione di gruppo per un set di dispositivi.
  3. Installare il runtime IoT Edge e registrare il dispositivo con l'hub IoT.

L'uso di certificati X.509 come meccanismo di attestazione è un ottimo modo per aumentare la produzione e semplificare il provisioning dei dispositivi. I certificati X.509 vengono in genere organizzati in una catena di certificati attendibili. A partire da un certificato radice trusted o autofirmato, ogni certificato nella catena firma il certificato di livello immediatamente inferiore. Questo modello crea un percorso di certificazione delegato dal certificato radice via via attraverso ogni certificato intermedio e fino al certificato finale del dispositivo downstream installato in un dispositivo.

Prerequisiti

Risorse cloud

  • Un hub IoT attivo
  • Un'istanza del servizio Device Provisioning in Hub IoT in Azure, collegata all'hub IoT

Requisiti dei dispositivi

Un dispositivo Windows fisico o virtuale come dispositivo IoT Edge.

Generare certificati di identità del dispositivo

Il certificato di identità del dispositivo è un certificato di dispositivo downstream che si connette tramite un percorso di certificazione al certificato dell'autorità di certificazione (CA) X.509 primario. Il nome comune (CN) del certificato di identità del dispositivo deve impostato sull'ID dispositivo che si vuole che il dispositivo abbia nell'hub IoT.

I certificati di identità del dispositivo vengono usati solo per il provisioning del dispositivo IoT Edge e per l'autenticazione del dispositivo con l'hub IoT di Azure. Non si tratta di certificati di firma, a differenza dei certificati della CA che il dispositivo IoT Edge presenta ai moduli o ai dispositivi downstream per la verifica. Per altre informazioni, vedere Dettagli di utilizzo dei certificati di Azure IoT Edge.

Dopo aver creato il certificato di identità del dispositivo saranno presenti due file: un file .cer o pem che contiene la parte pubblica del certificato e un file .cer o pem con la chiave privata del certificato. Se si prevede di usare la registrazione di gruppo nel servizio Device Provisioning, è necessaria anche la parte pubblica di un certificato CA intermedio o radice nello stesso percorso di certificazione.

Per configurare il provisioning automatico con X.509 sono necessari i file seguenti:

  • Il certificato di identità del dispositivo con il suo certificato a chiave privata. Il certificato di identità del dispositivo viene caricato nel servizio Device Provisioning se si crea una registrazione singola. La chiave privata viene passata al runtime IoT Edge.
  • Un certificato con catena completa, che deve contenere almeno il certificato di identità del dispositivo e i certificati intermedi. Il certificato con catena completa viene passato al runtime IoT Edge.
  • Un certificato CA intermedio o radice dal percorso di certificazione. Questo certificato viene caricato nel servizio Device Provisioning se si crea una registrazione di gruppo.

Nota

Attualmente, una limitazione in Libiothsm impedisce l'uso di certificati con scadenza uguale o successiva al 1° gennaio 2038.

Usare certificati di test (facoltativo)

Se non si dispone di un'autorità di certificazione per creare nuovi certificati di identità e si vuole provare questo scenario, il repository Git di Azure IoT Edge contiene script che è possibile usare per generare certificati di test. Questi certificati sono progettati solo per i test di sviluppo e non devono essere usati nell'ambiente di produzione.

Per creare certificati di test, seguire la procedura descritta in Creare certificati demo per testare le funzionalità del dispositivo IoT Edge. Completare le due sezioni necessarie per configurare gli script di generazione del certificato e per creare un certificato CA radice. Seguire quindi la procedura per creare un certificato di identità del dispositivo. Al termine saranno presenti il percorso di certificazione e la coppia di chiavi seguenti:

  • <WRKDIR>\certs\iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>\private\iot-edge-device-identity-<name>.key.pem

Entrambi i certificati sono necessari nel dispositivo IoT Edge. Se si intende usare la registrazione singola in DPS, si caricherà il file con estensione cert.pem. Se si intende usare la registrazione di gruppo nel servizio Device Provisioning, è necessario anche un certificato CA intermedio o radice nello stesso percorso di certificazione da caricare. Se si usano certificati demo, usare il certificato <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem per la registrazione di gruppo.

Creare una registrazione nel servizio Device Provisioning

Usare i certificati e le chiavi generati per creare una registrazione nel servizio Device Provisioning per uno o più dispositivi IoT Edge.

Se si vuole effettuare il provisioning di un singolo dispositivo IoT Edge, creare una registrazione singola. Se è necessario effettuare il provisioning di più dispositivi, seguire la procedura per creare una registrazione di gruppo nel servizio Device Provisioning.

Quando si crea una registrazione nel servizio Device Provisioning, si ha la possibilità di dichiarare un valore di Stato dispositivo gemello iniziale. Nel dispositivo gemello è possibile impostare tag per raggruppare i dispositivi in base a una qualsiasi metrica necessaria nella propria soluzione, come l'area, l'ambiente, la località o il tipo di dispositivo. Questi tag vengono usati per creare distribuzioni automatiche.

Per altre informazioni sulle registrazioni nel servizio Device Provisioning, vedere Come gestire le registrazioni dei dispositivi.

Creare una registrazione singola nel servizio Device Provisioning

Le registrazioni singole prendono la parte pubblica del certificato di identità di un dispositivo e la associano al certificato nel dispositivo.

Suggerimento

I passaggi descritti in questo articolo sono relativi al portale di Azure, ma è anche possibile creare registrazioni singole usando l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere az iot dps enrollment. Come parte del comando dell'interfaccia della riga di comando, usare il flag edge-enabled per specificare che la registrazione è per un dispositivo IoT Edge.

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

  2. In le impostazioni selezionare Gestisci registrazioni.

  3. Selezionare Aggiungi registrazione singola, quindi completare la procedura seguente per configurare la registrazione:

    • Meccanismo: selezionare X.509.

    • File di certificato primario con estensione pem o cer: caricare il file pubblico dal certificato di identità del dispositivo. Se sono stati usati gli script per generare un certificato di test, scegliere il file seguente:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • ID dispositivo hub IoT: specificare un ID per il dispositivo se si vuole. È possibile usare gli ID dispositivo per identificare come destinazione un singolo dispositivo per la distribuzione di moduli. Se non si specifica un ID dispositivo viene usato il nome comune (CN) presente nel certificato X.509.

    • Dispositivo IoT Edge: selezionare Vero per dichiarare che la registrazione è per un dispositivo IoT Edge.

    • Selezionare gli hub IoT a cui può essere assegnato questo dispositivo: scegliere l'hub IoT collegato a cui si vuole connettere il dispositivo. È possibile scegliere più hub e il dispositivo verrà assegnato a uno di essi in base al criterio di allocazione selezionato.

    • Stato iniziale dispositivo gemello: aggiungere un valore di tag da aggiungere al dispositivo gemello se si vuole. È possibile usare tag per identificare come destinazione gruppi di dispositivi per la distribuzione automatica. Ad esempio:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Seleziona Salva.

In Gestisci registrazioni è visibile l'ID registrazione per la registrazione appena creata. Prenderne nota, perché è possibile usarlo al momento del provisioning del dispositivo.

Ora che esiste una registrazione per questo dispositivo, il runtime IoT Edge può effettuare automaticamente il provisioning del dispositivo durante l'installazione.

Installare IoT Edge

In questa sezione si prepara la macchina virtuale Windows o il dispositivo fisico per IoT Edge. Quindi si installa IoT Edge.

Azure IoT Edge si basa su un runtime del contenitore compatibile con OCI. Moby, un motore basato su Moby, è incluso nello script di installazione, il che significa che non ci sono passaggi aggiuntivi per installare il motore.

Per installare il runtime di IoT Edge:

  1. Esegui PowerShell come amministratore.

    Usare una sessione AMD64 di PowerShell, non PowerShell(x86). Se non si è certi del tipo di sessione in uso, eseguire il comando seguente:

    (Get-Process -Id $PID).StartInfo.EnvironmentVariables["PROCESSOR_ARCHITECTURE"]
    
  2. Eseguire il comando Deploy-IoTEdge , che esegue le attività seguenti:

    • Verifica che il computer Windows sia in una versione supportata
    • Attiva la funzionalità contenitori
    • Scarica il motore moby e il runtime di IoT Edge
    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Deploy-IoTEdge
    
  3. Riavviare il dispositivo se richiesto.

Quando si installa IoT Edge in un dispositivo, è possibile usare parametri aggiuntivi per modificare il processo, tra cui:

  • Indirizzare il traffico attraverso un server proxy
  • Puntare il programma di installazione a una directory locale per l'installazione offline

Per altre informazioni su questi parametri aggiuntivi, vedere Script di PowerShell per IoT Edge con contenitori Windows.

Effettuare il provisioning del dispositivo con la relativa identità cloud

Dopo aver installato il runtime nel dispositivo, configurarlo con le informazioni da usare per connettersi al servizio Device Provisioning e all'hub IoT.

Preparare le informazioni seguenti:

  • Valore Ambito ID del servizio Device Provisioning. È possibile recuperare questo valore dalla pagina di panoramica dell'istanza del servizio Device Provisioning nel portale di Azure.
  • File del percorso di certificazione dell'identità del dispositivo nel dispositivo.
  • File della chiave di identità del dispositivo nel dispositivo.
  1. Aprire una finestra di PowerShell in modalità amministratore. Assicurarsi di usare una sessione AMD64 di PowerShell quando si installa IoT Edge, non PowerShell (x86).

  2. Il comando Initialize-IoTEdge configura il runtime IoT Edge nel computer. Il comando usa per impostazione predefinita il provisioning manuale con i contenitori di Windows, quindi usa il flag per usare il -DpsX509 provisioning automatico con l'autenticazione del certificato X.509.

    Sostituire i valori segnaposto per scope_id, identity cert chain pathe identity key path con i valori appropriati dell'istanza del servizio Device Provisioning e i percorsi di file nel dispositivo.

    Aggiungere il -RegistrationId paste_registration_id_here parametro se si vuole impostare l'ID dispositivo come diverso dal nome CN del certificato di identità.

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -DpsX509 -ScopeId paste_scope_id_here -X509IdentityCertificate paste_identity_cert_chain_path_here -X509IdentityPrivateKey paste_identity_key_path_here
    

    Suggerimento

    Il file di configurazione archivia il certificato e le informazioni sulla chiave come URI di file. Tuttavia, il comando Initialize-IoTEdge gestisce automaticamente questo passaggio di formattazione, in modo da poter fornire il percorso assoluto ai file di certificato e di chiave nel dispositivo.

Verificare l'esito positivo dell'installazione

Se il runtime è stato avviato correttamente, è possibile passare all'hub IoT e iniziare la distribuzione di moduli IoT Edge nel dispositivo.

È possibile verificare che sia stata usata la registrazione singola creata nel servizio Device Provisioning. Passare all'istanza del servizio Device Provisioning nel portale di Azure. Aprire i dettagli della registrazione per la registrazione singola creata. Si noti che lo stato della registrazione è assegnata e che l'ID dispositivo è elencato.

Usare i comandi seguenti sul dispositivo per verificare che il runtime IoT Edge sia stato installato e avviato correttamente.

Verificare lo stato del servizio IoT Edge.

Get-Service iotedge

Esaminare i log del servizio.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; Get-IoTEdgeLog

Elencare i moduli in esecuzione.

iotedge list

Passaggi successivi

Il processo di registrazione del servizio Device Provisioning consente di impostare l'ID dispositivo e i tag del dispositivo gemello mentre si effettua il provisioning del nuovo dispositivo. È possibile usare questi valori per identificare come destinazione singoli dispositivi o gruppi di dispositivi usando la gestione automatica dei dispositivi. Informazioni su come Distribuire e monitorare i moduli IoT Edge su larga scala tramite il portale di Azure o usando l'interfaccia della riga di comando di Azure.