Buat dan provisikan perangkat IoT Edge dalam skala besar di Linux menggunakan sertifikat X.509

Berlaku untuk:Tanda centang IoT Edge 1.5 IoT Edge 1.5 Tanda centang IoT Edge 1.4 IoT Edge 1.4

Penting

IoT Edge 1.5 LTS dan IoT Edge 1.4 LTS adalah rilis yang didukung. IoT Edge 1.4 LTS adalah akhir masa pakai pada 12 November 2024. Jika Anda menggunakan rilis sebelumnya, lihat Memperbarui IoT Edge.

Artikel ini memberikan petunjuk menyeluruh untuk provisi otomatis satu atau beberapa perangkat Linux IoT Edge menggunakan sertifikat X.509. Anda dapat secara otomatis memprovisikan perangkat Azure IoT Edge dengan layanan provisi perangkat Azure IoT Hub (DPS). Jika Anda tidak terbiasa dengan proses provisi otomatis, tinjau gambaran umum provisi sebelum melanjutkan.

Tugasnya adalah sebagai berikut:

  1. Hasilkan sertifikat dan kunci.
  2. Buat pendaftaran individual untuk perangkat tunggal atau pendaftaran grup untuk serangkaian perangkat.
  3. Instal runtime IoT Edge dan daftarkan perangkat dengan IoT Hub.

Menggunakan sertifikat X.509 sebagai mekanisme pengesahan adalah cara terbaik untuk menskalakan produksi dan menyederhanakan penyediaan perangkat. Biasanya, sertifikat X.509 diatur dalam rantai sertifikat kepercayaan. Dimulai dengan sertifikat akar yang ditandatangani sendiri atau tepercaya, setiap sertifikat dalam rantai menandatangani sertifikat lebih rendah berikutnya. Pola ini membuat rantai kepercayaan yang didelegasikan dari sertifikat akar ke bawah melalui setiap sertifikat perantara ke sertifikat perangkat hilir akhir yang diinstal pada perangkat.

Tip

Jika perangkat Anda memiliki Modul Keamanan Perangkat Keras (HSM) seperti TPM 2.0, sebaiknya simpan kunci X.509 dengan aman di HSM. Pelajari selengkapnya tentang cara menerapkan provisi nol sentuhan dalam skala yang dijelaskan dalam cetak biru ini dengan sampel iotedge-tpm2cloud .

Prasyarat

Sumber daya cloud

  • Hub IoT yang aktif
  • Instans layanan provisi perangkat IoT Hub di Azure, ditautkan ke hub IoT Anda

Persyaratan perangkat

Perangkat fisik atau Linux virtual untuk menjadi perangkat IoT Edge.

Hasilkan sertifikat identitas perangkat

Sertifikat identitas perangkat adalah sertifikat perangkat hilir yang terhubung melalui rantai sertifikat kepercayaan ke sertifikat otoritas sertifikat (CA) X.509 teratas. Sertifikat identitas perangkat harus memiliki nama umum (CN) yang diatur ke ID perangkat yang Anda inginkan untuk memiliki perangkat di IoT hub Anda.

Sertifikat identitas perangkat hanya digunakan untuk menyediakan perangkat IoT Edge dan mengautentikasi perangkat dengan Azure IoT Hub. Sertifikat tersebut tidak menandatangani sertifikat, tidak seperti sertifikat CA yang disajikan perangkat IoT Edge ke modul atau perangkat hilir untuk verifikasi. Untuk informasi selengkapnya, lihat Detail penggunaan sertifikat Azure IoT Edge.

Setelah Anda membuat sertifikat identitas perangkat, Anda harus memiliki dua file: file .cer atau .pem yang berisi bagian publik sertifikat, dan file .cer atau .pem dengan kunci pribadi sertifikat. Jika Anda berencana untuk menggunakan pendaftaran grup di DPS, Anda juga memerlukan bagian publik dari sertifikat CA menengah atau root dalam rantai kepercayaan sertifikat yang sama.

Anda memerlukan file berikut untuk menyiapkan penyediaan otomatis dengan X.509:

  • Sertifikat identitas perangkat dan sertifikat kunci pribadinya. Sertifikat identitas perangkat diunggah ke DPS jika Anda membuat pendaftaran individual. Kunci pribadi diteruskan ke runtime IoT Edge.
  • Rantai sertifikat penuh, yang seharusnya memiliki setidaknya identitas perangkat dan sertifikat perantara di dalamnya. Rantai sertifikat penuh diteruskan ke runtime IoT Edge.
  • Sertifikat CA menengah atau root dari rantai sertifikat kepercayaan. Sertifikat ini diunggah ke DPS jika Anda membuat pendaftaran grup.

Gunakan sertifikat uji (opsional)

Jika Anda tidak memiliki otoritas sertifikat yang tersedia untuk membuat sertifikasi identitas baru dan ingin mencoba skenario ini, repositori git Azure IoT Edge berisi skrip yang dapat Anda gunakan untuk menghasilkan sertifikat pengujian. Sertifikat ini dirancang hanya untuk pengujian pengembangan, dan tidak boleh digunakan dalam produksi.

Untuk membuat sertifikat pengujian, ikuti langkah-langkah dalam Membuat sertifikat demo untuk menguji fitur perangkat IoT Edge. Selesaikan dua bagian yang diperlukan untuk mengatur skrip pembuatan sertifikat dan membuat sertifikat CA root. Kemudian, ikuti langkah-langkah untuk membuat sertifikat identitas perangkat. Setelah selesai, Anda harus memiliki rantai sertifikat dan pasangan kunci berikut:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

Anda memerlukan kedua sertifikat ini pada perangkat IoT Edge. Jika Anda akan menggunakan pendaftaran individual di DPS, maka Anda mengunggah file .cert.pem. Jika Anda akan menggunakan pendaftaran grup di DPS, maka Anda juga memerlukan sertifikat CA menengah atau root dalam rantai sertifikat kepercayaan yang sama untuk diunggah. Jika Anda menggunakan sertifikasi demo, gunakan <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem sertifikat untuk pendaftaran grup.

Buat pendaftaran DPS

Gunakan sertifikat dan kunci yang Anda buat untuk membuat pendaftaran grup di DPS untuk beberapa perangkat IoT Edge.

Jika Anda ingin menyediakan satu perangkat IoT Edge, buatlah pendaftaran individu. Jika Anda memerlukan beberapa perangkat yang disediakan, ikuti langkah-langkah untuk membuat pendaftaran grup DPS.

Ketika Anda membuat pendaftaran di DPS, Anda memiliki kesempatan untuk menyatakan Status Kembar Perangkat Awal. Di perangkat kembaran, Anda dapat mengatur tag ke perangkat grup dengan metrik apa pun yang Anda butuhkan dalam solusi Anda, seperti wilayah, lingkungan, lokasi, atau jenis perangkat. Tag ini digunakan untuk membuat penyebaran otomatis.

Untuk informasi selengkapnya tentang pendaftaran di Layanan Provisi Perangkat, lihat Cara mengelola pendaftaran perangkat.

Membuat pendaftaran individu DPS

Pendaftaran individu mengambil bagian publik dari sertifikat identitas perangkat dan mencocokkannya dengan sertifikat pada perangkat.

Tip

Langkah-langkah dalam artikel ini adalah untuk portal Microsoft Azure, tetapi Anda juga dapat membuat pendaftaran individu menggunakan Azure CLI. Untuk informasi selengkapnya, lihat az iot dps enrollment. Sebagai bagian dari perintah CLI, gunakan bendera berkemampuan edge untuk menentukan bahwa pendaftaran tersebut adalah untuk perangkat IoT Edge.

  1. Di portal Microsoft Azure, buka instans Layanan provisi perangkat IoT Hub.

  2. Di bawah Pengaturan, pilih Kelola pendaftaran.

  3. Pilih Tambahkan pendaftaran individual lalu selesaikan langkah-langkah berikut untuk mengonfigurasi pendaftaran:

    • Mekanisme: Pilih X.509.

    • Sertifikat Utama .pem .cer file: Unggah file publik dari sertifikat identitas perangkat. Jika Anda menggunakan skrip untuk membuat sertifikat pengujian, pilih file berikut:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • ID Azure IoT Hub: Berikan ID untuk perangkat Anda jika Anda mau. Anda dapat menggunakan ID perangkat untuk menargetkan perangkat individual untuk penyebaran modul. Jika Anda tidak memberikan ID perangkat, nama umum (CN) dalam sertifikat X.509 digunakan.

    • Perangkat IoT Edge: Pilih True untuk menyatakan bahwa pendaftaran adalah untuk perangkat IoT Edge.

    • Pilih hub IoT yang bisa ditetapkan oleh perangkat ini: Pilih hub IoT yang ditautkan yang ingin disambungkan perangkat Anda. Anda dapat memilih beberapa hub, dan perangkat akan ditetapkan ke salah satunya sesuai dengan kebijakan alokasi yang dipilih.

    • Status Kembar Perangkat Awal: Tambahkan nilai tag yang akan ditambahkan ke perangkat kembar jika Anda mau. Anda dapat menggunakan tag untuk menargetkan grup perangkat untuk penyebaran otomatis. Contohnya:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Pilih Simpan.

Di bawah Kelola Pendaftaran, Anda dapat melihat ID Pendaftaran untuk pendaftaran yang baru saja Anda buat. Harap catat ID Pendaftaran, karena dapat digunakan saat Anda memprovisikan perangkat Anda.

Sekarang setelah pendaftaran ada untuk perangkat ini, runtime IoT Edge dapat secara otomatis menyediakan perangkat selama instalasi.

Pasang IoT Edge

Di bagian ini, Anda menyiapkan mesin virtual Linux atau perangkat fisik Anda untuk IoT Edge. Kemudian, Anda menginstal IoT Edge.

Jalankan perintah berikut untuk menambahkan repositori paket lalu tambahkan kunci penandatanganan paket Microsoft ke daftar kunci tepercaya Anda.

Penting

Pada 30 Juni 2022 Raspberry Pi OS Stretch dihentikan dari daftar dukungan OS Tier 1. Untuk menghindari potensi kerentanan keamanan, perbarui OS host Anda ke Bullseye.

Penginstalan dapat dilakukan dengan beberapa perintah. Buka terminal dan jalankan perintah berikut:

  • 22.04:

    wget https://packages.microsoft.com/config/ubuntu/22.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Untuk informasi selengkapnya tentang versi sistem operasi, lihat Platform yang didukung Azure IoT Edge.

Catatan

Paket perangkat lunak Azure IoT Edge tunduk pada ketentuan lisensi yang terletak di setiap paket (direktori usr/share/doc/{package-name} atau LICENSE). Baca syarat lisensi sebelum menggunakan paket. Dengan memasang dan menggunakan paket ini, berarti Anda menyetujui syarat tersebut. Jika Anda tidak setuju dengan syarat lisensi, jangan gunakan paket tersebut.

Memasang komputer kontainer

Azure IoT Edge bergantung pada runtime kontainer yang kompatibel dengan OCI. Untuk skenario produksi, kami menyarankan Anda menggunakan mesin Moby. Mesin Moby adalah satu-satunya mesin kontainer yang secara resmi didukung dengan IoT Edge. Gambar kontainer Docker CE/EE kompatibel dengan runtime Moby.

Pasang mesin Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Secara default, mesin kontainer tidak mengatur batas ukuran log kontainer. Seiring waktu, hal ini dapat menyebabkan perangkat terisi dengan log dan kehabisan ruang disk. Namun, Anda dapat mengonfigurasi log untuk ditampilkan secara lokal, meskipun bersifat opsional. Untuk mempelajari selengkapnya tentang konfigurasi pengelogan, lihat Daftar Periksa Penyebaran Produksi.

Langkah-langkah berikut menunjukkan kepada Anda cara mengonfigurasi kontainer Anda untuk menggunakan local driver pengelogan sebagai mekanisme pengelogan.

  1. Membuat atau mengedit file konfigurasi daemon Docker yang ada

    sudo nano /etc/docker/daemon.json
    
  2. Atur driver pengelogan default ke local driver pengelogan seperti yang ditunjukkan dalam contoh.

       {
          "log-driver": "local"
       }
    
  3. Mulai ulang mesin kontainer agar perubahan diterapkan.

    sudo systemctl restart docker
    

Mengonfigurasi runtime IoT Edge

Layanan IoT Edge menyediakan dan mempertahankan standar keamanan di perangkat IoT Edge. Layanan dimulai pada setiap boot dan bootstrap perangkat dengan memulai sisa runtime IoT Edge.

Catatan

Dimulai dengan versi 1.2, layanan identitas IoT menangani provisi dan manajemen identitas untuk IoT Edge dan untuk komponen perangkat lain yang perlu berkomunikasi dengan IoT Hub.

Langkah-langkah di bagian ini mewakili proses umum untuk menginstal versi IoT Edge terbaru pada perangkat yang memiliki koneksi internet. Jika Anda perlu menginstal versi tertentu, seperti versi pra-rilis, atau perlu menginstal saat offline, ikuti langkah-langkah penginstalan versi Offline atau versi tertentu nanti di artikel ini.

Tip

Jika Anda sudah memiliki perangkat IoT Edge yang menjalankan versi yang lebih lama dan ingin meningkatkan ke rilis terbaru, gunakan langkah-langkah dalam Memperbarui daemon dan runtime keamanan IoT Edge. Versi yang lebih baru cukup berbeda dari versi IoT Edge sebelumnya yang diperlukan langkah-langkah khusus untuk ditingkatkan.

Instal versi terbaru IoT Edge dan paket layanan identitas IoT (jika Anda belum diperbarui):

  • 22.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge
    
  • 20.04:

    sudo apt-get update; \
       sudo apt-get install aziot-edge defender-iot-micro-agent-edge
    

Paket opsional defender-iot-micro-agent-edge mencakup pertahanan Microsoft untuk agen mikro keamanan IoT yang memberikan visibilitas titik akhir ke dalam manajemen postur keamanan, kerentanan, deteksi ancaman, manajemen armada, dan banyak lagi untuk membantu Anda mengamankan perangkat IoT Edge Anda. Disarankan untuk menginstal agen mikro dengan agen Edge untuk mengaktifkan pemantauan dan pengerasan keamanan perangkat Edge Anda. Untuk mempelajari selengkapnya tentang Pertahanan Microsoft untuk IoT, lihat Apa itu Pertahanan Microsoft untuk IoT untuk penyusun perangkat.

Menentukan perangkat dengan identitas cloud-nya

Setelah runtime diinstal pada perangkat Anda, konfigurasikan perangkat dengan informasi yang digunakannya untuk terhubung ke layanan provisi perangkat dan IoT Hub.

Siapkan informasi berikut:

  • Nilai Cakupan ID DPS. Anda dapat mengambil nilai ini dari halaman gambaran umum instans DPS Anda di portal Microsoft Azure.
  • Berkas rantai sertifikat identitas perangkat pada perangkat.
  • Berkas kunci identitas perangkat pada perangkat.

Buat file konfigurasi untuk perangkat Anda berdasarkan file templat yang disediakan sebagai bagian dari instalasi IoT Edge.

sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml

Buka file konfigurasi pada perangkat IoT Edge.

sudo nano /etc/aziot/config.toml
  1. Temukan bagian Provisi file. Jangan komentari baris penyediaan DPS dengan sertifikat X.509, dan pastikan baris penyediaan lainnya dikomentari.

    # DPS provisioning with X.509 certificate
    [provisioning]
    source = "dps"
    global_endpoint = "https://global.azure-devices-provisioning.net"
    id_scope = "SCOPE_ID_HERE"
    
    # Uncomment to send a custom payload during DPS registration
    # payload = { uri = "PATH_TO_JSON_FILE" }
    
    [provisioning.attestation]
    method = "x509"
    registration_id = "REGISTRATION_ID_HERE"
    
    identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE"
    
    identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # auto_reprovisioning_mode = Dynamic
    
  2. Perbarui nilai id_scope dengan ID cakupan yang Anda salin dari instans DPS Anda.

  3. registration_id Sediakan untuk perangkat, yang merupakan ID yang dimiliki perangkat di IoT Hub. ID pendaftaran harus sesuai dengan nama umum (CN) sertifikat identitas.

  4. Perbarui nilai identity_cert dan identity_pk dengan sertifikat dan informasi utama Anda.

    Nilai sertifikat identitas dapat disediakan sebagai URI file, atau dapat diterbitkan secara dinamis menggunakan EST atau otoritas sertifikat lokal. Batalkan hanya satu baris, berdasarkan format yang Anda pilih untuk digunakan.

    Nilai kunci pribadi identitas dapat disediakan sebagai URI file atau URI PKCS#11. Batalkan hanya satu baris, berdasarkan format yang Anda pilih untuk digunakan.

    Jika Anda menggunakan URI PKCS#11, temukan bagian PKCS#11 di file konfigurasi dan berikan informasi tentang konfigurasi PKCS#11 Anda.

    Untuk informasi selengkapnya tentang sertifikat, lihat Mengelola sertifikat IoT Edge.

    Untuk informasi selengkapnya tentang pengaturan konfigurasi provisi, lihat Mengonfigurasi pengaturan perangkat IoT Edge.

  5. Secara opsional, temukan bagian mode provisi ulang otomatis dari file. auto_reprovisioning_mode Gunakan parameter untuk mengonfigurasi perilaku provisi ulang perangkat Anda. Dinamis - Provisi ulang ketika perangkat mendeteksi bahwa perangkat mungkin telah dipindahkan dari satu IoT Hub ke IoT Hub lainnya. Ini adalah default. AlwaysOnStartup - Provisi ulang saat perangkat di-boot ulang atau crash menyebabkan daemon dimulai ulang. OnErrorOnly - Jangan pernah memicu provisi ulang perangkat secara otomatis. Setiap mode memiliki fallback provisi ulang perangkat implisit jika perangkat tidak dapat terhubung ke IoT Hub selama provisi identitas karena kesalahan konektivitas. Untuk informasi selengkapnya, lihat konsep penyediaan ulang perangkat IoT Hub.

  6. Secara opsional, batalkan payload komentar parameter untuk menentukan jalur ke file JSON lokal. Konten file dikirim ke DPS sebagai data tambahan saat perangkat mendaftar. Ini berguna untuk alokasi kustom. Misalnya, jika Anda ingin mengalokasikan perangkat berdasarkan ID model IoT Plug and Play tanpa intervensi manusia.

  7. Simpan dan tutup file.

Terapkan perubahan konfigurasi yang Anda buat pada IoT Edge.

sudo iotedge config apply

Verifikasi keberhasilan penginstalan

Jika runtime berhasil dimulai, Anda dapat masuk ke IoT Hub Anda dan mulai menyebarkan modul IoT Edge ke perangkat Anda.

Anda dapat memverifikasi bahwa pendaftaran individual yang Anda buat di layanan provisi perangkat telah digunakan. Navigasikan ke instans layanan provisi perangkat Anda di portal Microsoft Azure. Buka detail pendaftaran untuk pendaftaran individual yang Anda buat. Perhatikan bahwa status pendaftaran telah ditetapkan dan ID perangkat telah dicantumkan.

Gunakan perintah berikut di perangkat Anda untuk memverifikasi bahwa IoT Edge terpasang dan berhasil dimulai.

Periksa status layanan IoT Edge.

sudo iotedge system status

Periksa log layanan.

sudo iotedge system logs

Daftarkan modul yang sedang berjalan.

sudo iotedge list

Langkah berikutnya

Proses pendaftaran layanan provisi perangkat memungkinkan Anda mengatur ID perangkat dan tag perangkat kembaran pada saat yang sama saat Anda memprovisikan perangkat baru. Anda dapat menggunakan nilai tersebut untuk menargetkan masing-masing perangkat atau grup perangkat menggunakan manajemen perangkat otomatis. Pelajari cara Menerapkan dan memantau modul IoT Edge dalam skala besar menggunakan portal Azure atau menggunakan Azure CLI.