Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Penyediaan kunci mode pengembang
penting
Halaman ini mengacu pada repositori Amazon-freertos yang tidak digunakan lagi. Kami menyarankan Anda mulai di sini ketika Anda membuat proyek baru. Jika Anda sudah memiliki proyek FreeRTOS yang sudah ada berdasarkan repositori Amazon-freertos yang sekarang tidak digunakan lagi, lihatPanduan Migrasi Repositori RTOS Github Bebas Amazon.
Pengantar
Bagian ini membahas dua opsi untuk mendapatkan sertifikat klien X.509 tepercaya ke perangkat IoT untuk pengujian lab. Bergantung pada kemampuan perangkat, berbagai operasi terkait penyediaan mungkin atau mungkin tidak didukung, termasuk pembuatan kunci ECDSA onboard, impor kunci pribadi, dan pendaftaran sertifikat X.509. Selain itu, kasus penggunaan yang berbeda membutuhkan tingkat perlindungan kunci yang berbeda, mulai dari penyimpanan flash onboard hingga penggunaan perangkat keras kripto khusus. Bagian ini menyediakan logika untuk bekerja dalam kemampuan kriptografi perangkat Anda.
Opsi #1: kunci pribadi impor dariAWS IoT
Untuk tujuan pengujian lab, jika perangkat Anda mengizinkan impor kunci pribadi, ikuti petunjuk di dalamnyaMengkonfigurasi demo Gratis RTOS.
Opsi #2: pembuatan kunci pribadi onboard
Jika perangkat Anda memiliki elemen aman, atau jika Anda lebih suka membuat key pair perangkat dan sertifikat Anda sendiri, ikuti petunjuk di sini.
- Konfigurasi awal
-
Pertama, lakukan langkah-langkah diMengkonfigurasi demo Gratis RTOS, tetapi lewati langkah terakhir (yaitu, jangan lakukan Untuk memformatAWS IoT kredensil Anda). Hasil bersih harus bahwa
demos/include/aws_clientcredential.h
file telah diperbarui dengan pengaturan Anda, tetapidemos/include/aws_clientcredential_keys.h
file belum. - Konfigurasi Proyek Demo
-
Buka demo CoremQTT Mutual Authentication seperti yang dijelaskan dalam panduan untuk papan Anda diPanduan memulai khusus papan. Dalam proyek, buka file
aws_dev_mode_key_provisioning.c
dan ubah definisikeyprovisioningFORCE_GENERATE_NEW_KEY_PAIR
, yang diatur ke nol secara default, menjadi satu:#define keyprovisioningFORCE_GENERATE_NEW_KEY_PAIR 1
Kemudian bangun dan jalankan proyek demo dan lanjutkan ke langkah berikutnya.
- Ekstraksi Kunci publik
-
Karena perangkat belum disediakan dengan kunci pribadi dan sertifikat klien, demo akan gagal untuk mengautentikasiAWS IoT. Namun, demo CoremQTT Mutual Authentication dimulai dengan menjalankan penyediaan kunci mode pengembang, menghasilkan pembuatan kunci pribadi jika belum ada. Anda akan melihat sesuatu seperti berikut di dekat awal output konsol serial.
7 910 [IP-task] Device public key, 91 bytes: 3059 3013 0607 2a86 48ce 3d02 0106 082a 8648 ce3d 0301 0703 4200 04cd 6569 ceb8 1bb9 1e72 339f e8cf 60ef 0f9f b473 33ac 6f19 1813 6999 3fa0 c293 5fae 08f1 1ad0 41b7 345c e746 1046 228e 5a5f d787 d571 dcb2 4e8d 75b3 2586 e2cc 0c
Salin enam baris byte kunci ke dalam file bernama
DevicePublicKeyAsciiHex.txt
. Kemudian gunakan alat baris perintah “xxd” untuk mengurai byte hex menjadi biner:xxd -r -ps DevicePublicKeyAsciiHex.txt DevicePublicKeyDer.bin
Gunakan “openssl” untuk memformat kunci publik perangkat biner yang dikodekan (DER) sebagai PEM:
openssl ec -inform der -in DevicePublicKeyDer.bin -pubin -pubout -outform pem -out DevicePublicKey.pem
Jangan lupa untuk menonaktifkan pengaturan pembuatan kunci sementara yang Anda aktifkan di atas. Jika tidak, perangkat akan membuat key pair lain, dan Anda harus mengulangi langkah-langkah sebelumnya:
#define keyprovisioningFORCE_GENERATE_NEW_KEY_PAIR 0
- Pengaturan Infrastruktur Kunci publik
-
Ikuti petunjuk dalam Mendaftarkan Sertifikat CA Anda untuk membuat hierarki sertifikat untuk sertifikat lab perangkat Anda. Berhenti sebelum menjalankan urutan yang dijelaskan di bagian Membuat Sertifikat Perangkat Menggunakan Sertifikat CA Anda.
Dalam hal ini, perangkat tidak akan menandatangani permintaan sertifikat (yaitu, Permintaan Layanan Sertifikat atau CSR) karena logika pengkodean X.509 yang diperlukan untuk membuat dan menandatangani CSR telah dikecualikan dari proyek demo FreeRTOS untuk mengurangi ukuran ROM. Sebagai gantinya, untuk tujuan pengujian lab, buat kunci privat pada workstation Anda dan gunakan untuk menandatangani CSR.
openssl genrsa -out tempCsrSigner.key 2048 openssl req -new -key tempCsrSigner.key -out deviceCert.csr
Setelah Otoritas Sertifikat Anda dibuat dan didaftarkanAWS IoT, gunakan perintah berikut untuk menerbitkan sertifikat klien berdasarkan CSR perangkat yang ditandatangani pada langkah sebelumnya:
openssl x509 -req -in deviceCert.csr -CA rootCA.pem -CAkey rootCA.key -CAcreateserial -out deviceCert.pem -days 500 -sha256 -force_pubkey DevicePublicKey.pem
Meskipun CSR ditandatangani dengan kunci pribadi sementara, sertifikat yang dikeluarkan hanya dapat digunakan dengan kunci pribadi perangkat yang sebenarnya. Mekanisme yang sama dapat digunakan dalam produksi jika Anda menyimpan kunci penandatangan CSR di perangkat keras terpisah, dan mengonfigurasi otoritas sertifikat sehingga hanya mengeluarkan sertifikat untuk permintaan yang telah ditandatangani oleh kunci tertentu tersebut. Kunci itu juga harus tetap berada di bawah kendali administrator yang ditunjuk.
- Sertifikat Impor
-
Dengan sertifikat yang dikeluarkan, langkah selanjutnya adalah mengimpornya ke perangkat Anda. Anda juga perlu mengimpor sertifikat Otoritas Sertifikat (CA) Anda, karena diperlukan agar otentikasi pertama kaliAWS IoT berhasil saat menggunakan JITP. Dalam
aws_clientcredential_keys.h
file dalam proyek Anda, aturkeyCLIENT_CERTIFICATE_PEM
makro menjadi konten DeviceCert.pem dan aturkeyJITR_DEVICE_CERTIFICATE_AUTHORITY_PEM
makro menjadi isinyarootCA.pem
. - Otorisasi Perangkat
-
Impor
deviceCert.pem
keAWS IoT registri seperti yang dijelaskan di Gunakan Sertifikat Anda Sendiri. Anda harus membuatAWS IoT hal baru, melampirkan sertifikat PENDING dan kebijakan untuk hal Anda, kemudian menandai sertifikat sebagai AKTIF. Semua langkah ini dapat dilakukan secara manual diAWS IoT konsol.Setelah sertifikat klien baru AKTIF dan terkait dengan sesuatu dan kebijakan, jalankan demo CoremQTT Mutual Authentication lagi. Kali ini, koneksi ke brokerAWS IoT MQTT akan berhasil.