AWS IoT Greengrass Version 1 memasuki fase umur panjang pada 30 Juni 2023. Untuk informasi selengkapnya, lihat kebijakan AWS IoT Greengrass V1 pemeliharaan. Setelah tanggal ini, tidak AWS IoT Greengrass V1 akan merilis pembaruan yang menyediakan fitur, penyempurnaan, perbaikan bug, atau patch keamanan. Perangkat yang berjalan AWS IoT Greengrass V1 tidak akan terganggu dan akan terus beroperasi dan terhubung ke cloud. Kami sangat menyarankan Anda bermigrasi ke AWS IoT Greengrass Version 2, yang menambahkan fitur baru yang signifikan dan dukungan untuk platform tambahan.
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
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 #11 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#11 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 #11 untuk menyimpan kunci privat Anda. Untuk informasi lebih lanjut tentang implementasi perangkat lunak saja, lihat SoftHSM
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 #11 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 #11 yang disediakan di SoftHSM dan implementasi berbasis perangkat keras.
Jika Anda memerlukan bantuan terkait orientasi modul keamanan perangkat keras yang didukung, kontak AWS perwakilan Support Korporasi.
Sebelum Anda memulai, jalankan skrip Penyiapan Perangkat Greengrass ini, atau pastikan bahwa Anda telah menyelesaikan Modul 1 dan Modul 2 dari tutorial Memulai. Dalam modul ini, kami berasumsi bahwa core Anda sudah disediakan dan berkomunikasi dengan AWS. Modul ini akan memakan waktu sekitar 30 menit untuk menyelesaikannya.
Instal perangkat lunak SoftHSM
Dalam langkah ini, Anda memasang SoftHSM dan alat pkcs11, yang digunakan untuk mengelola keberlangsungan SoftHSM Anda.
-
Di terminal pada AWS IoT Greengrass perangkat core Anda, jalankan perintah berikut:
sudo apt-get install softhsm2 libsofthsm2-dev pkcs11-dump
Untuk informasi lebih lanjut tentang paket ini, lihat Instal softhsm2
, Pasang libsofthsm2-dev , dan Instal pkcs11-dump . catatan
Jika Anda mengalami masalah ketika menggunakan perintah ini pada sistem Anda, lihat versi SoftHSM 2
di GitHub. Situs ini menyediakan informasi penginstalan lebih lanjut, termasuk cara membangun dari sumber.
Konfigurasi SoftHSM
Dalam langkah ini, Anda mengonfigurasi SoftHSM
-
Beralih ke pengguna akar.
sudo su
-
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
-
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
-
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
-
Konfigurasikan direktori token.
echo "directories.tokendir = /greengrass/softhsm2/tokens" > /etc/softhsm/softhsm2.conf
-
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
Dalam langkah ini, Anda menginisialisasi token SoftHSM, mengkonversi format kunci privat, lalu mengimpor kunci privat.
-
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 dari1234
. 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
-
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 dari tutorial Memulai.
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in
hash
.private.key -outhash
.private.pem -
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 sebagaiiotkey
. 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
Dalam langkah ini, Anda memodifikasi file konfigurasi core Greengrass untuk menggunakan SoftHSM.
Temukan path ke pustaka penyedia SoftHSM (
libsofthsm2.so
) pada sistem Anda:Dapatkan daftar paket yang diinstal untuk perpustakaan.
sudo dpkg -L libsofthsm2
File
libsofthsm2.so
terletak disofthsm
direktori.Salin jalur lengkap ke file (sebagai contoh,
/usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so
). Anda menggunakan nilai ini kemudian.
Hentikan daemon Greengrass.
cd /greengrass/ggc/core/ sudo ./greengrassd stop
Buka file konfigurasi Greengrass. Ini adalah file 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 dari tutorial Memulai.-
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" }
-
Di
crypto
objek, masukkanPKCS11
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 over-the-air (OTA) update dengan keamanan perangkat keras,
PKCS11
objek juga harus berisiOpenSSLEngine
properti Untuk informasi selengkapnya, lihat Konfigurasikan dukungan untuk over-the-air pembaruan. -
Edit
crypto
objek:Konfigurasikan
PKCS11
objek.Untuk
P11Provider
, masukkan path lengkap kelibsofthsm2.so
.Untuk
slotLabel
, masukkangreengrass
.Untuk
slotUserPin
, masukkan1234
.
Konfigurasikan path kunci privat di dalam
principals
objek. Jangan editcertificatePath
properti.Untuk
privateKeyPath
properti, masukkan path RFC 7512 PKCS #11 berikut (yang menentukan label kunci). Lakukan ini untukIoTCertificate
,SecretsManager
, danMQTTServerCertificate
pelaku utama.pkcs11:object=iotkey;type=private
-
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" }
-
Hapus nilai
caPath
,certPath
, dankeyPath
daricoreThing
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. Untuk informasi lebih lanjut tentang secrets manager lokal, lihat Men-deploy rahasia ke AWS IoT Greengrass core.
Uji konfigurasi
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 #11 dan melakukan pengujian awal dengan API PKCS#11 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 #11 yang disediakan di SoftHSM dan implementasi berbasis perangkat keras.
Lihat juga
-
Panduan Penggunaan Antarmuka Token Kriptografi PKCS #11 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
. Versi terbaru: http://docs.oasis-open.org/pkcs11/pkcs11-ug/v2.40/pkcs11-ug-v2.40.html .