Autenticare un dispositivo downstream sull'hub IoT di Azure

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

Importante

IoT Edge 1.5 LTS e IoT Edge 1.4 LTS sono versioni supportate. IoT Edge 1.4 LTS è di fine vita il 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

In uno scenario di gateway trasparente, i dispositivi downstream (talvolta denominati dispositivi figlio) necessitano di identità in hub IoT come qualsiasi altro dispositivo. Questo articolo illustra le opzioni per l'autenticazione di un dispositivo downstream nell'hub IoT e spiega quindi come dichiarare la connessione gateway.

Nota

Un dispositivo downstream genera dati direttamente in Internet o nei dispositivi gateway (abilitati o meno per IoT Edge). Un dispositivo figlio può essere un dispositivo downstream o un dispositivo gateway in una topologia annidata.

Ci sono tre passaggi generali per configurare correttamente una connessione gateway trasparente. Questo articolo illustra il secondo passaggio:

  1. Configurare il dispositivo gateway come server in modo che i dispositivi downstream possano connettersi in modo sicuro. Configurare il gateway per ricevere messaggi dai dispositivi downstream e instradarli alla destinazione corretta. Per questi passaggi, vedere Configurare un dispositivo IoT Edge per fungere da gateway trasparente.
  2. Creare un'identità del dispositivo per il dispositivo downstream in modo che possa eseguire l'autenticazione con hub IoT. Configurare il dispositivo downstream per inviare messaggi tramite il dispositivo gateway.
  3. Connessione il dispositivo downstream al dispositivo gateway e iniziare a inviare messaggi. Per questi passaggi, vedere Connessione un dispositivo downstream a un gateway Azure IoT Edge.

I dispositivi downstream possono eseguire l'autenticazione nell'hub IoT usando uno dei tre metodi seguenti: chiavi simmetriche (talvolta dette chiavi di accesso condiviso), certificati X.509 autofirmati o certificati X.509 firmati dall'autorità di certificazione (CA). I passaggi di autenticazione sono simili a quelli usati per configurare qualsiasi dispositivo non IoT Edge con l'hub IoT, con piccole differenze per dichiarare la relazione del gateway.

Il provisioning automatico dei dispositivi downstream con il servizio Device Provisioning (DPS) hub IoT di Azure non è supportato.

Prerequisiti

Completare i passaggi in Configurare un dispositivo IoT Edge come gateway trasparente.

Se si usa l'autenticazione X.509, verranno generati certificati per il dispositivo downstream. Disporre dello stesso certificato CA radice e dello script di generazione del certificato usato per l'articolo sul gateway trasparente disponibile per l'uso di nuovo.

Questo articolo si riferisce al nome host del gateway in diversi punti. Il nome host del gateway viene dichiarato nel parametro hostname del file di configurazione nel dispositivo gateway IoT Edge. Viene fatto riferimento a tale valore nella stringa di connessione del dispositivo downstream. Il nome host del gateway deve essere risolvibile in un indirizzo IP, usando DNS o una voce di file host nel dispositivo downstream.

Registrare il dispositivo con hub IoT

Scegliere come si vuole che il dispositivo downstream esegua l'autenticazione con hub IoT:

  • Autenticazione con chiave simmetrica: hub IoT crea una chiave inserita nel dispositivo downstream. Quando il dispositivo viene autenticato, hub IoT verifica che le due chiavi corrispondano. Non è necessario creare certificati aggiuntivi per usare l'autenticazione con chiave simmetrica.

    Questo metodo è più rapido per iniziare se si testano i gateway in uno scenario di sviluppo o test.

  • Autenticazione autofirmata X.509: talvolta denominata autenticazione identificazione personale, perché l'identificazione personale viene condivisa dal certificato X.509 del dispositivo con hub IoT.

    L'autenticazione del certificato è consigliata per i dispositivi negli scenari di produzione.

  • Autenticazione con firma CA X.509: caricare il certificato CA radice per hub IoT. Quando i dispositivi presentano il certificato X.509 per l'autenticazione, hub IoT verifica che appartenga a una catena di attendibilità firmata dallo stesso certificato CA radice.

    L'autenticazione del certificato è consigliata per i dispositivi negli scenari di produzione.

Autenticazione con chiavi simmetriche

L'autenticazione tramite chiave simmetrica, o autenticazione tramite chiave di accesso condiviso, è il modo più semplice per eseguire l'autenticazione nell'hub IoT. Con l'autenticazione tramite chiave simmetrica, una chiave Base64 viene associata all'ID dispositivo IoT nell'hub IoT. Questa chiave viene inclusa nelle applicazioni IoT, in modo che il dispositivo possa presentarla quando si connette all'hub IoT.

Aggiungere un nuovo dispositivo IoT nell'hub IoT usando il portale di Azure, l'interfaccia della riga di comando di Azure o l'estensione IoT per Visual Studio Code. Tenere presente che i dispositivi downstream devono essere identificati nell'hub IoT come normali dispositivi IoT, non come dispositivi IoT Edge.

Quando si crea la nuova identità del dispositivo, fornire le informazioni seguenti:

  • Creare un ID per il dispositivo.

  • Selezionare Chiave simmetrica come tipo di autenticazione.

  • Selezionare Imposta un dispositivo padre e selezionare il dispositivo gateway IoT Edge a cui si connetterà il dispositivo downstream. È sempre possibile modificare l'elemento padre in un secondo momento.

    Screenshot di come creare un ID dispositivo con autorizzazione con chiave simmetrica nel portale di Azure.

    Nota

    Impostazione del dispositivo padre usato per essere un passaggio facoltativo per i dispositivi downstream che usano l'autenticazione con chiave simmetrica. Tuttavia, a partire da IoT Edge versione 1.1.0 ogni dispositivo downstream deve essere assegnato a un dispositivo padre.

    È possibile configurare l'hub IoT Edge per tornare al comportamento precedente impostando la variabile di ambiente AuthenticationMode sul valore CloudAndScope.

È anche possibile usare l'estensione IoT per l'interfaccia della riga di comando di Azure per completare la stessa operazione. L'esempio seguente usa il comando az iot hub device-identity per creare un nuovo dispositivo IoT con l'autenticazione con chiave simmetrica e assegnare un dispositivo padre:

az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}

Suggerimento

È possibile elencare le proprietà del dispositivo, incluso l'ambito del dispositivo usando az iot hub device-identity list --hub-name {iothub name}.

Successivamente, recuperare e modificare la stringa di connessione in modo che il dispositivo disponga delle informazioni per la connessione tramite il gateway.

Autenticazione autofirmato X.509

Per l'autenticazione autofirmata X.509, talvolta definita autenticazione identificazione personale, è necessario creare certificati da inserire nel dispositivo downstream. Questi certificati hanno un'identificazione personale che viene condivisa con l'hub IoT per l'autenticazione.

  1. Usando il certificato della CA, creare due certificati del dispositivo (primario e secondario) per il dispositivo downstream.

    Se non si dispone di un'autorità di certificazione per creare certificati X.509, è possibile usare gli script di certificato demo di IoT Edge per creare certificati del dispositivo downstream. Seguire la procedura per la creazione di certificati autofirmato. Usare lo stesso certificato CA radice che ha generato i certificati per il dispositivo gateway.

    Se si creano certificati personalizzati, assicurarsi che il nome soggetto del certificato del dispositivo sia impostato sull'ID dispositivo usato durante la registrazione del dispositivo IoT nel hub IoT di Azure. Questa impostazione è obbligatoria per l'autenticazione.

  2. Recuperare l'impronta digitale SHA1 (detta identificazione personale nell'interfaccia dell'hub IoT) di ogni certificato, costituita da una stringa esadecimale di 40 caratteri. Usare il comando OpenSSL seguente per visualizzare il certificato e trovare l'impronta digitale:

    • Windows:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
      
    • Linux:

      openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
      

    Eseguire questo comando due volte, una volta per il certificato primario e una per il certificato secondario. Si forniscono le impronte digitali per entrambi i certificati quando si registra un nuovo dispositivo IoT usando certificati X.509 autofirmati.

  3. Passare all'hub IoT nel portale di Azure e creare una nuova identità del dispositivo IoT con i valori seguenti:

    • Fornire l'ID dispositivo corrispondente al nome soggetto dei certificati del dispositivo.
    • Selezionare X.509 autofirmato come tipo di autenticazione.
    • Incollare le stringhe esadecimali copiate dai certificati primario e secondario del dispositivo.
    • Selezionare Imposta un dispositivo padre e scegliere il dispositivo gateway IoT Edge tramite cui si connetterà il dispositivo downstream. È sempre possibile modificare l'elemento padre in un secondo momento.

    Screenshot che mostra come creare un ID dispositivo con un'autorizzazione autofirmato X.509 nel portale di Azure.

  4. Copiare i certificati del dispositivo primario e secondario e le relative chiavi in qualsiasi posizione nel dispositivo downstream. Spostare inoltre una copia del certificato CA radice condiviso che ha generato sia il certificato del dispositivo gateway che i certificati dei dispositivi downstream.

    Si farà riferimento a questi file di certificato in tutte le applicazioni nel dispositivo downstream che si connettono a hub IoT. È possibile usare un servizio come Azure Key Vault o una funzione come il protocollo Secure Copy per spostare i file di certificato.

  5. A seconda del linguaggio preferito, vedere gli esempi di come fare riferimento ai certificati X.509 nelle applicazioni IoT:

È anche possibile usare l'estensione IoT per l'interfaccia della riga di comando di Azure per completare la stessa operazione di creazione del dispositivo. L'esempio seguente usa il comando az iot hub device-identity per creare un nuovo dispositivo IoT con autenticazione autofirmato X.509 e assegna un dispositivo padre:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Suggerimento

È possibile elencare le proprietà del dispositivo, incluso l'ambito del dispositivo usando az iot hub device-identity list --hub-name {iothub name}.

Successivamente, recuperare e modificare la stringa di connessione in modo che il dispositivo disponga delle informazioni per la connessione tramite il gateway.

Autenticazione con firma CA X.509

Per l'autenticazione firmata con autorità di certificazione X.509, è necessario un certificato CA radice registrato in hub IoT che si usa per firmare i certificati per il dispositivo downstream. Qualsiasi dispositivo che usa un certificato che è stato rilasciato tramite il certificato CA radice o qualsiasi certificato intermedio sarà autorizzato a eseguire l'autenticazione.

Questa sezione si basa sulla serie di esercitazioni sui certificati X.509 hub IoT. Per l'introduzione di questa serie, vedere Informazioni sulla crittografia a chiave pubblica e sull'infrastruttura a chiave pubblica X.509.

  1. Usando il certificato della CA, creare due certificati del dispositivo (primario e secondario) per il dispositivo downstream.

    Se non si dispone di un'autorità di certificazione per creare certificati X.509, è possibile usare gli script di certificato demo di IoT Edge per creare certificati del dispositivo downstream. Seguire la procedura per la creazione di certificati firmati dalla CA. Usare lo stesso certificato CA radice che ha generato i certificati per il dispositivo gateway.

  2. Seguire le istruzioni nella sezione Dimostrazione del possesso di Configurare la sicurezza X.509 nell'hub IoT di Azure. In tale sezione si eseguono i passaggi seguenti:

    1. Aggiornare un certificato CA radice. Se si usano i certificati demo, la CA radice è <path>/certs/azure-iot-test-only.root.ca.cert.pem.

    2. Verificare di possedere il certificato CA radice.

  3. Seguire le istruzioni nella sezione Creare un dispositivo nella sezione hub IoT di Configurare la sicurezza X.509 nell'hub IoT di Azure. In tale sezione si eseguono i passaggi seguenti:

    1. Aggiungere un nuovo dispositivo. Specificare un nome in lettere minuscole per ID dispositivo e scegliere il tipo di autenticazione X.509 firmato dall'Autorità di certificazione.

    2. Impostare un dispositivo padre. Selezionare Imposta un dispositivo padre e scegliere il dispositivo gateway IoT Edge che fornirà la connessione a hub IoT.

  4. Creare una catena di certificati per il dispositivo downstream. Usare lo stesso certificato CA radice caricato nell'hub IoT per creare la catena. Usare lo stesso ID dispositivo in lettere minuscole assegnato all'identità del dispositivo nel portale.

  5. Copiare il certificato e le chiavi del dispositivo in qualsiasi posizione nel dispositivo downstream. Spostare inoltre una copia del certificato CA radice condiviso che ha generato sia il certificato del dispositivo gateway che i certificati dei dispositivi downstream.

    Si farà riferimento a questi file in tutte le applicazioni nel dispositivo downstream che si connettono a hub IoT. È possibile usare un servizio come Azure Key Vault o una funzione come il protocollo Secure Copy per spostare i file di certificato.

  6. A seconda del linguaggio preferito, vedere gli esempi di come fare riferimento ai certificati X.509 nelle applicazioni IoT:

È anche possibile usare l'estensione IoT per l'interfaccia della riga di comando di Azure per completare la stessa operazione di creazione del dispositivo. L'esempio seguente usa il comando az iot hub device-identity per creare un nuovo dispositivo IoT con l'autenticazione firmata dalla CA X.509 e assegna un dispositivo padre:

az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca

Suggerimento

È possibile elencare le proprietà del dispositivo, incluso l'ambito del dispositivo usando az iot hub device-identity list --hub-name {iothub name}.

Successivamente, recuperare e modificare la stringa di connessione in modo che il dispositivo disponga delle informazioni per la connessione tramite il gateway.

Recuperare e modificare la stringa di connessione

Dopo aver creato un'identità del dispositivo IoT nel portale, è possibile recuperare le relative chiavi primaria e secondaria. Una di queste chiavi deve essere inclusa nella stringa di connessione usata dalle applicazioni per comunicare con l'hub IoT. Per l'autenticazione tramite chiave simmetrica, l'hub IoT fornisce la stringa di connessione completa nei dati del dispositivo, per praticità. È necessario aggiungere ulteriori informazioni sul dispositivo gateway nella stringa di connessione.

Per le stringhe di connessione per i dispositivi downstream sono necessari i componenti seguenti:

  • Hub IoT a cui il dispositivo si connette: Hostname={iothub name}.azure-devices.net
  • ID dispositivo registrato nell'hub: DeviceID={device ID}
  • Metodo di autenticazione, che si tratti di certificati con chiave simmetrica o X.509
    • Se si usa l'autenticazione con chiave simmetrica, fornire la chiave primaria o secondaria: SharedAccessKey={key}
    • Se si usa l'autenticazione del certificato X.509, specificare un flag: x509=true
  • Dispositivo gateway attraverso cui il dispositivo si connette. Specificare il valore hostname dal file di configurazione del dispositivo gateway IoT Edge: GatewayHostName={gateway hostname}

Nel complesso, una stringa di connessione completa ha un aspetto simile al seguente:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

Oppure:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice

Grazie alla relazione padre/figlio, è possibile semplificare il stringa di connessione chiamando il gateway direttamente come host di connessione. Ad esempio:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

Questa stringa di connessione modificata verrà usata nell'articolo successivo della serie di gateway trasparenti.

Passaggi successivi

A questo punto, si dispone di un dispositivo IoT Edge registrato con l'hub IoT e configurato come gateway trasparente. È anche disponibile un dispositivo downstream registrato con l'hub IoT e che punta al dispositivo gateway.

Successivamente, è necessario configurare il dispositivo downstream per considerare attendibile il dispositivo gateway e connettersi in modo sicuro. Passare all'articolo successivo della serie di gateway trasparenti Connessione un dispositivo downstream a un gateway Azure IoT Edge.