View a markdown version of this page

Tutorial: Sicuro AWS IoT Greengrass Nucleus Lite con Trusted Platform Module (TPM) - AWS IoT Greengrass

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Tutorial: Sicuro AWS IoT Greengrass Nucleus Lite con Trusted Platform Module (TPM)

Questo tutorial spiega come abilitare e configurare il supporto Trusted Platform Module (TPM) per nucleus lite. AWS IoT Greengrass Il TPM fornisce un root of trust basato su hardware per l'archiviazione sicura delle chiavi. Questa funzionalità di sicurezza protegge le operazioni crittografiche e le credenziali sensibili, migliorando la sicurezza e l'integrità del dispositivo.

Una volta completata questa integrazione, il dispositivo AWS IoT Greengrass principale utilizzerà le chiavi TPM-protected private per la sua identità e la comunicazione con AWS IoT i servizi.

Per ulteriori informazioni sulla sicurezza sui AWS IoT Greengrass dispositivi, consultaSicurezza in AWS IoT Greengrass.

Prerequisiti

Per completare questo tutorial, è necessario quanto segue:

  • Un Linux-compatible dispositivo con hardware TPM 2.0 o NitroTPM

  • Una macchina per sviluppatori su cui è installato Greengrass Nucleus Lite. Per ulteriori informazioni, vedere Installare il software AWS IoT Greengrass Core (console).

  • Le istruzioni di questo tutorial sono definite per Ubuntu 24.04 LTS.

  • Qualsiasi distribuzione Linux in grado di supportare il Linux TPM2 Software Stack può supportare questo meccanismo.

  • Una macchina per sviluppatori AWS CLI installata e configurata con le autorizzazioni per:

    • Creare e gestire risorse AWS IoT

    • Crea e gestisci ruoli e policy IAM

  • Privilegi root o sudo sul dispositivo.

Questo tutorial contiene istruzioni su come utilizzare il chip TPM2 come Hardware Security Module (HSM) per creare una chiave privata e un CSR utilizzato per creare il certificato thing. AWS IoT

Fase 1: Configurare un'istanza NitroTPM

  1. Configura un'istanza NitroTPM. Per ulteriori informazioni, vedere NitroTPM.

  2. Avvia l'istanza finale utilizzando l'AMI personalizzata creata nel passaggio precedente.

    Importante

    Quando ti connetti con SSH, usa l'ubuntuutente invece diroot.

  3. Verificate che il dispositivo TPM sia presente e funzionante eseguendo il seguente comando:

    ls -la /dev/tpm*

    Dovresti vedere /dev/tpm0 i /dev/tpmrm0 dispositivi.

Passaggio 2: installare e configurare gli strumenti TPM

  1. Installa i pacchetti richiesti eseguendo il comando seguente:

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. Verifica le autorizzazioni del dispositivo TPM eseguendo il comando seguente:

    ls -l /dev/tpm0 # Should be owned by tss:root with permissions 0660 ls -l /dev/tpmrm0 # Should be owned by tss:tss with permissions 0660

Passaggio 3: configurare il provider OpenSSL TPM2

  1. Modifica il file di configurazione OpenSSL:

    sudo vi /etc/ssl/openssl.cnf
  2. Aggiungi la seguente configurazione:

    [openssl_init] providers = provider_sect [provider_sect] default = default_sect tpm2 = tpm2_sect [default_sect] activate = 1 [tpm2_sect] identity = tpm2 module = /usr/local/lib64/tpm2.so activate = 1
  3. Regola il percorso del modulo secondo necessità. Puoi trovare il percorso corretto usando:

    find /usr -name "tpm2.so"

Fase 4: Generazione di chiavi TPM permanenti

  1. Crea una chiave primaria eseguendo il seguente comando:

    sudo tpm2_createprimary -C o -c primary.ctx
  2. Crea un oggetto chiave ECC eseguendo il comando seguente:

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. Carica la chiave eseguendo il seguente comando:

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. Rendi persistente la chiave eseguendo il comando seguente:

    sudo tpm2_evictcontrol -C o -c device.ctx 0x81000002

    Questo crea una chiave persistente con l'handle (like0x81000002).

Passaggio 5: generazione di una richiesta di firma del certificato (CSR)

In questo passaggio, utilizzerai la chiave TPM2-protected privata per generare una richiesta di firma del certificato (CSR).

  1. Genera una CSR utilizzando la chiave TPM:

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. Sostituisci 0x81000002 con il valore di handle scelto e TPMThing con il nome dell'oggetto desiderato.

Fase 6: Creare il certificato da CSR

  1. Sul tuo computer di sviluppo, crea una cartella in cui hai scaricato il certificato relativo all' AWS IoT oggetto.

    mkdir greengrass-v2-certs
  2. Usa il file CSR per creare e scaricare il certificato dell' AWS IoT oggetto sul tuo computer di sviluppo.

    aws iot create-certificate-from-csr \ --set-as-active \ --certificate-signing-request file://path_to_device.csr \ --certificate-pem-outfile greengrass-v2-certs/device.pem.crt

    Se la richiesta ha esito positivo, la risposta è simile all'esempio seguente:

    { "certificateArn": "arn:aws:iot:us-west-2:123456789012:cert/aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificateId": "aa0b7958770878eabe251d8a7ddd547f4889c524c9b574ab9fbf65f32248b1d4", "certificatePem": "-----BEGIN CERTIFICATE----- MIICiTCCAfICCQD6m7oRw0uXOjANBgkqhkiG9w 0BAQUFADCBiDELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZ WF0dGxlMQ8wDQYDVQQKEwZBbWF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIw EAYDVQQDEwlUZXN0Q2lsYWMxHzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5 jb20wHhcNMTEwNDI1MjA0NTIxWhcNMTIwNDI0MjA0NTIxWjCBiDELMAkGA1UEBh MCVVMxCzAJBgNVBAgTAldBMRAwDgYDVQQHEwdTZWF0dGxlMQ8wDQYDVQQKEwZBb WF6b24xFDASBgNVBAsTC0lBTSBDb25zb2xlMRIwEAYDVQQDEwlUZXN0Q2lsYWMx HzAdBgkqhkiG9w0BCQEWEG5vb25lQGFtYXpvbi5jb20wgZ8wDQYJKoZIhvcNAQE BBQADgY0AMIGJAoGBAMaK0dn+a4GmWIWJ21uUSfwfEvySWtC2XADZ4nB+BLYgVI k60CpiwsZ3G93vUEIO3IyNoH/f0wYK8m9TrDHudUZg3qX4waLG5M43q7Wgc/MbQ ITxOUSQv7c7ugFFDzQGBzZswY6786m86gpEIbb3OhjZnzcvQAaRHhdlQWIMm2nr AgMBAAEwDQYJKoZIhvcNAQEFBQADgYEAtCu4nUhVVxYUntneD9+h8Mg9q6q+auN KyExzyLwaxlAoo7TJHidbtS4J5iNmZgXL0FkbFFBjvSfpJIlJ00zbhNYS5f6Guo EDmFJl0ZxBHjJnyp378OD8uTs7fLvjx79LjSTbNYiytVbZPQUQ5Yaxu2jXnimvw 3rrszlaEXAMPLE= -----END CERTIFICATE-----" }

Passaggio 7: configura Greengrass Nucleus Lite con il supporto TPM

Per abilitare il supporto TPM in Greengrass Nucleus Lite, apportate le seguenti modifiche:

  1. Configura le autorizzazioni utente aggiungendo l'ggcoreutente al tss gruppo per l'accesso TPM:

    sudo usermod -a -G tss ggcore
  2. Aggiorna la directory delle credenziali completando i seguenti passaggi:

    • Rimuovi il file della chiave privata dalla directory delle credenziali.

      • Poiché utilizziamo chiavi TPM permanenti, non è necessario copiare alcun file di chiave privata.

    • Copia il nuovo device.pem.crt nella cartella delle credenziali.

  3. Modifica config.yaml con la seguente TPM-specific configurazione:

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. Riavviate Greengrass Nucleus Lite eseguendo il seguente comando:

    systemctl restart greengrass-lite.target

Risoluzione dei problemi

Se riscontri problemi durante la configurazione o il funzionamento del TPM2-enabled AWS IoT Greengrass dispositivo, prova i seguenti passaggi per la risoluzione dei problemi:

Il dispositivo TPM non viene trovato (quando si utilizza NitroTPM)

Se non /dev/tpm0 è presente, procedi nel seguente modo:

  1. Verifica di utilizzare un tipo di NitroTPM-supported istanza.

  2. Assicurati che l'AMI sia stata creata con--tpm-support v2.0.

  3. Verifica che l'istanza sia stata avviata dall'AMI personalizzata.

Errori di autorizzazione negata

Se riscontri errori di accesso al TPM, procedi come segue:

  1. Verifica che l'utente sia nel tss gruppo:groups $USER.

  2. Controlla le autorizzazioni del dispositivo TPM utilizzando il seguente comando:

    ls -l /dev/tpm*
  3. Verifica di aver effettuato il logout e di aver effettuato nuovamente l'accesso dopo l'aggiunta al gruppo. tss

Problemi con il provider OpenSSL

Se il provider TPM non viene trovato, procedi come segue:

  1. Verifica tpm2.so il percorso in. /etc/ssl/openssl.cnf

  2. Controlla l'installazione del provider eseguendo il seguente comando:

    openssl list -providers
  3. Verifica che il tpm2-openssl pacchetto sia installato correttamente.

Fasi successive

Ora che hai integrato con successo il tuo dispositivo AWS IoT Greengrass principale con TPM2, puoi:

  • Distribuisci i componenti sul tuo dispositivo sicuro AWS IoT Greengrass

  • Configura AWS IoT Greengrass dispositivi aggiuntivi con l'integrazione TPM2

Per ulteriori informazioni sulla sicurezza dei AWS IoT Greengrass dispositivi, consulta. Sicurezza in AWS IoT Greengrass