Condividi tramite


Connettere un dispositivo downstream a un gateway Azure IoT Edge

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

Importante

IoT Edge 1.5 LTS è la versione supportata. IoT Edge 1.4 LTS è di fine vita a partire dal 12 novembre 2024. Se si usa una versione precedente, vedere Aggiornare IoT Edge.

Questo articolo fornisce istruzioni per configurare una connessione attendibile tra dispositivi downstream e gateway trasparenti IoT Edge. In uno scenario gateway trasparente, uno o più dispositivi inviano messaggi tramite un singolo dispositivo gateway che gestisce la connessione all'hub IoT. In questo articolo i termini gateway e gateway IoT Edge indicano un dispositivo IoT Edge configurato come gateway trasparente.

Nota

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

È stata configurata una connessione gateway trasparente in tre passaggi. Questo articolo illustra il terzo 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 indirizzarli alla destinazione corretta. Per questi passaggi, vedere Configurare un dispositivo IoT Edge in modo che funga da gateway trasparente.

  2. Creare un'identità del dispositivo per il dispositivo downstream in modo che possa eseguire l'autenticazione con l'hub IoT. Configurare il dispositivo downstream per inviare messaggi tramite il dispositivo gateway. Per questi passaggi, vedere Autenticare un dispositivo downstream nell'hub IoT di Azure.

  3. Connettere il dispositivo downstream al dispositivo gateway e iniziare a inviare messaggi.

Questo articolo illustra i componenti di connessione del dispositivo downstream, ad esempio:

  • Nozioni fondamentali sulla sicurezza del livello di trasporto (TLS) e sul certificato
  • Librerie TLS che funzionano in diversi sistemi operativi e gestiscono i certificati in modo diverso

Passi attraverso gli esempi di Azure IoT nella tua lingua preferita per far inviare messaggi al tuo dispositivo al gateway.

Prerequisiti

Per preparare il dispositivo downstream, è necessario dotarsi degli elementi seguenti:

Nota

I dispositivi IoT registrati con l'hub IoT possono usare moduli gemelli per isolare processi, hardware o funzioni diversi in un singolo dispositivo. I gateway IoT Edge supportano connessioni di moduli downstream usando l'autenticazione con chiave simmetrica, ma non l'autenticazione del certificato X.509.

Informazioni sulle nozioni fondamentali relative al protocollo TLS e ai certificati

La connessione sicura dei dispositivi downstream a IoT Edge è simile ad altre comunicazioni client e server sicure tramite Internet. Un client e un server comunicano in modo sicuro tramite Internet usando il protocollo Transport Layer Security (TLS). TLS usa costrutti PKI (Public Key Infrastructure) standard denominati certificati. TLS è una specifica dettagliata che illustra molti argomenti relativi alla protezione di due endpoint. Questa sezione riepiloga i concetti necessari per connettere in modo sicuro i dispositivi a un gateway IoT Edge.

Quando un client si connette a un server, il server presenta una catena di certificati denominata catena di certificati server. Una catena di certificati ha in genere un certificato dell'autorità di certificazione radice, uno o più certificati CA intermedi e il certificato del server. Il client considera attendibile il server verificando in modo crittografico l'intera catena di certificati del server. Questo processo è denominato convalida della catena di server. Il client sfida anche il server a dimostrare che ha la chiave privata per il certificato del server, chiamata prova di possesso. Insieme, la convalida della catena di server e la prova di possesso sono denominate autenticazione server. Per convalidare una catena di certificati server, il client necessita di una copia del certificato CA radice usato per rilasciare il certificato del server. Quando ci si connette ai siti Web, i browser vengono preconfigurati con certificati CA comuni, quindi il processo client è facile.

Quando un dispositivo si connette all'hub IoT di Azure, il dispositivo è il client e il servizio cloud hub IoT è il server. Il servizio cloud dell'hub IoT usa un certificato CA radice denominato Baltimore CyberTrust Root, disponibile pubblicamente e ampiamente usato. Poiché il certificato CA dell'hub IoT è già installato nella maggior parte dei dispositivi, molte implementazioni TLS (OpenSSL, Schannel, LanguageSSL) lo usano automaticamente durante la convalida del certificato del server. Tuttavia, un dispositivo che si connette all'hub IoT può avere problemi durante la connessione a un gateway IoT Edge.

Quando un dispositivo si connette al gateway IoT Edge, il dispositivo downstream è il client, mentre il dispositivo gateway è il server. Azure IoT Edge consente di creare catene di certificati del gateway in base alle esigenze. È possibile usare un certificato CA pubblico, ad esempio Baltimore, o un certificato CA radice autofirmato (o interno). I certificati CA pubblici spesso hanno un costo, quindi vengono in genere usati negli scenari di produzione. I certificati della CA autofirmati vengono scelti per scenari di sviluppo e test. I certificati demo sono certificati della CA radice autofirmati.

Quando si usa un certificato CA radice autofirmato per un gateway IoT Edge, è necessario installarlo o fornirlo a tutti i dispositivi downstream che si connettono al gateway.

Screenshot dell'installazione del certificato del gateway.

Per ulteriori informazioni sui certificati IoT Edge e sulle implicazioni di produzione, vedere Dettagli sull'utilizzo dei certificati IoT Edge.

Fornire il certificato della CA radice

Per verificare i certificati del dispositivo gateway, il dispositivo downstream necessita della propria copia del certificato della CA radice. Se si usano gli script nel repository Git di IoT Edge per creare certificati di test, il certificato CA radice viene denominato azure-iot-test-only.root.ca.cert.pem.

Se non è già stato fatto, spostare questo file di certificato in qualsiasi directory nel dispositivo downstream. Spostare il file installando il certificato DELLA CA nell'archivio certificati del sistema operativo o facendo riferimento al certificato all'interno delle applicazioni che usano gli SDK di Azure IoT.

Usare un servizio come Azure Key Vault o uno strumento come Il protocollo di copia sicura per spostare il file di certificato.

Installare i certificati nel sistema operativo

Dopo aver copiato il certificato CA principale nel dispositivo a valle, ci si assicuri che le applicazioni che si connettono al gateway abbiano accesso al certificato.

Installare il certificato CA radice nell'archivio certificati del sistema operativo in modo che la maggior parte delle applicazioni possa usarlo. Alcune applicazioni, ad esempio Node.js, non usano l'archivio certificati del sistema operativo e usano invece l'archivio certificati interno del runtime di Node. Se non è possibile installare il certificato a livello di sistema operativo, passare alla sezione Usare i certificati con Azure IoT SDK .

Installare il certificato CA radice su Ubuntu o su Windows.

Usare i comandi seguenti per installare un certificato della CA in un host Ubuntu. Questo esempio usa il certificato azure-iot-test-only.root.ca.cert.pem dagli articoli sui prerequisiti e presuppone che il certificato sia stato copiato in un percorso nel dispositivo downstream.

sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates

Al termine, viene visualizzato un aggiornamento dei certificati in /etc/ssl/certs... 1 aggiunto, 0 rimosso; messaggio completato .

Usare i certificati con gli SDK di Azure IoT

GliSDK di Azure IoT si connettono a un dispositivo IoT Edge tramite semplici applicazioni di esempio. L'obiettivo degli esempi è connettere il client del dispositivo e inviare messaggi di telemetria del dispositivo al gateway, quindi chiudere la connessione e uscire.

Prima di usare gli esempi a livello di applicazione, ottenere gli elementi seguenti:

  • Stringa di connessione dell'hub IoT del dispositivo downstream, modificata in modo da puntare al dispositivo gateway.

  • Tutti i certificati necessari per autenticare il dispositivo downstream nell'hub IoT. Per altre informazioni, vedere Autenticare un dispositivo downstream nell'hub IoT di Azure.

  • Percorso completo del certificato della CA radice copiato e salvato in una posizione nel dispositivo downstream.

    Ad esempio: <file path>/azure-iot-test-only.root.ca.cert.pem.

Si è ora pronti per usare i certificati con un esempio nella lingua scelta:

Questa sezione fornisce un'applicazione di esempio per connettere un client del dispositivo azure IoT Node.js a un gateway IoT Edge. Per Node.js applicazioni, è necessario installare il certificato CA radice a livello di applicazione, come illustrato di seguito. Node.js applicazioni non usano l'archivio certificati del sistema.

  1. Ottenere l'esempio per edge_downstream_device.js nel repository degli esempi di Azure IoT SDK per dispositivi per Node.js.
  2. Assicurarsi di avere predisposto tutti i prerequisiti per eseguire l'esempio esaminando il file readme.md.
  3. Nel file edge_downstream_device.js aggiornare le variabili connectionString e edge_ca_cert_path.
  4. Vedere la documentazione dell'SDK per istruzioni su come eseguire l'esempio nel dispositivo.

Per informazioni sull'esempio in esecuzione, il frammento di codice seguente mostra in che modo il client SDK legge il file del certificato e lo usa per stabilire una connessione TLS sicura:

// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
    ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};

Testare la connessione al gateway

Eseguire questo comando di esempio nel dispositivo downstream per verificare che possa connettersi al dispositivo gateway:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Questo comando controlla la connessione tramite MQTTS (porta 8883). Se si usa un protocollo diverso, modificare il comando per AMQPS (5671) o HTTPS (443).

L'output di questo comando può essere lungo e include informazioni su tutti i certificati nella catena. Se la connessione ha esito positivo, viene visualizzata una riga come Verification: OK o Verify return code: 0 (ok).

Screenshot della verifica di una connessione del gateway.

Risolvere i problemi di connessione del gateway

Se la connessione del dispositivo downstream al dispositivo gateway è instabile, considera queste domande per aiutarti a risolvere il problema.

  • Il nome host del gateway nella stringa di connessione corrisponde al valore del nome host nel file config di IoT Edge nel dispositivo gateway?
  • Il nome host del gateway può essere risolto in un indirizzo IP? Correggere le connessioni intermittenti usando DNS o aggiungendo una voce di file host nel dispositivo downstream.
  • Le porte di comunicazione sono aperte nel firewall? Assicurarsi che le porte del protocollo necessarie (MQTTS:8883, AMQPS:5671, HTTPS:433) siano aperte tra il dispositivo downstream e il dispositivo IoT Edge trasparente.

Passaggi successivi

Informazioni su come IoT Edge estende le funzionalità offline ai dispositivi downstream.