Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Tutorial: Aman AWS IoT Greengrass dengan Modul Platform Tepercaya (TPM)
catatan
Mekanisme dalam tutorial ini hanya didukung denganInstal perangkat lunak AWS IoT Greengrass Core dengan penyediaan sumber daya manual.
Tutorial ini berisi petunjuk tentang cara menggunakan TPM2 chip sebagai Hardware Security Module (HSM) untuk membuat kunci pribadi dan CSR. Yang digunakan untukBuat sertifikat benda.
Tutorial ini menunjukkan cara meningkatkan keamanan perangkat dengan mengonfigurasi perangkat lunak AWS IoT Greengrass Core dengan Trusted Platform Module (TPM) menggunakan antarmuka PKCS #11. Integrasi TPM ini memastikan bahwa kunci pribadi dan sertifikat yang digunakan untuk identitas perangkat dan penyambungan AWS IoT Core disimpan dengan aman dalam perangkat keras anti-kerusakan, mencegah ekstraksi untuk peniruan identitas atau aktivitas berbahaya lainnya.
Saat Anda menyelesaikan integrasi ini, perangkat inti Greengrass Anda akan menggunakan kunci pribadi yang dilindungi TPM untuk identitas dan komunikasinya dengan layanan. AWS IoT
Untuk informasi selengkapnya tentang keamanan di perangkat Greengrass, lihat. Keamanan di AWS IoT Greengrass
Prasyarat
Untuk menyelesaikan tutorial ini, Anda memerlukan hal berikut:
-
Perangkat yang kompatibel dengan Linux dengan perangkat keras TPM 2.0 atau firmware TPM 2.0.
-
Petunjuk dalam tutorial ini didefinisikan untuk Ubuntu 24.04 LTS.
-
Distribusi Linux apa pun yang dapat mendukung Linux TPM2 Software Stack
dapat mendukung mekanisme ini.
-
-
Mesin pengembang dengan AWS CLI diinstal dan dikonfigurasi dengan izin untuk:
-
Buat dan kelola AWS IoT sumber daya
-
Membuat dan mengelola peran dan kebijakan IAM
-
-
Java Runtime Environment (JRE) versi 8 atau yang lebih baru diinstal pada perangkat Anda.
-
Paket perangkat lunak berikut yang diinstal pada perangkat Anda:
-
curl
-
jg
-
-
Hak istimewa root atau sudo pada perangkat.
Langkah 1: Instal TPM2 alat dan dependensi
Pada langkah ini, Anda menginstal alat TPM2 perangkat lunak dan perpustakaan yang diperlukan.
-
Perbarui manajer paket Anda dan instal TPM2 alat dan dependensi dengan menjalankan perintah berikut.
sudo apt-get update && sudo apt-get install tpm2-tools \ tpm2-abrmd \ tpm2-tss-engine-tools \ gnutls-bin \ libtpm2-pkcs11-1 \ libtpm2-pkcs11-tools \ libtpm2-pkcs11-1-dev \ python3-tpm2-pkcs11-tools \ libengine-pkcs11-openssl \ libtss2-tcti-tabrmd0
-
Instal paket penyedia TPM2 OpenSSL di Ubuntu 24.04 yang menggunakan mesin OpenSSL 3.
sudo apt-get install tpm2-openssl
Langkah 2: Inisialisasi penyimpanan PKCS #11 dan buat slot
-
Buat direktori untuk menyimpan data.
sudo mkdir -p /etc/tpm2_pkcs11
-
Atur lokasi penyimpanan sebagai variabel lingkungan. Untuk informasi selengkapnya tentang hierarki toko, lihat Inisialisasi
. export TPM2_PKCS11_STORE=/etc/tpm2_store
-
Inisialisasi TPM2 token dengan objek utama.
sudo tpm2_ptool init
Opsi yang tersedia adalah sebagai berikut:
hierarchy-auth HIERARCHY_AUTH
-
Kata sandi otorisasi untuk menambahkan objek utama ke hierarki.
primary-auth PRIMARY_AUTH
-
Nilai otorisasi untuk objek kunci primer yang ada.
Default adalah nilai autentikasi kosong.
primary-handle [PRIMARY_HANDLE]
-
Gunakan objek kunci utama yang ada.
Default:
0x81000001
transient-parents
-
Gunakan objek primer transien dari template yang diberikan.
Nilai:
tpm2-tools-default
,tpm2-tools-ecc-default
,tss2-engine-key
path PATH
-
Lokasi direktori toko. Jika ditentukan, direktori harus ada. Jika tidak ditentukan, ia melakukan pencarian dengan melihat variabel lingkungan
TPM2_PKCS11_STORE
. Jika variabel lingkungan itu tidak disetel, itu akan terlihat/etc/tpm2_pkcs11
. Jika direktori itu tidak ditemukan atau tidak dapat dibuat, itu default ke direktori kerja saat ini.
Langkah 3: Buat token dan kunci
-
Buat token PKCS #11.
sudo tpm2_ptool addtoken —pid=1 —userpin=
USERPIN
—sopin=SOPIN
—label=greengrassOpsi yang tersedia adalah sebagai berikut:
--pid PID
-
Id objek utama untuk dikaitkan dengan token ini.
--sopin SOPIN
-
Pin Administrator. Pin ini digunakan untuk pemulihan objek.
--userpin USERPIN
-
Pin pengguna. Pin ini digunakan untuk otentikasi untuk penggunaan objek.
--label LABEL
-
Label unik untuk mengidentifikasi profil yang digunakan, harus unik.
--hierarchy-auth HIERARCHY_AUTH
-
Buat objek kunci ECC.
sudo tpm2_ptool addkey —algorithm=ecc256 —label=greengrass —userpin=****** —key-label=greenkey
--label LABEL
-
Label token untuk mengimpor kunci juga.
--key-label KEY_LABEL
-
Label kunci yang diimpor. Default ke nilai integer.
--id ID
-
Id kunci. Default ke 8 byte acak dari hex.
--attr-always-authenticate
-
Menetapkan atribut CKA_ALWAYS_AUTHENTICATE ke CK_TRUE.
--hierarchy-auth HIERARCHY_AUTH
-
Hierarchyauth, diperlukan untuk pobjects sementara.
--sopin SOPIN
-
Pin Administrator.
--userpin USERPIN
-
Pin Pengguna.
--algorithm
-
{rsa1024, rsa2048, rsa3072, rsa4096, aes128, aes256, ecc224, ecc256, ecc384, ecc521, hmac: sha1, hmac: sha256, hmac: sha384, hmac: sha512}
Jenis kuncinya.
-
Ekspor objek TPM2 -TSS dari token untuk menangkap data otentikasi.
yaml_ecc0=$(sudo tpm2_ptool export —label="greengrass" —key-label="greenkey" —userpin="******")
Contoh output:
> echo $yaml_ecc0 object-auth: 706c1cad8a5238871b30149705255926 primary-object: auth: '' hierarchy: owner is_transient: false
catatan
Anda juga akan menemukan file bernama `greenkey.pem` yang merupakan Kunci TSS2 Pribadi di direktori tempat Anda menjalankan perintah ini. Gunakan ini untuk menghasilkan CSR dengan penyedia openssl tpm2. File TSS2 PRIVATE KEY dilindungi oleh TPM dan tidak dapat digunakan pada mesin lain. Untuk informasi selengkapnya tentang TSS2 kunci dengan OpenSSL, lihat Menyimpan Kunci Pribadi atau Publik
. -
Tangkap data otentikasi untuk kunci pribadi TSS.
auth_ecc0=$(echo "$yaml_ecc0" | grep "object-auth" | cut -d' ' -f2-)
Langkah 4: Hasilkan Permintaan Penandatanganan Sertifikat (CSR)
Pada langkah ini, Anda akan menggunakan kunci pribadi TPM2 yang dilindungi untuk menghasilkan CSR.
-
Hasilkan CSR menggunakan TPM2 penyedia.
sudo openssl req -new -provider tpm2 -provider base -key greenkey.pem -passin "pass:$auth_ecc0" -out "$H"$HOSTNAME".csr
Saat diminta, berikan informasi yang diperlukan untuk CSR Anda, termasuk:
-
Nama Negara (kode 2 huruf)
-
Nama Negara Bagian atau Provinsi
-
Nama Lokal
-
Nama Organisasi
-
Nama Unit Organisasi
-
Nama Umum
-
Alamat Email
Atau, Anda dapat menyediakan file konfigurasi OpenSSL untuk pembuatan tanpa pengawasan. Untuk informasi selengkapnya, lihat Dokumentasi OpenSSL
. -
-
Jika Anda tidak membuat CSR di mesin yang sama, salin CSR yang dihasilkan ke mesin yang memiliki AWS kredensialnya dikonfigurasi.
Langkah 5: Buat sertifikat benda
Buat sertifikat AWS IoT sesuatu. Untuk informasi selengkapnya tentang cara membuat sertifikat sesuatu, lihatBuat sertifikat benda.
Langkah 6: Impor sertifikat barang ke TPM
-
Salin sertifikat benda ke perangkat.
-
Tambahkan sertifikat benda ke token Greengrass.
sudo tpm2_ptool addcert --label=greengrass --key-label=greenkey device.pem.crt
Opsi yang tersedia adalah sebagai berikut:
--help
-
Tampilkan pesan bantuan ini dan keluar.
--label LABEL
-
Label profil untuk dihapus.
--key-label KEY_LABEL
-
Label kunci pribadi terkait.
--key-id KEY_ID
-
Id kunci pribadi terkait di hex.
cert
-
Sertifikat PEM x509 untuk ditambahkan.
Langkah 7: Tangkap URL objek PKCS #11
Kami akan menggunakan yang p11tool
disediakan dari gnutls-bin
paket untuk mendapatkan URL dan objek token PKCS #11. URLs
-
Tangkap URL token untuk token Greengrass.
TOKEN=sudo p11tool --list-token-urls | grep "token=greengrass"
-
Dapatkan objek URLs untuk token Greengrass. Gunakan pin yang sama dengan yang Anda gunakan pada Langkah 3.
sudo p11tool --login --list-all "${TOKEN}"
Contoh output:
Token 'greengrass' with URL 'pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass' requires user PIN Enter PIN: WARNING: Needed CKA_VALUE but didn't find encrypted blob Object 0: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=private Type: Private key (EC/ECDSA-SECP256R1) Label: greenkey Flags: CKA_PRIVATE; CKA_NEVER_EXTRACTABLE; CKA_SENSITIVE; ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 1: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=public Type: Public key (EC/ECDSA-SECP256R1) Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31 Object 2: URL: pkcs11:model=SLB9672%00%00%00%00%00%00%00%00%00;manufacturer=Infineon;serial=0000000000000000;token=greengrass;id=%39%32%37%65%61%64%61%39%31%32%35%31%61%35%37%31;object=greenkey;type=cert Type: X.509 Certificate (EC/ECDSA-SECP256R1) Expires: Fri Dec 31 18:59:59 2049 Label: greenkey ID: 39:32:37:65:61:64:61:39:31:32:35:31:61:35:37:31
-
Tangkap URL objek untuk kunci pribadi dan sertifikat.
Langkah 8: Konfigurasikan dan instal Greengrass dengan dukungan TPM2
-
Konfigurasikan sertifikat benda. Untuk informasi selengkapnya lihat Mengonfigurasi sertifikat benda.
-
Lengkapi instruksi untuk Menginstal perangkat lunak AWS IoT Greengrass Core dengan kunci pribadi dan sertifikat di HSM diInstal perangkat lunak AWS IoT Greengrass Core. Kemudian, gunakan langkah-langkah berikut untuk mengonfigurasi instalasi Anda untuk memanfaatkan TPM2 melalui antarmuka PKCS #11.
-
Verifikasi bahwa komponen penyedia PKCS #11 telah diunduh dan disimpan di lokasi penginstal Greengrass Anda.
-
Gunakan editor teks untuk membuat file konfigurasi bernama
config.yaml
yang akan disediakan ke penginstal. Misalnya, pada sistem berbasis Linux, Anda dapat menjalankan perintah berikut untuk menggunakan GNUnano
untuk membuat file.nano GreengrassInstaller/config.yaml
-
Salin konten YAML berikut ke dalam file. File konfigurasi sebagian ini menentukan parameter sistem, parameter inti Greengrass, dan parameter penyedia PKCS #11.
--- system: certificateFilePath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=cert" privateKeyPath: "pkcs11:model=SW%20%20%20TPM%00%00%00%00%00%00%00%00;manufacturer=IBM;serial=0000000000000000;token=greengrass;id=%34%35;object=greenkey;type=private" rootCaPath: "/greengrass/v2/AmazonRootCA1.pem" rootpath: "/greengrass/v2" thingName: "myThing" services: aws.greengrass.Nucleus: componentType: "NUCLEUS" version: "2.14.0" configuration: awsRegion: "us-east-1" iotRoleAlias: "GreengrassCoreTokenExchangeRoleAlias" iotDataEndpoint: "device-data-prefix-ats.iot.us-west-2.amazonaws.com" iotCredEndpoint: "device-credentials-prefix.credentials.iot.us-west-2.amazonaws.com" aws.greengrass.crypto.Pkcs11Provider: configuration: name: "tpm2_pkcs11" library: "/usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so" slot: 1 userPin: "123456"
-
Edit file dengan parameter khusus untuk instalasi Anda.
-
Perbarui certificateFilePath dan privateKeyPath dengan Pembaruan certificateFilePath dan privateKeyPath dengan URL PKCS #11 yang ditangkap di Langkah 7.
-
Perbarui Anda iotDataEndpoint dan iotCredEndpoint berdasarkan AWS IoT titik akhir Anda.
-
Dalam
aws.greengrass.crypto.Pkcs11Provider
konfigurasi, perbarui pustaka berdasarkan platform Anda.catatan
Contoh yang ditampilkan adalah untuk X86_64. Jalur file akan serupa untuk ARM64 perangkat.
-
-
Selesaikan langkah-langkah instalasi Greengrass di. Instal perangkat lunak AWS IoT Greengrass Core
Langkah 9: Verifikasi instalasi
Pada langkah ini, Anda akan memverifikasi bahwa Greengrass berjalan dengan baik dengan integrasi. TPM2
-
Periksa status layanan Greengrass.
sudo systemctl status greengrass.service
-
Lihat log Greengrass untuk memastikan tidak ada kesalahan.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifikasi bahwa perangkat Anda muncul sebagai terhubung di AWS IoT konsol
. -
Masuk ke konsol AWS IoT Greengrass
tersebut. -
Di bawah Kelola, perluas perangkat Greengrass, dan pilih Perangkat inti.
-
Konfirmasikan perangkat Anda terhubung. Status perangkat akan ditampilkan
HEALTHY
jika terhubung. Untuk informasi selengkapnya, lihat Periksa status perangkat inti Greengrass.
-
Pemecahan Masalah
Jika Anda mengalami masalah selama penyiapan atau pengoperasian perangkat Greengrass yang TPM2 diaktifkan, coba langkah pemecahan masalah berikut.
-
Periksa file log Greengrass utama.
sudo tail -f /greengrass/v2/logs/greengrass.log
-
Verifikasi konfigurasi penyedia PKCS #11.
sudo cat /greengrass/v2/config/effectiveConfig.yaml
-
Pastikan TPM2 layanan berjalan.
sudo systemctl status tpm2-abrmd.service
-
Verifikasi bahwa TPM2 kuncinya dapat diakses.
sudo pkcs11-tool —module /usr/lib/x86_64-linux-gnu/pkcs11/libtpm2_pkcs11.so -l -p 123456 —list-objects
-
Jika OS Anda diatur dengan enkripsi disk penuh dengan kunci root TPM2 penyimpanan seperti Clevis atau systemd-cryptenroll, pastikan Anda tidak menggunakan pegangan persisten yang sama yang digunakan oleh alat ini. Menggunakan pegangan persisten yang sama dapat memengaruhi mekanisme enkripsi disk Anda. Untuk memeriksa semua pegangan persisten yang dibuat dan digunakan, jalankan perintah berikut
sudo tpm2_getcap handles-persistent
Langkah selanjutnya
Sekarang setelah Anda berhasil mengintegrasikan perangkat inti Greengrass Anda, Anda dapat: TPM2
-
Terapkan komponen ke perangkat Greengrass aman Anda. Untuk informasi selengkapnya, lihat Menyebarkan AWS IoT Greengrass komponen ke perangkat
-
Siapkan perangkat Greengrass tambahan dengan integrasi. TPM2
Untuk informasi selengkapnya tentang keamanan di perangkat Greengrass, lihat. Keamanan di AWS IoT Greengrass