Creare certificati demo per testare le funzionalità del dispositivo IoT Edge

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.

I dispositivi IoT Edge richiedono certificati per la comunicazione sicura tra il runtime, i moduli e tutti i dispositivi downstream. Se non si ha un'autorità di certificazione per creare i certificati necessari, è possibile usare i certificati demo per provare le funzionalità di IoT Edge nell'ambiente di test. Questo articolo descrive le funzionalità degli script di generazione di certificati forniti da IoT Edge per i test.

Avviso

Questi certificati scadono entro 30 giorni e non devono essere usati in alcun scenario di produzione.

È possibile creare certificati in qualsiasi computer e quindi copiarli nel dispositivo IoT Edge oppure generare i certificati direttamente nel dispositivo IoT Edge.

Prerequisiti

Un computer di sviluppo con Git installato.

Scaricare gli script del certificato di test e configurare la directory di lavoro

Il repository IoT Edge in GitHub include script di generazione di certificati che è possibile usare per creare certificati demo. Questa sezione fornisce istruzioni per preparare gli script da eseguire nel computer, in Windows o Linux.

Per creare certificati demo in un dispositivo Windows, è necessario installare OpenSSL e quindi clonare gli script di generazione e configurarli per l'esecuzione in locale in PowerShell.

Installa OpenSSL

Installare OpenSSL per Windows nel computer usato per generare i certificati. Se nel dispositivo Windows è già installato OpenSSL, assicurarsi che openssl.exe sia disponibile nella variabile di ambiente PATH.

Esistono diversi modi per installare OpenSSL, incluse le opzioni seguenti:

  • Più semplice: scaricare e installare tutti i file binari OpenSSL di terze parti, ad esempio da OpenSSL in SourceForge. Aggiungere il percorso completo di openssl.exe alla variabile di ambiente PATH.

  • Metodo consigliato: scaricare il codice sorgente di OpenSSL source code e creare i file binari nel computer personalmente o tramite vcpkg. Nelle istruzioni elencate di seguito viene usato vcpkg per scaricare il codice sorgente, compilare e installare OpenSSL nel computer Windows con passaggi molto semplici.

    1. Passare alla directory in cui installare vcpkg, Seguire le istruzioni per scaricare e installare vcpkg.

    2. Dopo aver installato vcpkg, eseguire il comando seguente da un prompt di PowerShell per installare il pacchetto OpenSSL per Windows x64. Il completamento dell'installazione richiede in genere circa 5 minuti.

      .\vcpkg install openssl:x64-windows
      
    3. Aggiungere <vcpkg path>\installed\x64-windows\tools\openssl alla variabile di ambiente PATH in modo da rendere il file openssl.exe disponibile per la chiamata.

Preparare gli script in PowerShell

Il repository Git di Azure IoT Edge contiene script che è possibile usare per generare certificati di test. In questa sezione si clona il repository IoT Edge ed si eseguono gli script.

  1. Aprire una finestra di PowerShell in modalità amministratore.

  2. Clonare il repository Git IoT Edge che contiene gli script per generare certificati demo. Usare il comando git clone o scaricare il file ZIP.

    git clone https://github.com/Azure/iotedge.git
    
  3. Creare una directory in cui si desidera lavorare e copiare gli script del certificato. Tutti i file di certificato e di chiave verranno creati in questa directory.

    mkdir wrkdir
    cd .\wrkdir\
    cp ..\iotedge\tools\CACertificates\*.cnf .
    cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
    

    Se il repository è stato scaricato come file ZIP, il nome della cartella è iotedge-master e il resto del percorso è lo stesso.

  4. Abilitare PowerShell per l'esecuzione degli script.

    Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
    
  5. Inserire le funzioni usate dagli script nello spazio dei nomi globale di PowerShell.

    . .\ca-certs.ps1
    

    Nella finestra di PowerShell verrà visualizzato un avviso che indica che i certificati generati da questo script sono solo a scopo di test e non devono essere usati negli scenari di produzione.

  6. Verificare che OpenSSL sia stato installato correttamente e assicurarsi che non siano presenti conflitti di nomi con i certificati esistenti. In caso di problemi, l'output dello script deve descrivere come risolverli nel sistema.

    Test-CACertsPrerequisites
    

Creare un certificato CA radice

Eseguire questo script per generare una CA radice necessaria per ogni passaggio di questo articolo.

Il certificato CA radice viene usato per creare tutti gli altri certificati demo per testare uno scenario IoT Edge. È possibile continuare a usare lo stesso certificato CA radice per creare certificati demo per più dispositivi IoT Edge o downstream.

Se nella cartella di lavoro è già presente un certificato CA radice, non crearne uno nuovo. Il nuovo certificato CA radice sovrascriverà il vecchio e tutti i certificati downstream creati da quello precedente smetteranno di funzionare. Se si vogliono più certificati CA radice, assicurarsi di gestirli in cartelle separate.

  1. Passare alla directory wrkdir di lavoro in cui sono stati inseriti gli script di generazione del certificato.

  2. Creare il certificato CA radice e firmare un certificato intermedio. Tutti i certificati vengono inseriti nella directory di lavoro.

    New-CACertsCertChain rsa
    

    Questo comando script crea diversi file di certificato e chiave, ma quando gli articoli richiedono il certificato CA radice, usare il file seguente:

    certs\azure-iot-test-only.root.ca.cert.pem

Questo certificato è necessario prima di poter creare altri certificati per i dispositivi IoT Edge e i dispositivi downstream, come descritto nelle sezioni successive.

Creare un certificato di identità per il dispositivo IoT Edge

I certificati di identità dei dispositivi IoT Edge vengono usati per effettuare il provisioning dei dispositivi IoT Edge se si sceglie di usare l'autenticazione del certificato X.509. Se si usa la chiave simmetrica per l'autenticazione per hub IoT o DPS, questi certificati non sono necessari ed è possibile ignorare questa sezione.

Questi certificati funzionano indipendentemente dal fatto che si usi il provisioning manuale o il provisioning automatico tramite il servizio Device Provisioning di hub IoT di Azure.

I certificati di identità del dispositivo vanno nella sezione Provisioning del file di configurazione nel dispositivo IoT Edge.

  1. Passare alla directory wrkdir di lavoro con gli script di generazione del certificato e il certificato CA radice.

  2. Creare il certificato di identità del dispositivo IoT Edge e la chiave privata con il comando seguente:

    New-CACertsEdgeDeviceIdentity "<device-id>"
    

    Il nome passato a questo comando è l'ID dispositivo per il dispositivo IoT Edge in hub IoT.

  3. Il nuovo comando device identity crea diversi file di certificato e chiave:

    Type File Descrizione
    Certificato di identità del dispositivo certs\iot-edge-device-identity-<device-id>.cert.pem Firmato dal certificato intermedio generato in precedenza. Contiene solo il certificato di identità. Specificare nel file di configurazione per la registrazione singola del servizio Device Provisioning o hub IoT.
    Certificato con catena completa certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem Contiene la catena di certificati completa, incluso il certificato intermedio. Specificare nel file di configurazione per IoT Edge da presentare al servizio Device Provisioning per la registrazione dei gruppi.
    Chiave privata private\iot-edge-device-identity-<device-id>.key.pem Chiave privata associata al certificato di identità del dispositivo. Deve essere specificato nel file di configurazione, purché si usi una sorta di autenticazione del certificato (identificazione personale o CA) per DPS o hub IoT.

Creare certificati ca perimetrali

Questi certificati sono necessari per gli scenari del gateway perché il certificato ca perimetrale è il modo in cui il dispositivo IoT Edge verifica l'identità dei dispositivi downstream. È possibile ignorare questa sezione se non si connettono dispositivi downstream a IoT Edge.

Il certificato della CA perimetrale è anche responsabile della creazione di certificati per i moduli in esecuzione nel dispositivo, ma il runtime di IoT Edge può creare certificati temporanei se la CA perimetrale non è configurata. I certificati DELLA CA Edge sono disponibili nella sezione CA Edge del config.toml file nel dispositivo IoT Edge. Per altre informazioni, vedere Informazioni su come Azure IoT Edge usa i certificati.

  1. Passare alla directory wrkdir di lavoro con gli script di generazione del certificato e il certificato CA radice.

  2. Creare il certificato della CA IoT Edge e la chiave privata con il comando seguente. Specificare un nome per il certificato della CA. Il nome passato al comando New-CACertsEdgeDevice non deve corrispondere al parametro nome host nel file di configurazione o all'ID del dispositivo in hub IoT.

    New-CACertsEdgeDevice "<CA cert name>"
    
  3. Questo comando crea diversi file di certificato e chiave. È necessario copiare il certificato e la coppia di chiavi seguenti in un dispositivo IoT Edge e fare riferimento nel file di configurazione:

    • certs\iot-edge-device-ca-<CA cert name>-full-chain.cert.pem
    • private\iot-edge-device-ca-<CA cert name>.key.pem

Creare certificati del dispositivo downstream

Questi certificati sono necessari per configurare un dispositivo IoT downstream per uno scenario gateway e vogliono usare l'autenticazione X.509 con hub IoT o DPS. Se si vuole usare l'autenticazione con chiave simmetrica, non è necessario creare certificati per il dispositivo downstream e ignorare questa sezione.

Esistono due modi per autenticare un dispositivo IoT usando certificati X.509: usando certificati autofirmati o certificati firmati dall'autorità di certificazione (CA).

  • Per l'autenticazione autofirmata X.509, talvolta definita autenticazione identificazione personale, è necessario creare nuovi certificati da inserire nel dispositivo IoT. Questi certificati hanno un'identificazione personale che viene condivisa con l'hub IoT per l'autenticazione.
  • Per l'autenticazione firmata con autorità di certificazione X.509, è necessario un certificato CA radice registrato in hub IoT o DPS usato per firmare i certificati per il dispositivo IoT. Qualsiasi dispositivo che usa un certificato rilasciato dal certificato CA radice o uno dei relativi certificati intermedi può eseguire l'autenticazione purché la catena completa venga presentata dal dispositivo.

Gli script di generazione di certificati consentono di creare certificati demo per testare uno di questi scenari di autenticazione.

Certificati autofirmati

Quando si autentica un dispositivo IoT con certificati autofirmato, è necessario creare certificati del dispositivo in base al certificato CA radice per la soluzione. Si recupera quindi un'identificazione personale esadecimale dai certificati da fornire per hub IoT. Il dispositivo IoT necessita anche di una copia dei certificati del dispositivo in modo che possa eseguire l'autenticazione con hub IoT.

  1. Passare alla directory wrkdir di lavoro con gli script di generazione del certificato e il certificato CA radice.

  2. Creare due certificati (primario e secondario) per il dispositivo downstream. Una convenzione di denominazione semplice da usare consiste nel creare i certificati con il nome del dispositivo IoT e quindi l'etichetta primaria o secondaria. Ad esempio:

    New-CACertsDevice "<device ID>-primary"
    New-CACertsDevice "<device ID>-secondary"
    

    Questo comando script crea diversi file di certificato e chiave. È necessario copiare le coppie di certificati e chiavi seguenti nel dispositivo IoT downstream e fare riferimento alle applicazioni che si connettono a hub IoT:

    • certs\iot-device-<device ID>-primary-full-chain.cert.pem
    • certs\iot-device-<device ID>-secondary-full-chain.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pem
    • certs\iot-device-<device ID>-secondary.cert.pem
    • certs\iot-device-<device ID>-primary.cert.pfx
    • certs\iot-device-<device ID>-secondary.cert.pfx
    • private\iot-device-<device ID>-primary.key.pem
    • private\iot-device-<device ID>-secondary.key.pem
  3. Recuperare l'identificazione personale SHA1 (denominata identificazione personale nei contesti di hub IoT) da ogni certificato. L'identificazione personale è una stringa di caratteri esadecimale di 40. Usare il comando openssl seguente per visualizzare il certificato e trovare l'identificazione personale:

    Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
    

    Eseguire questo comando due volte, una volta per il certificato primario e una per il certificato secondario. È possibile fornire identificazioni personali per entrambi i certificati quando si registra un nuovo dispositivo IoT usando certificati X.509 autofirmati.

Certificati firmati dalla CA

Quando si autentica un dispositivo IoT con certificati firmati dalla CA, è necessario caricare il certificato CA radice per la soluzione in hub IoT. Usare lo stesso certificato CA radice per creare certificati del dispositivo da inserire nel dispositivo IoT in modo che possa eseguire l'autenticazione con hub IoT.

I certificati in questa sezione sono relativi ai passaggi della 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. Caricare il file del certificato CA radice dalla directory di lavoro, certs\azure-iot-test-only.root.ca.cert.pem, all'hub IoT.

  2. Se la verifica automatica non è selezionata, usare il codice fornito nel portale di Azure per verificare di essere proprietari del certificato CA radice.

    New-CACertsVerificationCert "<verification code>"
    
  3. Creare una catena di certificati per il dispositivo downstream. Usare lo stesso ID dispositivo registrato nel dispositivo in hub IoT.

    New-CACertsDevice "<device id>"
    

    Questo comando script crea diversi file di certificato e chiave. È necessario copiare le coppie di certificati e chiavi seguenti nel dispositivo IoT downstream e fare riferimento alle applicazioni che si connettono a hub IoT:

    • certs\iot-device-<device id>.cert.pem
    • certs\iot-device-<device id>.cert.pfx
    • certs\iot-device-<device id>-full-chain.cert.pem
    • private\iot-device-<device id>.key.pem