Creare ed effettuare il provisioning di un dispositivo IoT Edge per Linux in Windows usando certificati X.509

Si applica a: Segno di spunta IoT Edge 1.4 IoT Edge 1.4

Importante

Azure IoT Edge 1.5 LTS e IoT Edge 1.4 sono versioni supportate. IoT Edge 1.4 LTS sta raggiungendo la fine del servizio il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Il presente articolo fornisce istruzioni end-to-end per la registrazione e il provisioning di un dispositivo IoT Edge per Linux su un dispositivo Windows.

Ogni dispositivo che si connette a un hub IoT è dotato di un ID dispositivo, che viene usato per tenere traccia delle comunicazioni da cloud a dispositivo o da dispositivo a cloud. Configurare un dispositivo con le relative informazioni di connessione, che includono il nome host dell'hub IoT, l'ID dispositivo e le informazioni utilizzate dal dispositivo per l'autenticazione nell'hub IoT.

I passaggi descritti nel presente articolo illustrano un processo denominato provisioning manuale, in cui si connette un singolo dispositivo all'hub IoT. Per il provisioning manuale sono disponibili due opzioni per l'autenticazione dei dispositivi IoT Edge:

  • Chiavi simmetriche: quando si crea una nuova identità del dispositivo nell'hub IoT, il servizio crea due chiavi. Si inserisce una delle chiavi nel dispositivo e questa viene presentata all'hub IoT in fase di autenticazione.

    Questo metodo di autenticazione risulta più rapido per iniziare, ma non è il più sicuro.

  • X.509 autofirmato: creare due certificati di identità X.509 e inserirli nel dispositivo. Quando si crea una nuova identità del dispositivo nell'hub IoT, si forniscono le identificazioni personali di entrambi i certificati. Quando il dispositivo esegue l'autenticazione nell'hub IoT, presenta un certificato e l'hub IoT verifica che tale certificato corrisponda all'identificazione personale.

    Questo metodo di autenticazione è più sicuro ed è consigliato per gli scenari di produzione.

Questo articolo illustra l'uso dei certificati X.509 come metodo di autenticazione. Per utilizzare chiavi simmetriche, vedere Creare ed effettuare il provisioning di un dispositivo IoT Edge per Linux in un dispositivo Windows usando chiavi simmetriche.

Nota

Se i dispositivi da configurare sono numerosi e non si desidera eseguire manualmente il provisioning di ognuno, consultare uno degli articoli seguenti riguardanti il funzionamento di IoT Edge con il servizio Device Provisioning in hub IoT:

Prerequisiti

Il presente articolo illustra la registrazione del dispositivo IoT Edge e l'installazione di IoT Edge per Linux in Windows. Queste attività presentano prerequisiti differenti e sono richieste utilità diverse per eseguirle. Prima di procedere, assicurarsi di avere soddisfatto tutti i prerequisiti.

Strumenti di gestione dei dispositivi

È possibile usare il portale di Azure, Visual Studio Code o l'interfaccia della riga di comando di Azure per la procedura di registrazione del dispositivo. Ogni utilità ha prerequisiti specifici o può essere necessario installarla:

Un hub IoT gratuito o standard nella sottoscrizione di Azure.

Requisiti dei dispositivi

Un dispositivo Windows con i requisiti minimi seguenti:

  • Requisiti di sistema

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Gli utenti di Windows 10 e Windows Server 2019 devono usare la build minima 17763 con tutti gli aggiornamenti cumulativi correnti installati.
  • Requisiti hardware

    • Memoria minima disponibile: 1 GB
    • Spazio disponibile su disco minimo: 10 GB
  • Supporto virtualizzazione

  • Supporto per la rete

    • Windows Server non è dotato di un commutatore predefinito. Prima di poter distribuire EFLOW in un dispositivo Windows Server, è necessario creare un commutatore virtuale. Per altre informazioni, vedere Creare un commutatore virtuale per Linux in Windows.
    • Le versioni desktop di Windows sono dotate di un commutatore predefinito che può essere utilizzato per l'installazione di EFLOW. Se necessario, è possibile creare un commutatore virtuale personalizzato.

Suggerimento

Se si vogliono usare moduli Linux con accelerazione GPU nella distribuzione di Azure IoT Edge per Linux in Windows, sono disponibili varie opzioni di configurazione.

Sarà necessario installare i driver corretti in base all'architettura della GPU e può essere necessario accedere a una build del Programma Windows Insider. Per determinare le esigenze di configurazione e soddisfare questi prerequisiti, vedere Accelerazione della GPU per Azure IoT Edge per Linux in Windows.

Assicurarsi di soddisfare subito i prerequisiti per l'accelerazione GPU. Se si decide per l'accelerazione GPU durante l'installazione, sarà necessario riavviare tale processo.

Strumenti di sviluppo

Preparare il dispositivo di destinazione per l'installazione di Azure IoT Edge per Linux in Windows e la distribuzione della macchina virtuale Linux:

  1. Impostare il criterio di esecuzione nel dispositivo di destinazione su AllSigned. È possibile controllare il criterio di esecuzione corrente in un prompt di PowerShell con privilegi elevati, usando il comando seguente:

    Get-ExecutionPolicy -List
    

    Se il criterio di esecuzione di local machine non è AllSigned, è possibile impostarlo come segue:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Per altre informazioni sul modulo PowerShell di Azure IoT Edge per Linux in Windows, vedere le informazioni di riferimento sulle funzioni di PowerShell.

Generare certificati di identità del dispositivo

Il provisioning manuale con certificati X.509 richiede IoT Edge versione 1.0.10 o successiva.

Quando si effettua il provisioning di un dispositivo IoT Edge con certificati X.509, si usa il cosiddetto certificato di identità del dispositivo. Questo certificato viene utilizzato solo per il provisioning di un dispositivo IoT Edge e l'autenticazione del dispositivo con l'hub IoT di Azure. Si tratta di un certificato foglia che non firma altri certificati. Il certificato di identità del dispositivo è separato dai certificati dell'autorità di certificazione (CA) che il dispositivo IoT Edge presenta ai moduli o ai dispositivi downstream a scopo di verifica.

Per l'autenticazione del certificato X.509, le informazioni di autenticazione di ogni dispositivo vengono fornite sotto forma di identificazioni personali ottenute dai certificati di identità del dispositivo. Queste identificazioni personali vengono fornite all'hub IoT al momento della registrazione del dispositivo, in modo che il servizio possa riconoscere il dispositivo quando si connette.

Per altre informazioni sull'uso dei certificati della CA nei dispositivi IoT Edge, vedere Informazioni sulla modalità di utilizzo dei certificati da parte di Azure IoT Edge.

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

  • Due certificati di identità del dispositivo con i certificati di chiave privata corrispondenti nei formati .cer o .pem. Sono necessari due certificati di identità del dispositivo per la rotazione dei certificati. Una procedura consigliata consiste nel preparare due diversi certificati di identità del dispositivo con date di scadenza differenti. Se un certificato scade, l'altro è ancora valido e consente di ruotare il certificato scaduto.

    Un set di file di certificato e di chiave viene fornito al runtime IoT Edge. Quando si creano certificati di identità del dispositivo, impostare il nome comune (CN) del certificato sull'ID dispositivo che si vuole che il dispositivo abbia nell'hub IoT.

  • Identificazioni personali ricavate da entrambi i certificati di identità del dispositivo. L'hub IoT richiede due identificazioni personali durante la registrazione di un dispositivo IoT Edge. È possibile utilizzare un solo certificato per la registrazione. Per usare un singolo certificato, impostare la stessa identificazione personale del certificato per le identificazioni personali primaria e secondaria durante la registrazione del dispositivo.

    I valori di identificazione personale sono costituiti da 40 caratteri esadecimali per gli hash SHA-1 o 64 caratteri esadecimali per gli hash SHA-256. Entrambe le identificazioni personali vengono fornite all'hub IoT al momento della registrazione del dispositivo.

    Un modo per recuperare l'identificazione personale da un certificato è tramite il comando openssl seguente:

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    L'identificazione personale è inclusa nell'output di questo comando. Ad esempio:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

Se non sono disponibili certificati, è possibile creare certificati demo per testare le funzionalità del dispositivo IoT Edge. Seguire le istruzioni in questo articolo per configurare gli script di creazione dei certificati, generare un certificato CA radice, nonché creare un certificato di identità per un dispositivo IoT Edge. A scopi di test, è possibile creare un singolo certificato di identità del dispositivo e usare la stessa identificazione personale per i valori di identificazione personale primaria e secondaria durante la registrazione del dispositivo nell'hub IoT.

Registrare il dispositivo

È possibile usare il portale di Azure, Visual Studio Code o l'l'interfaccia della riga di comando di Azure per la registrazione del dispositivo, a seconda delle preferenze.

Nell'hub IoT nel portale di Azure, i dispositivi IoT Edge vengono creati e gestiti separatamente dai dispositivi IoT non abilitati per Edge.

  1. Accedere al portale di Azure e passare all'hub IoT.

  2. Nel riquadro sinistro selezionare Dispositivi dal menu e quindi scegliere Aggiungi dispositivo.

  3. Nella pagina Crea un dispositivo specificare le informazioni seguenti:

    • Creare un ID dispositivo descrittivo. Prendere nota di questo ID dispositivo, perché verrà usato in un secondo momento.
    • Selezionare la casella di controllo Dispositivo IoT Edge.
    • Selezionare X.509 autofirmato come tipo di autenticazione.
    • Specificare le identificazioni personali del certificato di identità primaria e secondaria. I valori di identificazione personale sono costituiti da 40 caratteri esadecimali per gli hash SHA-1 o 64 caratteri esadecimali per gli hash SHA-256. Il portale di Azure supporta solo valori esadecimali. Rimuovere i separatori di colonna e gli spazi dai valori di identificazione personale prima di immetterli nel portale. Ad esempio, D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 va immesso come D268D9049F1A4D6AFD8477687BC633C032375112.

    Suggerimento

    Se si stanno eseguendo test e si vuole usare un solo certificato, è possibile utilizzare lo stesso certificato per le identificazioni personali primaria e secondaria.

  4. Seleziona Salva.

Dopo aver registrato un dispositivo nell'hub IoT, recuperare le informazioni utilizzate per completare l'installazione e il provisioning del runtime IoT Edge.

Visualizzare i dispositivi registrati e recuperare le informazioni di provisioning

Per completare l'installazione e il provisioning del runtime IoT Edge, i dispositivi che utilizzano l'autenticazione del certificato X.509 richiedono il nome dell'hub IoT, il nome del dispositivo e i relativi file di certificato.

I dispositivi abilitati per Edge che si connettono all'hub IoT sono elencati nella pagina Dispositivi. È possibile filtrare l'elenco in base al tipo di dispositivi IoT Edge.

Installare IoT Edge

Distribuire Azure IoT Edge per Linux in Windows nel dispositivo di destinazione.

Nota

Il seguente processo di PowerShell illustra come distribuire IoT Edge per Linux in Windows nel dispositivo locale. Per eseguire la distribuzione in un dispositivo di destinazione remoto tramite PowerShell, è possibile usare PowerShell remoto per stabilire una connessione a un dispositivo remoto ed eseguire questi comandi in remoto su tale dispositivo.

  1. In una sessione di PowerShell con privilegi elevati, eseguire uno dei comandi riportati per scaricare IoT Edge per Linux in Windows, a seconda dell'architettura del dispositivo di destinazione.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Installare IoT Edge per Linux in Windows nel dispositivo.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    È possibile specificare directory personalizzate per l'installazione di IoT Edge per Linux in Windows e per il file VHDX, semplicemente aggiungendo i parametri INSTALLDIR="<FULLY_QUALIFIED_PATH>" e VHDXDIR="<FULLY_QUALIFIED_PATH>" al comando di installazione. Ad esempio, se si vuole usare la cartella D:\EFLOW per l'installazione e la cartella D:\EFLOW-VHDX per il file VHDX, si può usare il cmdlet di PowerShell seguente.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Impostare su AllSigned il criterio di esecuzione nel dispositivo di destinazione, se l'operazione non è già stata eseguita. Vedere i prerequisiti di PowerShell per i comandi per il controllo del criterio di esecuzione corrente e impostare il criterio di esecuzione su AllSigned.

  4. Creare la distribuzione di IoT Edge per Linux in Windows. La distribuzione crea la macchina virtuale Linux e installa automaticamente il runtime IoT Edge.

    Deploy-Eflow
    

    Suggerimento

    Per impostazione predefinita, il comando Deploy-Eflow crea la macchina virtuale Linux con 1 GB di RAM, 1 core di vCPU e 16 GB di spazio su disco. Tuttavia, le risorse necessarie alla macchina virtuale dipendono fortemente dai carichi di lavoro distribuiti. Se la macchina virtuale non dispone di memoria sufficiente per supportare i carichi di lavoro, non sarà possibile avviarla.

    È possibile personalizzare le risorse disponibili della macchina virtuale usando i parametri facoltativi del comando Deploy-Eflow. Questa operazione è necessaria per distribuire EFLOW in un dispositivo con i requisiti hardware minimi.

    Ad esempio, il comando seguente crea una macchina virtuale con 1 core di vCPU, 1 GB di RAM (espressi in MB) e 2 GB di spazio su disco:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Per informazioni su tutti i parametri facoltativi disponibili, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.

    Avviso

    Per impostazione predefinita, la macchina virtuale EFLOW Linux non dispone di alcuna configurazione DNS. Le distribuzioni basate su DHCP tenteranno di ottenere la configurazione DNS propagata dal server DHCP. Per garantire l'accesso a Internet, controllare la configurazione DNS. Per altre informazioni, vedere AzEFLOW-DNS.

    È possibile assegnare una GPU alla distribuzione per abilitare i moduli Linux con accelerazione GPU. Per ottenere l'accesso a queste funzionalità è necessario installare i prerequisiti descritti in dettaglio in Accelerazione della GPU per Azure IoT Edge per Linux in Windows.

    Per usare un pass-through GPU, aggiungere i parametri gpuName, gpuPassthroughType e gpuCount al comando Deploy-Eflow. Per informazioni su tutti i parametri facoltativi disponibili, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.

    Avviso

    L'abilitazione del pass-through del dispositivo hardware può aumentare i rischi per la sicurezza. Microsoft consiglia l'uso di un driver di mitigazione dei dispositivi prodotto dal fornitore della GPU, se applicabile. Per altre informazioni, vedere Distribuire dispositivi grafici usando l'assegnazione di dispositivi discreti.

  5. Immettere "Y" per accettare le condizioni di licenza.

  6. Immettere "O" o "R" per attivare o disattivare i Dati di diagnostica facoltativi in base alle proprie preferenze.

  7. Al termine della distribuzione, nella finestra di PowerShell compare l'indicazione La distribuzione è riuscita.

    Una distribuzione con esito positivo indicherà

    Dopo aver completato la distribuzione, è possibile eseguire il provisioning del dispositivo.

Effettuare il provisioning del dispositivo con la relativa identità cloud

Adesso si è pronti per configurare il dispositivo con le relative informazioni di autenticazione e identità cloud.

Per effettuare il provisioning del dispositivo mediante certificati X.509, è necessario il nome dell'hub IoT, l'ID dispositivo e i percorsi assoluti per il certificato di identità e la chiave privata nel computer host Windows.

Preparare il certificato di identità del dispositivo e la chiave privata corrispondente nel dispositivo di destinazione. Conoscere il percorso assoluto di entrambi i file.

Eseguire il comando seguente in una sessione di PowerShell con privilegi elevati nel dispositivo di destinazione. Sostituire il testo segnaposto con i propri valori.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Per altre informazioni sul comandoProvision-EflowVM, vedere Funzioni di PowerShell per IoT Edge per Linux in Windows.

Verificare la corretta configurazione

Verificare che IoT Edge per Linux in Windows sia stato installato e configurato correttamente nel dispositivo IoT Edge.

  1. Accedere alla macchina virtuale IoT Edge per Linux in Windows usando il comando seguente nella sessione di PowerShell:

    Connect-EflowVm
    

    Nota

    L'unico account autorizzato a connettersi tramite SSH alla macchina virtuale è quello dell'utente che lo ha creato.

  2. Dopo aver eseguito l'accesso, è possibile controllare l'elenco dei moduli IoT Edge in esecuzione usando il comando Linux seguente:

    sudo iotedge list
    
  3. Se è necessario risolvere i problemi del servizio IoT Edge, utilizzare i comandi Linux seguenti.

    1. Recuperare i log del servizio.

      sudo iotedge system logs
      
    2. Usare lo strumento check per verificare lo stato di configurazione e connessione del dispositivo.

      sudo iotedge check
      

    Nota

    In un dispositivo di cui è stato appena effettuato il provisioning potrebbe essere visualizzato un errore correlato all'hub di IoT Edge:

    × idoneità alla produzione: la directory di archiviazione dell'hub di Edge è persistente nel file system host - Errore

    Non è stati possibile controllare lo stato corrente del contenitore edgeHub

    Questo errore è previsto in un dispositivo di cui è stato appena effettuato il provisioning, perché il modulo hub di IoT Edge non è in esecuzione. Per risolvere l'errore, nell'hub IoT impostare i moduli per il dispositivo e creare una distribuzione. La creazione di una distribuzione per il dispositivo avvia i moduli al suo interno, incluso il modulo hub di IoT Edge.

Quando si crea un nuovo dispositivo IoT Edge, viene visualizzato il codice di stato 417 -- The device's deployment configuration is not set nel portale di Azure. Questo stato è normale e significa che il dispositivo è pronto per ricevere una distribuzione del modulo.

Disinstallare IoT Edge per Linux in Windows

Per rimuovere l'installazione di Azure IoT Edge per Linux in Windows dal dispositivo, utilizzare i comandi seguenti.

  1. Aprire Impostazioni in Windows
  2. Selezionare Installazione applicazioni
  3. Selezionare l'app Azure IoT Edge
  4. Selezionare Disinstalla

Passaggi successivi