Creare ed effettuare il provisioning di un dispositivo IoT Edge 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 la registrazione e il provisioning di un dispositivo Windows IoT Edge.

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.

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 usare chiavi simmetriche, vedere Creare ed effettuare il provisioning di un dispositivo IoT Edge in 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

Questo articolo illustra la registrazione del dispositivo IoT Edge e l'installazione di IoT Edge nel dispositivo. 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 i propri prerequisiti:

Un hub IoT gratuito o standard nella sottoscrizione di Azure.

Requisiti dei dispositivi

Un dispositivo Windows.

IoT Edge con contenitori Windows richiede la versione 1809/build 17763 di Windows, che è la build di supporto a lungo termine di Windows più recente. Assicurarsi di esaminare l'elenco dei sistemi supportati per un elenco di SKU supportati.

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 dei certificati di identità del dispositivo con i certificati di chiave privata corrispondenti nei formati .cer o pem.

    Un set di file di certificato/chiave viene fornito al runtime di 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.

    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.

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, creare un certificato CA radice e quindi creare due certificati di identità del dispositivo IoT Edge.

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

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

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 sul 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.
  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 dispositivo Iot Edge.

Screenshot di come visualizzare tutti i dispositivi IoT Edge nell'hub IoT.

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

Ora che il motore del contenitore e il runtime di IoT Edge sono installati nel dispositivo, si è pronti per il passaggio successivo, ovvero configurare il dispositivo con le relative informazioni di autenticazione e identità cloud.

  1. Nel dispositivo IoT Edge eseguire PowerShell come amministratore.

  2. Usare il comando Initialize-IoTEdge per configurare il runtime di IoT Edge nel computer.

    . {Invoke-WebRequest -useb https://aka.ms/iotedge-win} | Invoke-Expression; `
    Initialize-IoTEdge -ManualX509
    
    • Se è stato scaricato lo script IoTEdgeSecurityDaemon.ps1 nel dispositivo per l'installazione offline o specifica della versione, assicurarsi di fare riferimento alla copia locale dello script.

      . <path>/IoTEdgeSecurityDaemon.ps1
      Initialize-IoTEdge -ManualX509
      
  3. Quando richiesto, specificare le informazioni seguenti:

    • IotHubHostName: nome host dell'hub IoT a cui si connetterà il dispositivo. Ad esempio: {IoT_hub_name}.azure-devices.net.
    • DeviceId: ID specificato al momento della registrazione del dispositivo.
    • X509IdentityCertificate: percorso assoluto di un certificato di identità nel dispositivo. Ad esempio: C:\path\identity_certificate.pem.
    • X509IdentityPrivateKey: percorso assoluto del file di chiave privata per il certificato di identità specificato. Ad esempio: C:\path\identity_key.pem.

Quando si effettua manualmente il provisioning di un dispositivo, è possibile usare parametri aggiuntivi per modificare il processo, tra cui:

  • Indirizzare il traffico attraverso un server proxy
  • Dichiarare un'immagine del contenitore edgeAgent specifica e specificare le credenziali se si trova in un registro privato

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


Verificare la corretta configurazione

Verificare che il runtime sia stato installato e configurato correttamente nel dispositivo IoT Edge.

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

Installazione offline o di una versione specifica (facoltativo)

I passaggi in questa sezione riguardano scenari non coperti dalla procedura di installazione standard. Possono includere:

  • Installare IoT Edge offline
  • Installare di una versione finale candidata
  • Installare una versione diversa dalla versione più recente

Durante l'installazione vengono scaricati tre file:

  • Uno script di PowerShell che contiene le istruzioni di installazione
  • Cab di Microsoft Azure IoT Edge, che contiene il daemon di sicurezza IoT Edge (iotedged), il motore del contenitore Moby e l'interfaccia della riga di comando di Moby
  • Programma di installazione di Visual C++ Redistributable Package (VC Runtime)

Se il dispositivo sarà offline durante l'installazione o se si vuole installare una versione specifica di IoT Edge, è possibile scaricare questi file in anticipo nel dispositivo. Quando è il momento di installare, puntare lo script di installazione nella directory che contiene i file scaricati. Il programma di installazione controlla prima la directory e quindi scarica solo i componenti non trovati. Se tutti i file sono disponibili offline, è possibile installare senza connessione Internet.

  1. Per i file di installazione più recenti di IoT Edge insieme alle versioni precedenti, vedere Versioni di Azure IoT Edge.

  2. Trovare la versione che si vuole installare e scaricare i file seguenti dalla sezione Assets delle note sulla versione nel dispositivo IoT:

    • IoTEdgeSecurityDaemon.ps1
    • Microsoft-Azure-IoTEdge-amd64.cab dal canale versione 1.1.

    È importante usare lo script di PowerShell dalla stessa versione del file di .cab usato perché le funzionalità cambiano per supportare le funzionalità in ogni versione.

  3. Se nel file .cab scaricato è presente un suffisso dell'architettura, rinominare il file in Microsoft-Azure-IoTEdge.cab.

  4. Facoltativamente, scaricare un programma di installazione per Visual C++ ridistribuibile. Ad esempio, lo script di PowerShell usa questa versione: vc_redist.x64.exe. Salvare il programma di installazione nella stessa cartella nel dispositivo IoT come file IoT Edge.

  5. Per eseguire l'installazione con componenti offline, dot source la copia locale dello script di PowerShell.

  6. Eseguire il comando Deploy-IoTEdge con il -OfflineInstallationPath parametro . Specificare il percorso assoluto della directory del file. ad esempio:

    . path_to_powershell_module_here\IoTEdgeSecurityDaemon.ps1
    Deploy-IoTEdge -OfflineInstallationPath path_to_file_directory_here
    

    Il comando di distribuzione userà tutti i componenti trovati nella directory file locale fornita. Se manca il file .cab o il programma di installazione di Visual C++, tenterà di scaricarli.

Disinstallare IoT Edge

Se si vuole rimuovere l'installazione di IoT Edge dal dispositivo Windows, usare il comando Uninstall-IoTEdge da una finestra amministrativa di PowerShell. Questo comando rimuove il runtime di IoT Edge, insieme alla configurazione esistente e ai dati del motore Moby.

. {Invoke-WebRequest -useb aka.ms/iotedge-win} | Invoke-Expression; `
Uninstall-IoTEdge

Per altre informazioni sulle opzioni di disinstallazione, usare il comando Get-Help Uninstall-IoTEdge -full.

Passaggi successivi

Passare a distribuire moduli IoT Edge per informazioni su come distribuire moduli nel dispositivo.