

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Tutorial: Amankan AWS IoT Greengrass Nucleus Lite dengan Modul Platform Tepercaya (TPM)
<a name="gg-lite-with-tpm-tutorial"></a>

Tutorial ini menjelaskan cara mengaktifkan dan mengkonfigurasi dukungan Trusted Platform Module (TPM) untuk AWS IoT Greengrass nucleus lite. TPM menyediakan akar kepercayaan berbasis perangkat keras untuk penyimpanan kunci yang aman. Fitur keamanan ini melindungi operasi kriptografi dan kredensi sensitif, meningkatkan keamanan dan integritas perangkat.

Ketika Anda menyelesaikan integrasi ini, perangkat AWS IoT Greengrass inti Anda akan menggunakan kunci pribadi yang dilindungi TPM untuk identitas dan komunikasinya dengan layanan. AWS IoT 

Untuk informasi selengkapnya tentang keamanan pada AWS IoT Greengrass perangkat, lihat[Keamanan di AWS IoT Greengrass](security.md).

## Prasyarat
<a name="lite-tpm-prerequisites"></a>

Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:
+ [Perangkat yang kompatibel dengan Linux dengan perangkat keras TPM 2.0 atau NitroTPM](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/nitrotpm.html)
+ Mesin pengembang dengan Greengrass Nucleus Lite diinstal. Untuk informasi selengkapnya, lihat [Menginstal perangkat lunak AWS IoT Greengrass Inti (konsol)](https://docs.aws.amazon.com//greengrass/v2/developerguide/install-greengrass-v2-console.html).
+ Petunjuk dalam tutorial ini didefinisikan untuk Ubuntu 24.04 LTS.
+ Distribusi Linux apa pun yang dapat mendukung [Linux TPM2 Software Stack](https://tpm2-software.github.io/) dapat mendukung mekanisme ini.
+ Mesin pengembang dengan [AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)diinstal dan dikonfigurasi dengan izin untuk:
  + Buat dan kelola AWS IoT sumber daya
  + Membuat dan mengelola peran dan kebijakan IAM
+ Hak istimewa root atau sudo pada perangkat.

Tutorial ini berisi petunjuk tentang cara menggunakan TPM2 chip sebagai Hardware Security Module (HSM) untuk membuat kunci pribadi dan CSR yang digunakan untuk membuat sertifikat AWS IoT benda.

## Langkah 1: Siapkan instance NitroTPM
<a name="lite-tpm-step1"></a>

1. Siapkan instance NitroTPM. Untuk informasi lebih lanjut, lihat [NitroTPM](https://docs.aws.amazon.com//AWSEC2/latest/UserGuide/enable-nitrotpm-support-on-ami.html).

1. Luncurkan instance terakhir menggunakan AMI kustom yang dibuat pada langkah sebelumnya.
**penting**  
Saat menghubungkan dengan SSH, gunakan `ubuntu` pengguna alih-alih. `root`

1. Periksa apakah perangkat TPM ada dan bekerja dengan menjalankan perintah berikut:

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

   Anda harus melihat `/dev/tpm0` dan `/dev/tpmrm0` perangkat.

## Langkah 2: Instal dan konfigurasikan alat TPM
<a name="lite-tpm-step2"></a>

1. Instal paket yang diperlukan dengan menjalankan perintah berikut:

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

1. Verifikasi izin perangkat TPM dengan menjalankan perintah berikut:

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

## Langkah 3: Konfigurasikan penyedia OpenSSL TPM2
<a name="lite-tpm-step3"></a>

1. Edit file konfigurasi OpenSSL:

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

1. Tambahkan konfigurasi berikut:

   ```
   [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. Sesuaikan jalur modul seperlunya. Anda dapat menemukan jalur yang benar menggunakan:

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

## Langkah 4: Hasilkan kunci TPM persisten
<a name="lite-tpm-step4"></a>

1. Buat kunci primer dengan menjalankan perintah berikut:

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

1. Buat objek kunci ECC dengan menjalankan perintah berikut:

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

1. Muat kunci dengan menjalankan perintah berikut:

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

1. Buat kunci persisten dengan menjalankan perintah berikut:

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

   Ini menciptakan kunci persisten dengan pegangan (seperti`0x81000002`).

## Langkah 5: Hasilkan Permintaan Penandatanganan Sertifikat (CSR)
<a name="lite-tpm-step5"></a>

Pada langkah ini, Anda akan menggunakan kunci pribadi TPM2 yang dilindungi untuk menghasilkan Permintaan Penandatanganan Sertifikat (CSR).

1. Hasilkan CSR menggunakan kunci TPM:

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

1. Ganti `0x81000002` dengan nilai pegangan yang Anda pilih dan `TPMThing` dengan nama benda yang Anda inginkan.

## Langkah 6: Buat sertifikat dari CSR
<a name="lite-tpm-step6"></a>

1. Di komputer pengembangan Anda, buat folder tempat Anda mengunduh sertifikat untuk AWS IoT benda itu.

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

1. Gunakan file CSR untuk membuat dan mengunduh sertifikat untuk AWS IoT hal itu ke komputer pengembangan Anda.

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

   Jika permintaan berhasil, responsnya terlihat mirip dengan contoh berikut:

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

## Langkah 7: Siapkan Greengrass Nucleus Lite dengan dukungan TPM
<a name="lite-tpm-step7"></a>

Untuk mengaktifkan dukungan TPM di Greengrass Nucleus Lite, lakukan perubahan berikut:

1. Konfigurasikan izin pengguna dengan menambahkan `ggcore` pengguna ke `tss` grup untuk akses TPM:

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

1. Perbarui direktori kredensil dengan menyelesaikan langkah-langkah berikut:
   + Hapus file kunci pribadi dari direktori kredensial.
     + Karena kami menggunakan kunci TPM persisten, tidak ada file kunci pribadi yang perlu disalin.
   + Salin yang baru `device.pem.crt` ke direktori kredensil itu.

1. Edit `config.yaml` dengan konfigurasi khusus TPM berikut:

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

1. Reboot Greengrass Nucleus Lite Anda dengan menjalankan perintah berikut:

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

## Pemecahan masalah
<a name="lite-tpm-troubleshooting"></a>

Jika Anda mengalami masalah selama penyiapan atau pengoperasian AWS IoT Greengrass perangkat yang TPM2 diaktifkan, coba langkah pemecahan masalah berikut:

**Perangkat TPM tidak ditemukan (saat menggunakan NitroTPM)**

Jika tidak `/dev/tpm0` ada, lakukan langkah-langkah berikut:

1. Verifikasi bahwa Anda menggunakan jenis instans yang didukung NitroTPM.

1. Pastikan AMI dibuat dengan`--tpm-support v2.0`.

1. Verifikasi bahwa instance diluncurkan dari AMI kustom.

**Kesalahan ditolak izin**

Jika Anda mengalami kesalahan akses TPM, lakukan hal berikut:

1. Verifikasi bahwa pengguna berada dalam `tss` grup:`groups $USER`.

1. Periksa izin perangkat TPM menggunakan perintah berikut:

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

1. Verifikasi Anda keluar dan masuk kembali setelah menambahkan ke `tss` grup.

**Masalah penyedia OpenSSL**

Jika penyedia TPM tidak ditemukan, lakukan hal berikut:

1. Verifikasi `tpm2.so` jalur di`/etc/ssl/openssl.cnf`.

1. Periksa instalasi penyedia dengan menjalankan perintah berikut:

   ```
   openssl list -providers
   ```

1. Verifikasi `tpm2-openssl` paket diinstal dengan benar.

## Langkah selanjutnya
<a name="lite-tpm-next-steps"></a>

Sekarang setelah Anda berhasil mengintegrasikan perangkat AWS IoT Greengrass inti Anda TPM2, Anda dapat:
+ Menerapkan komponen ke perangkat aman AWS IoT Greengrass Anda
+ Siapkan AWS IoT Greengrass perangkat tambahan dengan TPM2 integrasi

Untuk informasi selengkapnya tentang keamanan pada AWS IoT Greengrass perangkat, lihat[Keamanan di AWS IoT Greengrass](security.md).