

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Tutorial: Proteja o AWS IoT Greengrass Nucleus Lite com o Trusted Platform Module (TPM)
<a name="gg-lite-with-tpm-tutorial"></a>

Este tutorial explica como ativar e configurar o suporte do Trusted Platform Module (TPM) para o AWS IoT Greengrass nucleus lite. O TPM fornece raiz de confiança baseada em hardware para armazenamento seguro de chaves. Esse recurso de segurança protege operações criptográficas e credenciais confidenciais, aprimorando a segurança e a integridade do dispositivo.

Quando você concluir essa integração, seu dispositivo AWS IoT Greengrass principal usará chaves privadas protegidas por TPM para sua identidade e comunicação com os serviços. AWS IoT 

Para obter mais informações sobre segurança em AWS IoT Greengrass dispositivos, consulte[Segurança em AWS IoT Greengrass](security.md).

## Pré-requisitos
<a name="lite-tpm-prerequisites"></a>

Para concluir este tutorial, você precisará do seguinte:
+ [Um dispositivo compatível com Linux com hardware TPM 2.0 ou NitroTPM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html)
+ Uma máquina de desenvolvedor com o Greengrass Nucleus Lite instalado. Para obter mais informações, consulte [Instalar o software AWS IoT Greengrass Core (console)](https://docs.aws.amazon.com//greengrass/v2/developerguide/install-greengrass-v2-console.html).
+ As instruções neste tutorial são definidas para o Ubuntu 24.04 LTS.
+ Qualquer distribuição Linux que suporte o [Linux TPM2 Software Stack](https://tpm2-software.github.io/) pode suportar esse mecanismo.
+ Uma máquina de desenvolvedor com a [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) instalada e configurada com permissões para:
  + Crie e gerencie AWS IoT recursos
  + Criação e atualização de perfis e políticas do IAM
+ Privilégios de root ou sudo no dispositivo.

Este tutorial contém instruções sobre como usar o TPM2 chip como um módulo de segurança de hardware (HSM) para criar uma chave privada e CSR que é usada para criar o certificado do AWS IoT item.

## Etapa 1: configurar uma instância do NitroTPM
<a name="lite-tpm-step1"></a>

1. Configure uma instância do NitroTPM. Para obter mais informações, consulte [NitroTPM](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/enable-nitrotpm-support-on-ami.html).

1. Execute a instância final usando a AMI personalizada criada na etapa anterior.
**Importante**  
Ao se conectar com SSH, use o `ubuntu` usuário em vez de`root`.

1. Verifique se o dispositivo TPM está presente e funcionando executando o seguinte comando:

   ```
   ls -la /dev/tpm*
   ```

   Você deve ver `/dev/tpm0` e `/dev/tpmrm0` dispositivos.

## Etapa 2: instalar e configurar as ferramentas do TPM
<a name="lite-tpm-step2"></a>

1. Instale os pacotes necessários executando o seguinte comando:

   ```
   sudo apt update
   sudo apt install tpm2-openssl tpm2-tools tpm2-abrmd libtss2-tcti-tabrmd0
   ```

1. Verifique as permissões do dispositivo TPM executando o seguinte 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
   ```

## Etapa 3: Configurar o provedor OpenSSL TPM2
<a name="lite-tpm-step3"></a>

1. Edite o arquivo de configuração do OpenSSL:

   ```
   sudo vi /etc/ssl/openssl.cnf
   ```

1. Adicione a seguinte configuração:

   ```
   [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
   ```

1. Ajuste o caminho do módulo conforme necessário. Você pode encontrar o caminho correto usando:

   ```
   find /usr -name "tpm2.so"
   ```

## Etapa 4: gerar chaves TPM persistentes
<a name="lite-tpm-step4"></a>

1. Crie uma chave primária executando o seguinte comando:

   ```
   sudo tpm2_createprimary -C o -c primary.ctx
   ```

1. Crie um objeto de chave ECC executando o seguinte comando:

   ```
   sudo tpm2_create -C primary.ctx -g sha256 -G ecc256 -r device.priv -u device.pub
   ```

1. Carregue a chave executando o seguinte comando:

   ```
   sudo tpm2_load -C primary.ctx -r device.priv -u device.pub -c device.ctx
   ```

1. Torne a chave persistente executando o seguinte comando:

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

   Isso cria uma chave persistente com a alça (como`0x81000002`).

## Etapa 5: Gerar solicitação de assinatura de certificado (CSR)
<a name="lite-tpm-step5"></a>

Nesta etapa, você usará a chave privada TPM2 protegida para gerar uma Solicitação de Assinatura de Certificado (CSR).

1. Gere uma CSR usando a chave TPM:

   ```
   openssl req -new -provider tpm2 -key "handle:0x81000002" \
       -out device.csr \
       -subj "/CN=TPMThing"
   ```

1. `0x81000002`Substitua pelo valor do identificador escolhido e `TPMThing` pelo nome do item desejado.

## Etapa 6: criar o certificado a partir do CSR
<a name="lite-tpm-step6"></a>

1. No seu computador de desenvolvimento, crie uma pasta na qual você baixou o certificado da AWS IoT coisa.

   ```
   mkdir greengrass-v2-certs
   ```

1. Use o arquivo CSR para criar e baixar o certificado da AWS IoT coisa em seu computador de desenvolvimento.

   ```
   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 a solicitação for bem-sucedida, a resposta será semelhante ao exemplo a seguir:.

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

## Etapa 7: Configurar o Greengrass Nucleus Lite com suporte ao TPM
<a name="lite-tpm-step7"></a>

Para ativar o suporte ao TPM no Greengrass Nucleus Lite, faça as seguintes alterações:

1. Configure as permissões do usuário adicionando o `ggcore` usuário ao `tss` grupo para acesso ao TPM:

   ```
   sudo usermod -a -G tss ggcore
   ```

1. Atualize o diretório de credenciais concluindo as seguintes etapas:
   + Remova o arquivo de chave privada do diretório de credenciais.
     + Como estamos usando chaves TPM persistentes, nenhum arquivo de chave privada precisa ser copiado.
   + Copie o novo `device.pem.crt` nesse diretório de credenciais.

1. Edite `config.yaml` com a seguinte configuração específica do TPM:

   ```
   system:
       privateKeyPath: "handle:0x81000002" # Use your chosen handle
       certificateFilePath: "" # Replace with the path of device.pem.crt
       ...
   ```

1. Reinicie seu Greengrass Nucleus Lite executando o seguinte comando:

   ```
   systemctl restart greengrass-lite.target
   ```

## Solução de problemas
<a name="lite-tpm-troubleshooting"></a>

Se você encontrar problemas durante a configuração ou operação do seu AWS IoT Greengrass dispositivo TPM2 habilitado, tente as seguintes etapas de solução de problemas:

**O dispositivo TPM não foi encontrado (ao usar o NitroTPM)**

Se não `/dev/tpm0` estiver presente, execute as seguintes etapas:

1. Verifique se você está usando um tipo de instância compatível com NitrotPM.

1. Certifique-se de que a AMI tenha sido criada com`--tpm-support v2.0`.

1. Verifique se a instância foi executada a partir da AMI personalizada.

**Erros de permissão negada**

Se você encontrar erros de acesso ao TPM, faça o seguinte:

1. Verifique se o usuário está no `tss` grupo:`groups $USER`.

1. Verifique as permissões do dispositivo TPM usando o seguinte comando:

   ```
   ls -l /dev/tpm*
   ```

1. Verifique se você se desconectou e se conectou novamente após adicionar ao `tss` grupo.

**Problemas com o provedor OpenSSL**

Se o provedor de TPM não for encontrado, faça o seguinte:

1. Verifique `tpm2.so` o caminho no`/etc/ssl/openssl.cnf`.

1. Verifique a instalação do provedor executando o seguinte comando:

   ```
   openssl list -providers
   ```

1. Verifique se o `tpm2-openssl` pacote está instalado corretamente.

## Próximas etapas
<a name="lite-tpm-next-steps"></a>

Agora que você integrou com sucesso seu dispositivo AWS IoT Greengrass principal TPM2, você pode:
+ Implante componentes em seu AWS IoT Greengrass dispositivo seguro
+ Configure AWS IoT Greengrass dispositivos adicionais com TPM2 integração

Para obter mais informações sobre segurança em AWS IoT Greengrass dispositivos, consulte[Segurança em AWS IoT Greengrass](security.md).