View a markdown version of this page

Tutoriel : Sécurisé AWS IoT Greengrass Nucleus Lite avec module de plateforme sécurisée (TPM) - AWS IoT Greengrass

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel : Sécurisé AWS IoT Greengrass Nucleus Lite avec module de plateforme sécurisée (TPM)

Ce didacticiel explique comment activer et configurer la prise en charge du module TPM (Trusted Platform Module) pour AWS IoT Greengrass Nucleus Lite. Le TPM fournit une base de confiance matérielle pour le stockage sécurisé des clés. Cette fonction de sécurité protège les opérations cryptographiques et les informations d'identification sensibles, améliorant ainsi la sécurité et l'intégrité des appareils.

Une fois cette intégration terminée, votre appareil AWS IoT Greengrass principal utilisera des clés TPM-protected privées pour son identité et sa communication avec AWS IoT les services.

Pour plus d'informations sur la sécurité AWS IoT Greengrass des appareils, consultezSécurité dans AWS IoT Greengrass.

Conditions préalables

Pour suivre ce didacticiel, vous aurez besoin des éléments suivants :

  • Un Linux-compatible appareil doté d'un matériel TPM 2.0 ou NitroTPM

  • Une machine de développement sur laquelle Greengrass Nucleus Lite est installé. Pour plus d'informations, consultez la section Installation du logiciel AWS IoT Greengrass Core (console).

  • Les instructions de ce didacticiel sont définies pour Ubuntu 24.04 LTS.

  • Toute distribution Linux pouvant prendre en charge la pile logicielle Linux TPM2 peut prendre en charge ce mécanisme.

  • Une machine de développement AWS CLI installée et configurée avec les autorisations nécessaires pour :

    • Création et gestion de AWS IoT ressources

    • Création et gestion de rôles et de politiques IAM

  • Privilèges root ou sudo sur l'appareil.

Ce didacticiel contient des instructions sur l'utilisation de la puce TPM2 en tant que module de sécurité matériel (HSM) pour créer une clé privée et un CSR qui est utilisé pour créer le certificat d' AWS IoT objet.

Étape 1 : configurer une instance NitroTPM

  1. Configurez une instance NitroTPM. Pour plus d'informations, consultez NitroTPM.

  2. Lancez l'instance finale à l'aide de l'AMI personnalisée créée à l'étape précédente.

    Important

    Lorsque vous vous connectez via SSH, utilisez l'ubuntuutilisateur à la place deroot.

  3. Vérifiez que le périphérique TPM est présent et fonctionne en exécutant la commande suivante :

    ls -la /dev/tpm*

    Vous devriez voir /dev/tpm0 et /dev/tpmrm0 appareils.

Étape 2 : Installation et configuration des outils TPM

  1. Installez les packages requis en exécutant la commande suivante :

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. Vérifiez les autorisations du périphérique TPM en exécutant la commande suivante :

    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

Étape 3 : Configuration du fournisseur OpenSSL TPM2

  1. Modifiez le fichier de configuration d'OpenSSL :

    sudo vi /etc/ssl/openssl.cnf
  2. Ajoutez la configuration suivante :

    [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. Ajustez le chemin du module si nécessaire. Vous pouvez trouver le chemin correct en utilisant :

    find /usr -name "tpm2.so"

Étape 4 : générer des clés TPM persistantes

  1. Créez une clé primaire en exécutant la commande suivante :

    sudo tpm2_createprimary -C o -c primary.ctx
  2. Créez un objet clé ECC en exécutant la commande suivante :

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. Chargez la clé en exécutant la commande suivante :

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. Rendez la clé persistante en exécutant la commande suivante :

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

    Cela crée une clé persistante avec le handle (like0x81000002).

Étape 5 : générer une demande de signature de certificat (CSR)

Au cours de cette étape, vous allez utiliser la clé TPM2-protected privée pour générer une demande de signature de certificat (CSR).

  1. Générez un CSR à l'aide de la clé TPM :

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. 0x81000002Remplacez-la par la valeur de handle que vous avez choisie et TPMThing par le nom de l'objet souhaité.

Étape 6 : Création du certificat à partir de CSR

  1. Sur votre ordinateur de développement, créez un dossier dans lequel vous avez téléchargé le certificat AWS IoT correspondant.

    mkdir greengrass-v2-certs
  2. Utilisez le fichier CSR pour créer et télécharger le certificat correspondant à l' AWS IoT objet sur votre ordinateur de développement.

    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

    Si la demande aboutit, la réponse ressemble à l'exemple suivant :

    { "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-----" }

Étape 7 : Configuration de Greengrass Nucleus Lite avec prise en charge du TPM

Pour activer la prise en charge du TPM dans Greengrass Nucleus Lite, apportez les modifications suivantes :

  1. Configurez les autorisations utilisateur en ajoutant l'ggcoreutilisateur au tss groupe pour l'accès au TPM :

    sudo usermod -a -G tss ggcore
  2. Mettez à jour le répertoire des informations d'identification en suivant les étapes suivantes :

    • Supprimez le fichier de clé privée du répertoire des informations d'identification.

      • Comme nous utilisons des clés TPM persistantes, aucun fichier de clé privée n'a besoin d'être copié.

    • Copiez le nouveau device.pem.crt dans ce répertoire d'informations d'identification.

  3. Modifiez config.yaml avec la TPM-specific configuration suivante :

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. Redémarrez votre Greengrass Nucleus Lite en exécutant la commande suivante :

    systemctl restart greengrass-lite.target

Résolution des problèmes

Si vous rencontrez des problèmes lors de la configuration ou du fonctionnement de votre TPM2-enabled AWS IoT Greengrass appareil, essayez les étapes de dépannage suivantes :

Le périphérique TPM est introuvable (lors de l'utilisation de NitroTPM)

S'/dev/tpm0il n'est pas présent, procédez comme suit :

  1. Vérifiez que vous utilisez un type d' NitroTPM-supported instance.

  2. Assurez-vous que l'AMI a été créée avec--tpm-support v2.0.

  3. Vérifiez que l'instance a été lancée à partir de l'AMI personnalisée.

Erreurs de type « Autorisation refusée »

Si vous rencontrez des erreurs d'accès au TPM, procédez comme suit :

  1. Vérifiez que l'utilisateur fait partie du tss groupe :groups $USER.

  2. Vérifiez les autorisations du périphérique TPM à l'aide de la commande suivante :

    ls -l /dev/tpm*
  3. Vérifiez que vous vous êtes déconnecté puis reconnecté après avoir rejoint le tss groupe.

Problèmes avec le fournisseur OpenSSL

Si le fournisseur TPM n'est pas trouvé, procédez comme suit :

  1. Vérifiez tpm2.so le chemin dans le/etc/ssl/openssl.cnf.

  2. Vérifiez l'installation du fournisseur en exécutant la commande suivante :

    openssl list -providers
  3. Vérifiez que le tpm2-openssl package est correctement installé.

Étapes suivantes

Maintenant que vous avez intégré avec succès votre appareil AWS IoT Greengrass principal à TPM2, vous pouvez :

  • Déployez des composants sur votre AWS IoT Greengrass appareil sécurisé

  • Configurez des AWS IoT Greengrass appareils supplémentaires grâce à l'intégration TPM2

Pour plus d'informations sur la sécurité AWS IoT Greengrass des appareils, consultezSécurité dans AWS IoT Greengrass.