

Pemberitahuan akhir dukungan: Pada 7 Oktober 2026, AWS akan menghentikan dukungan untuk. AWS IoT Greengrass Version 1 Setelah 7 Oktober 2026, Anda tidak akan lagi dapat mengakses sumber daya. AWS IoT Greengrass V1 Untuk informasi lebih lanjut, silakan kunjungi [Migrasi dari AWS IoT Greengrass Version 1](https://docs.aws.amazon.com/greengrass/v2/developerguide/migrate-from-v1.html).

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

# Modul 7: Mensimulasikan integrasi keamanan perangkat keras
<a name="console-mod7"></a>

Fitur ini tersedia untuk AWS IoT Greengrass Core v1.7 dan yang lebih baru.

Modul lanjutan ini menunjukkan Anda cara mengonfigurasi modul keamanan perangkat keras yang disimulasikan (HSM) untuk digunakan dengan core Greengrass. Konfigurasi menggunakan SoftHSM, yang merupakan implementasi perangkat lunak murni yang menggunakan [PKCS \$111](#console-mod7-see-also) antarmuka pemrograman aplikasi (API). Tujuan dari modul ini adalah untuk mengizinkan Anda untuk mengatur lingkungan di mana Anda dapat belajar dan melakukan pengujian awal terhadap implementasi perangkat lunak saja dari PKCS\$111 API. Ini disediakan hanya untuk pembelajaran dan pengujian awal, bukan untuk penggunaan produksi dalam bentuk apapun.

Anda dapat menggunakan konfigurasi ini untuk bereksperimen dengan menggunakan layanan kompatibel-PKCS \$111 untuk menyimpan kunci privat Anda. Untuk informasi lebih lanjut tentang implementasi perangkat lunak saja, lihat [SoftHSM](https://www.opendnssec.org/softhsm/). Untuk informasi selengkapnya tentang mengintegrasikan keamanan perangkat keras pada AWS IoT Greengrass inti, termasuk persyaratan umum, lihat[Integrasi keamanan perangkat keras](hardware-security.md).

**penting**  
Modul ini ditujukan untuk tujuan eksperimen saja. Kami sangat tidak menganjurkan penggunaan SoftHSM dalam lingkungan produksi karena mungkin menyediakan rasa keamanan tambahan yang salah. Konfigurasi yang dihasilkan tidak menyediakan manfaat keamanan yang sebenarnya. Kunci yang disimpan di SoftHSM tidak disimpan lebih aman daripada sarana penyimpanan rahasia lainnya di lingkungan Greengrass.  
Tujuan dari modul ini adalah untuk mengizinkan Anda untuk mempelajari tentang spesifikasi PKCS \$111 dan melakukan pengujian awal perangkat lunak Anda jika Anda berencana untuk menggunakan HSM berbasis perangkat nyata di masa depan.  
Anda harus menguji implementasi perangkat keras masa depan Anda secara terpisah dan sepenuhnya sebelum penggunaan produksi karena mungkin ada perbedaan antara implementasi PKCS \$111 yang disediakan di SoftHSM dan implementasi berbasis perangkat keras.

Jika Anda memerlukan bantuan terkait orientasi [modul keamanan perangkat keras yang didukung](hardware-security.md#hardware-security-reqs), hubungi perwakilan AWS Enterprise Support Anda.

Sebelum Anda memulai, jalankan skrip [Penyiapan Perangkat Greengrass](quick-start.md) ini, atau pastikan bahwa Anda telah menyelesaikan [Modul 1](module1.md) dan [Modul 2](module2.md) dari tutorial Memulai. Dalam modul ini, kami berasumsi bahwa inti Anda sudah disediakan dan berkomunikasi dengannya. AWS Modul ini akan memakan waktu sekitar 30 menit untuk menyelesaikannya.

## Instal perangkat lunak SoftHSM
<a name="softhsm-install"></a>

Dalam langkah ini, Anda memasang SoftHSM dan alat pkcs11, yang digunakan untuk mengelola keberlangsungan SoftHSM Anda.
+ Di terminal pada perangkat AWS IoT Greengrass inti Anda, jalankan perintah berikut:

  ```
  sudo apt-get install softhsm2 libsofthsm2-dev pkcs11-dump
  ```

  Untuk informasi lebih lanjut tentang paket ini, lihat [Instal softhsm2](https://www.howtoinstall.co/en/ubuntu/xenial/softhsm2), [Pasang libsofthsm2-dev](https://www.howtoinstall.co/en/ubuntu/xenial/libsofthsm2-dev), dan [Instal pkcs11-dump](https://www.howtoinstall.co/en/ubuntu/xenial/pkcs11-dump).
**catatan**  
Jika Anda mengalami masalah saat menggunakan perintah ini di sistem Anda, lihat [SoftHSM versi 2 aktif](https://github.com/opendnssec/SoftHSMv2). GitHub Situs ini menyediakan informasi penginstalan lebih lanjut, termasuk cara membangun dari sumber.

## Konfigurasi SoftHSM
<a name="softhsm-config"></a>

Dalam langkah ini, Anda [mengonfigurasi SoftHSM](https://github.com/opendnssec/SoftHSMv2#configure-1).

1. Beralih ke pengguna akar.

   ```
   sudo su
   ```

1. Gunakan halaman manual untuk menemukan `softhsm2.conf` lokasi yang menyeluruh dalam sistem. Lokasi yang umum adalah `/etc/softhsm/softhsm2.conf`, tetapi lokasi mungkin berbeda pada beberapa sistem.

   ```
   man softhsm2.conf
   ```

1. Buat direktori untuk file konfigurasi softhsm2 di lokasi yang menyeluruh dalam sistem. Dalam contoh ini, kami mengasumsikan lokasi `/etc/softhsm/softhsm2.conf`.

   ```
   mkdir -p /etc/softhsm
   ```

1. Membuat direktori token di `/greengrass` direktori.
**catatan**  
Jika langkah ini dilewati, softhsm2-util melaporkan `ERROR: Could not initialize the library`.

   ```
   mkdir -p /greengrass/softhsm2/tokens
   ```

1. Konfigurasikan direktori token.

   ```
   echo "directories.tokendir = /greengrass/softhsm2/tokens" > /etc/softhsm/softhsm2.conf
   ```

1. Konfigurasikan backend berbasis file.

   ```
   echo "objectstore.backend = file" >> /etc/softhsm/softhsm2.conf
   ```

**catatan**  
Pengaturan konfigurasi ini ditujukan untuk tujuan eksperimen saja. Untuk melihat semua opsi konfigurasi, baca halaman manual buku panduan untuk file konfigurasi.  

```
man softhsm2.conf
```

## Mengimpor kunci privat ke SoftHSM
<a name="softhsm-import-key"></a>

Dalam langkah ini, Anda menginisialisasi token SoftHSM, mengkonversi format kunci privat, lalu mengimpor kunci privat.

1. Menginisialisasi token SoftHSM.

   ```
   softhsm2-util --init-token --slot 0 --label greengrass --so-pin 12345 --pin 1234
   ```
**catatan**  
Jika diminta, masukkan pin SO dari `12345` dan pin pengguna dari `1234`. AWS IoT Greengrass tidak menggunakan pin SO (supervisor), sehingga Anda dapat menggunakan nilai apapun.  
Jika Anda menerima kesalahan `CKR_SLOT_ID_INVALID: Slot 0 does not exist`, coba perintah berikut:  

   ```
   softhsm2-util --init-token --free --label greengrass --so-pin 12345 --pin 1234
   ```

1. Konversikan kunci privat ke format yang dapat digunakan oleh alat impor SoftHSM. Untuk tutorial ini, Anda mengubah kunci privat yang Anda peroleh dari opsi **pembuatan Grup Default** di dalam [Modul 2](module2.md) dari tutorial Memulai.

   ```
   openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in hash.private.key -out hash.private.pem
   ```

1. Impor kunci privat ke SoftHSM. Jalankan hanya salah satu perintah berikut, tergantung pada versi softhsm2-util Anda.  
Sintaks **Raspbian softhsm2-util v2.2.0**  

   ```
   softhsm2-util --import hash.private.pem --token greengrass --label iotkey --id 0000 --pin 12340
   ```  
Sintaks **Ubuntu softhsm2-util v2.0.0**  

   ```
   softhsm2-util --import hash.private.pem --slot 0 --label iotkey --id 0000 --pin 1234
   ```

   Perintah ini mengidentifikasi slot sebagai `0` dan mendefinisikan label kunci sebagai `iotkey`. Anda menggunakan nilai-nilai ini di bagian selanjutnya.

Setelah kunci privat diimpor, Anda dapat secara opsional menghapusnya dari direktori `/greengrass/certs` ini. Pastikan untuk menyimpan CA akar dan sertifikat perangkat dalam direktori.

## Konfigurasikan core Greengrass untuk menggunakan SoftHSM
<a name="softhsm-config-core"></a>

Dalam langkah ini, Anda memodifikasi file konfigurasi core Greengrass untuk menggunakan SoftHSM.

1. Temukan path ke pustaka penyedia SoftHSM (`libsofthsm2.so`) pada sistem Anda:

   1. Dapatkan daftar paket yang diinstal untuk perpustakaan.

      ```
      sudo dpkg -L libsofthsm2
      ```

      File `libsofthsm2.so` terletak di `softhsm` direktori.

   1. Salin jalur lengkap ke file (sebagai contoh, `/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so`). Anda menggunakan nilai ini kemudian.

1. Hentikan daemon Greengrass.

   ```
   cd /greengrass/ggc/core/
   sudo ./greengrassd stop
   ```

1. Buka file konfigurasi Greengrass. Ini adalah file [`config.json`](gg-core.md#config-json) dalam direktori `/greengrass/config` ini.
**catatan**  
Contoh dalam prosedur ini ditulis dengan asumsi bahwa file `config.json` menggunakan format yang dihasilkan dari opsi **Pembuatan Grup default** di dalam [Modul 2](module2.md) dari tutorial Memulai.

1. Di dalam `crypto.principals` objek, masukkan objek sertifikat server MQTT berikut. Tambahkan koma di mana diperlukan untuk membuat file JSON valid.

   ```
     "MQTTServerCertificate": {
       "privateKeyPath": "path-to-private-key"
     }
   ```

1. Di `crypto` objek, masukkan `PKCS11` objek berikut. Tambahkan koma di mana diperlukan untuk membuat file JSON valid.

   ```
     "PKCS11": {
       "P11Provider": "/path-to-pkcs11-provider-so",
       "slotLabel": "crypto-token-name",
       "slotUserPin": "crypto-token-user-pin"
     }
   ```

   File Anda akan terlihat serupa dengan berikut ini:

   ```
   {
     "coreThing" : {
       "caPath" : "root.ca.pem",
       "certPath" : "hash.cert.pem",
       "keyPath" : "hash.private.key",
       "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name",
       "iotHost" : "host-prefix.iot.region.amazonaws.com",
       "ggHost" : "greengrass.iot.region.amazonaws.com",
       "keepAlive" : 600
     },
     "runtime" : {
       "cgroup" : {
         "useSystemd" : "yes"
       }
     },
     "managedRespawn" : false,
     "crypto": {
       "PKCS11": {
         "P11Provider": "/path-to-pkcs11-provider-so",
         "slotLabel": "crypto-token-name",
         "slotUserPin": "crypto-token-user-pin"
       },
       "principals" : {
         "MQTTServerCertificate": {
           "privateKeyPath": "path-to-private-key"
         },
         "IoTCertificate" : {
           "privateKeyPath" : "file:///greengrass/certs/hash.private.key",
           "certificatePath" : "file:///greengrass/certs/hash.cert.pem"
         },
         "SecretsManager" : {
           "privateKeyPath" : "file:///greengrass/certs/hash.private.key"
         }
       },    
       "caPath" : "file:///greengrass/certs/root.ca.pem"
     }
   }
   ```
**catatan**  
Untuk menggunakan pembaruan over-the-air (OTA) dengan keamanan perangkat keras, `PKCS11` objek juga harus berisi `OpenSSLEngine` properti. Untuk informasi selengkapnya, lihat [Konfigurasikan dukungan untuk over-the-air pembaruan](hardware-security.md#hardware-security-ota-updates).

1. Edit `crypto` objek:

   1. Konfigurasikan `PKCS11` objek.
      + Untuk `P11Provider`, masukkan path lengkap ke `libsofthsm2.so`.
      + Untuk `slotLabel`, masukkan `greengrass`.
      + Untuk `slotUserPin`, masukkan `1234`.

   1. Konfigurasikan path kunci privat di dalam `principals` objek. Jangan edit `certificatePath` properti.
      + Untuk `privateKeyPath` properti, masukkan path RFC 7512 PKCS \$111 berikut (yang menentukan label kunci). Lakukan ini untuk `IoTCertificate`, `SecretsManager`, dan `MQTTServerCertificate` pelaku utama.

        ```
        pkcs11:object=iotkey;type=private
        ```

   1. Periksa `crypto` objek. Itu akan terlihat serupa dengan yang berikut ini:

      ```
        "crypto": {
          "PKCS11": {
            "P11Provider": "/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so",
            "slotLabel": "greengrass",
            "slotUserPin": "1234"
          },
          "principals": {
            "MQTTServerCertificate": {
              "privateKeyPath": "pkcs11:object=iotkey;type=private"
            },
            "SecretsManager": {
              "privateKeyPath": "pkcs11:object=iotkey;type=private"
            },
            "IoTCertificate": {
              "certificatePath": "file://certs/core.crt",
              "privateKeyPath": "pkcs11:object=iotkey;type=private"
            }
          },
          "caPath": "file://certs/root.ca.pem"
        }
      ```

1. Hapus nilai `caPath`, `certPath`, dan `keyPath` dari `coreThing` objek. Itu akan terlihat serupa dengan yang berikut ini:

   ```
   "coreThing" : {
     "thingArn" : "arn:partition:iot:region:account-id:thing/core-thing-name",
     "iotHost" : "host-prefix-ats.iot.region.amazonaws.com",
     "ggHost" : "greengrass-ats.iot.region.amazonaws.com",
     "keepAlive" : 600
   }
   ```

**catatan**  
Untuk tutorial ini, Anda menentukan kunci privat yang sama untuk semua pelaku utama. Untuk informasi lebih lanjut tentang memilih kunci privat untuk server MQTT lokal, lihat [Performa](hardware-security.md#hsm-performance). Untuk informasi lebih lanjut tentang secrets manager lokal, lihat [Menyebarkan rahasia ke inti AWS IoT Greengrass](secrets.md).

## Uji konfigurasi
<a name="softhsm-test"></a>
+ Mulai daemon Greengrass.

  ```
  cd /greengrass/ggc/core/
  sudo ./greengrassd start
  ```

  Jika daemon dimulai dengan sukses, maka core Anda telah dikonfigurasi dengan benar.

  Anda sekarang siap untuk mempelajari spesifikasi PKCS \$111 dan melakukan pengujian awal dengan API PKCS\$111 yang disediakan oleh implementasi SoftHSM.
**penting**  
Sekali lagi, sangat penting untuk menyadari bahwa modul ini ditujukan untuk pembelajaran dan pengujian saja. Ini tidak benar-benar meningkatkan postur keamanan lingkungan Greengrass Anda.  
Sebaliknya, tujuan dari modul ini adalah untuk mengizinkan Anda untuk mulai pembelajaran dan pengujian dalam persiapan untuk menggunakan HSM berbasis hardware nyata di masa depan. Pada saat itu, Anda harus secara terpisah dan sepenuhnya menguji perangkat lunak Anda terhadap HSM berbasis perangkat keras sebelum penggunaan produksi, karena mungkin ada perbedaan antara implementasi PKCS \$111 yang disediakan di SoftHSM dan implementasi berbasis perangkat keras.

## Lihat juga
<a name="console-mod7-see-also"></a>
+ *Panduan Penggunaan Antarmuka Token Kriptografi PKCS \$111 Versi 2.40*. Diedit oleh John Leiseboer dan Robert Griffin. 16 November 2014. Catatan Komite OASIS 02. [http://docs.oasis-open. org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/cn02/pkcs11-ug-v2.40-cn02.html). Versi terbaru: [http://docs.oasis-open. org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html](http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html).
+ [RFC 7512](https://tools.ietf.org/html/rfc7512)