Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: 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.
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.
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.
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:
Un dispositivo downstream.
Questo dispositivo può essere qualsiasi applicazione o piattaforma con un'identità creata nell'hub IoT di Azure. In molti casi, le applicazioni usano Azure IoT SDK per dispositivi. Un dispositivo downstream può anche essere un'applicazione in esecuzione nel dispositivo gateway IoT Edge.
Più avanti, questo articolo illustra come connettere un dispositivo IoT come dispositivo downstream. Per usare un dispositivo IoT Edge come dispositivo downstream, vedere Connettere i dispositivi Azure IoT Edge insieme per creare una gerarchia (arco annidato).
Un file di certificato CA radice.
Questo file viene usato per generare il certificato CA Edge in Configurare un dispositivo IoT Edge per fungere da gateway trasparente ed è disponibile sul dispositivo downstream.
Il dispositivo downstream usa questo certificato per verificare l'identità del dispositivo gateway. Questo certificato attendibile indica le connessioni TLS (Transport Layer Security) al dispositivo gateway. Per informazioni dettagliate sull'utilizzo, vedere Fornire il certificato CA radice.
Una stringa di connessione modificata che punta al dispositivo gateway.
Per informazioni su come modificare la stringa di connessione, vedere Autenticare un dispositivo downstream nell'hub IoT di Azure.
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.
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.
- Ottenere l'esempio per edge_downstream_device.js nel repository degli esempi di Azure IoT SDK per dispositivi per Node.js.
- Assicurarsi di avere predisposto tutti i prerequisiti per eseguire l'esempio esaminando il file readme.md.
- Nel file edge_downstream_device.js aggiornare le variabili connectionString e edge_ca_cert_path.
- 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)
.
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.