View a markdown version of this page

Tutorial: Seguro AWS IoT Nucleus Lite de Greengrass con el módulo de plataforma confiable (TPM) - AWS IoT Greengrass

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Tutorial: Seguro AWS IoT Nucleus Lite de Greengrass con el módulo de plataforma confiable (TPM)

En este tutorial se explica cómo habilitar y configurar la compatibilidad con el Módulo de plataforma segura (TPM) para AWS IoT Greengrass nucleus lite. El TPM proporciona una raíz de confianza basada en hardware para el almacenamiento seguro de las claves. Esta función de seguridad protege las operaciones criptográficas y las credenciales confidenciales, lo que mejora la seguridad y la integridad del dispositivo.

Cuando complete esta integración, su dispositivo AWS IoT Greengrass principal utilizará claves TPM-protected privadas para su identidad y comunicación con AWS IoT los servicios.

Para obtener más información sobre la seguridad de AWS IoT Greengrass los dispositivos, consulteSeguridad en AWS IoT Greengrass.

Requisitos previos

Necesitará lo siguiente para completar este tutorial:

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

  • Una máquina para desarrolladores con Greengrass Nucleus Lite instalado. Para obtener más información, consulte Instalación del software AWS IoT Greengrass Core (consola).

  • Las instrucciones de este tutorial están definidas para Ubuntu 24.04 LTS.

  • Cualquier distribución de Linux que sea compatible con la pila de software TPM2 de Linux puede admitir este mecanismo.

  • Una máquina de desarrollador con la AWS CLI instalada y configurada con permisos para que:

    • Cree y administre AWS IoT recursos

    • Cree y actualice los roles y las políticas de IAM

  • Privilegios de raíz o sudo en el dispositivo.

Este tutorial contiene instrucciones sobre cómo utilizar el chip TPM2 como módulo de seguridad de hardware (HSM) para crear una clave privada y una CSR que se utiliza para crear el certificado de la AWS IoT cosa.

Paso 1: configurar una instancia de NitroTPM

  1. Configura una instancia de NitroTPM. Para obtener más información, consulte NitroTPM.

  2. Lance la instancia final con la AMI personalizada creada en el paso anterior.

    importante

    Cuando te conectes con SSH, usa el ubuntu usuario en lugar deroot.

  3. Para comprobar que el dispositivo TPM está presente y funciona, ejecute el siguiente comando:

    ls -la /dev/tpm*

    Deberías ver /dev/tpm0 y /dev/tpmrm0 dispositivos.

Paso 2: Instalar y configurar las herramientas TPM

  1. Instale los paquetes necesarios ejecutando el siguiente comando:

    sudo apt update sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
  2. Verifique los permisos del dispositivo TPM ejecutando el siguiente comando:

    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

Paso 3: Configurar el proveedor TPM2 de OpenSSL

  1. Edite el archivo de configuración de OpenSSL:

    sudo vi /etc/ssl/openssl.cnf
  2. Agregue la siguiente configuración:

    [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. Ajuste la ruta del módulo según sea necesario. Puede encontrar la ruta correcta usando:

    find /usr -name "tpm2.so"

Paso 4: Generar claves TPM persistentes

  1. Cree una clave principal ejecutando el siguiente comando:

    sudo tpm2_createprimary -C o -c primary.ctx
  2. Cree un objeto de clave ECC ejecutando el siguiente comando:

    sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
  3. Cargue la clave ejecutando el siguiente comando:

    sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
  4. Haga que la clave sea persistente ejecutando el siguiente comando:

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

    Esto crea una clave persistente con el identificador (similar a0x81000002).

Paso 5: Generar una solicitud de firma de certificado (CSR)

En este paso, utilizarás la clave TPM2-protected privada para generar una solicitud de firma de certificado (CSR).

  1. Genere una CSR con la clave TPM:

    openssl req -new -provider tpm2 -key "handle:0x81000002" \ -out device.csr \ -subj "/CN=TPMThing"
  2. 0x81000002Sustitúyalo por el valor de identificador que hayas elegido y por el TPMThing nombre de la cosa que desees.

Paso 6: Crea el certificado desde CSR

  1. En tu ordenador de desarrollo, crea una carpeta en la que hayas descargado el certificado de la AWS IoT cosa.

    mkdir greengrass-v2-certs
  2. Usa el archivo CSR para crear y descargar el certificado de la AWS IoT cosa en tu computadora de desarrollo.

    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 solicitud se realiza correctamente, la respuesta tiene un aspecto similar al del siguiente ejemplo:

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

Paso 7: Configure Greengrass Nucleus Lite con soporte para TPM

Para habilitar la compatibilidad con TPM en Greengrass Nucleus Lite, realice los siguientes cambios:

  1. Configure los permisos de usuario añadiendo el ggcore usuario al tss grupo para acceder al TPM:

    sudo usermod -a -G tss ggcore
  2. Actualice el directorio de credenciales siguiendo los pasos siguientes:

    • Elimine el archivo de clave privada del directorio de credenciales.

      • Como utilizamos claves TPM persistentes, no es necesario copiar ningún archivo de clave privada.

    • Copie la nueva device.pem.crt en ese directorio de credenciales.

  3. Edite config.yaml con la siguiente TPM-specific configuración:

    system: privateKeyPath: "handle:0x81000002" # Use your chosen handle certificateFilePath: "" # Replace with the path of device.pem.crt ...
  4. Reinicie su Nucleus Lite de Greengrass ejecutando el siguiente comando:

    systemctl restart greengrass-lite.target

Resolución de problemas

Si tiene problemas durante la configuración o el funcionamiento del TPM2-enabled AWS IoT Greengrass dispositivo, pruebe los siguientes pasos de solución de problemas:

No se encuentra el dispositivo TPM (cuando se usa NitroTPM)

Si no /dev/tpm0 está presente, lleve a cabo los siguientes pasos:

  1. Comprueba que estás usando un tipo de NitroTPM-supported instancia.

  2. Asegúrese de que la AMI se creó con--tpm-support v2.0.

  3. Compruebe que la instancia se lanzó desde la AMI personalizada.

Errores de permiso denegado

Si se producen errores de acceso al TPM, haga lo siguiente:

  1. Verifique que el usuario esté en el tss grupo:groups $USER.

  2. Compruebe los permisos del dispositivo TPM con el siguiente comando:

    ls -l /dev/tpm*
  3. Compruebe que ha cerrado sesión y ha vuelto a iniciarla después de añadirlo al tss grupo.

Problemas con el proveedor de OpenSSL

Si no encuentra el proveedor TPM, haga lo siguiente:

  1. Verifique tpm2.so la ruta en. /etc/ssl/openssl.cnf

  2. Compruebe la instalación del proveedor ejecutando el siguiente comando:

    openssl list -providers
  3. Compruebe que el tpm2-openssl paquete esté correctamente instalado.

Siguientes pasos

Ahora que ha integrado correctamente su dispositivo AWS IoT Greengrass principal con TPM2, puede:

  • Implemente componentes en su dispositivo seguro AWS IoT Greengrass

  • Configure AWS IoT Greengrass dispositivos adicionales con la integración de TPM2

Para obtener más información sobre la seguridad de AWS IoT Greengrass los dispositivos, consulteSeguridad en AWS IoT Greengrass.