Membuat dan memprovisikan perangkat IoT Edge 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 instruksi menyeluruh untuk mendaftarkan dan memprovisikan perangkat IoT Edge Linux, termasuk menginstal IoT Edge.

Setiap perangkat yang tersambung ke hub IoT memiliki ID perangkat yang digunakan untuk melacak komunikasi cloud-to-device atau device-to-cloud. Anda mengonfigurasi perangkat dengan informasi koneksinya yang menyertakan nama host hub IoT, ID perangkat, dan informasi yang digunakan perangkat untuk mengautentikasi ke IoT Hub.

Langkah-langkah dalam artikel ini melalui proses yang disebut penyediaan manual, di mana Anda menghubungkan satu perangkat ke hub IoT-nya. Untuk penyediaan manual, Anda memiliki dua opsi untuk mengautentikasi perangkat IoT Edge:

  • Kunci simetris: Saat Anda membuat identitas perangkat baru di IoT Hub, layanan ini membuat dua kunci. Anda menempatkan salah satu kunci pada perangkat, dan menyajikan kunci ke IoT Hub saat mengautentikasi.

    Metode autentikasi ini lebih cepat untuk memulai, tetapi tidak sama amannya.

  • X.509 self-signed: Anda membuat dua sertifikat identitas X.509 dan menempatkannya di perangkat. Saat Anda membuat identitas perangkat baru di IoT Hub, Anda menyediakan thumbprint dari kedua sertifikat. Saat perangkat mengautentikasi ke IoT Hub, perangkat menyajikan satu sertifikat dan IoT Hub memverifikasi bahwa sertifikat cocok dengan thumbprint-nya.

    Metode autentikasi ini lebih aman dan disarankan untuk skenario produksi.

Artikel ini mencakup penggunaan sertifikat X.509 sebagai metode autentikasi Anda. Jika Anda ingin menggunakan kunci simetris, lihat Membuat dan memprovisikan perangkat IoT Edge di Linux menggunakan kunci simetris.

Catatan

Jika Anda memiliki banyak perangkat untuk disiapkan dan tidak ingin memprovisikan masing-masing perangkat secara manual, gunakan salah satu artikel berikut untuk mempelajari cara kerja IoT Edge dengan layanan provisi perangkat IoT Hub:

Prasyarat

Artikel ini mencakup mendaftarkan perangkat IoT Edge Anda dan menginstal IoT Edge di perangkat IoT Edge. Tugas-tugas ini memiliki prasyarat dan utilitas berbeda yang digunakan untuk menyelesaikannya. Pastikan Anda memiliki semua prasyarat yang tercakup sebelum melanjutkan.

Alat manajemen perangkat

Anda dapat menggunakan portal Azure, Visual Studio Code, atau Azure CLI untuk langkah-langkah mendaftarkan perangkat Anda. Setiap utilitas memiliki prasyaratnya sendiri atau mungkin perlu diinstal:

Hub IoT gratis atau standar di langganan Azure Anda.

Persyaratan perangkat

Perangkat Linux X64, ARM32, atau ARM64.

Microsoft menerbitkan paket penginstalan untuk berbagai sistem operasi.

Untuk informasi terkini tentang sistem operasi mana yang saat ini didukung untuk skenario produksi, lihat Sistem yang didukung Azure IoT Edge.

Hasilkan sertifikat identitas perangkat

Penyediaan manual dengan sertifikat X.509 memerlukan IoT Edge versi 1.0.10 atau yang lebih baru.

Saat Anda memprovisikan perangkat IoT Edge dengan sertifikat X.509, Anda menggunakan apa yang disebut sertifikat identitas perangkat. Sertifikat ini hanya digunakan untuk menyediakan perangkat IoT Edge dan mengautentikasi perangkat dengan Azure IoT Hub. Ini adalah sertifikat daun yang tidak menandatangani sertifikat lain. Sertifikat identitas perangkat terpisah dari sertifikat otoritas sertifikat (CA) yang disajikan perangkat IoT Edge ke modul atau perangkat hilir untuk verifikasi.

Untuk autentikasi sertifikat X.509, informasi autentikasi setiap perangkat disediakan dalam bentuk thumbprint yang diambil dari sertifikat identitas perangkat Anda. Thumbprint ini diberikan kepada IoT Hub pada saat pendaftaran perangkat sehingga layanan dapat mengenali perangkat saat terhubung.

Untuk informasi selengkapnya tentang cara sertifikat CA digunakan di perangkat IoT Edge, lihat Memahami bagaimana Azure IoT Edge menggunakan sertifikat.

Anda memerlukan file berikut untuk penyediaan manual dengan X.509:

  • Dua sertifikat identitas perangkat dengan sertifikat kunci privat yang cocok dalam format .cer atau .pem. Anda memerlukan dua sertifikat identitas perangkat untuk rotasi sertifikat. Praktik terbaik adalah menyiapkan dua sertifikat identitas perangkat yang berbeda dengan tanggal kedaluwarsa yang berbeda. Jika satu sertifikat kedaluwarsa, sertifikat lainnya masih valid dan memberi Anda waktu untuk memutar sertifikat yang kedaluwarsa.

    Satu set sertifikat dan file kunci disediakan untuk runtime IoT Edge. Saat Anda membuat sertifikat identitas perangkat, atur nama umum sertifikat (CN) dengan ID perangkat yang Anda inginkan untuk perangkat di hub IoT Anda.

  • Thumbprint diambil dari kedua sertifikat identitas perangkat. IoT Hub memerlukan dua thumbprint saat mendaftarkan perangkat IoT Edge. Anda hanya dapat menggunakan satu sertifikat untuk pendaftaran. Untuk menggunakan satu sertifikat, atur thumbprint sertifikat yang sama untuk thumbprint utama dan sekunder saat mendaftarkan perangkat.

    Nilai thumbprint adalah karakter 40 hex untuk hash SHA-1 atau karakter 64 hex untuk hash SHA-256. Kedua thumbprint disediakan untuk IoT Hub pada saat pendaftaran perangkat.

    Salah satu cara untuk mengambil thumbprint dari sertifikat adalah dengan perintah openssl berikut:

    openssl x509 -in <certificate filename>.pem -text -fingerprint
    

    Thumbprint disertakan dalam output perintah ini. Contohnya:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

Jika Anda tidak memiliki sertifikat, Anda bisa Membuat sertifikat demo untuk menguji fitur perangkat IoT Edge. Ikuti instruksi dalam artikel tersebut untuk menyiapkan skrip pembuatan sertifikat, membuat sertifikat OS akar, dan membuat sertifikat identitas perangkat IoT Edge. Untuk pengujian, Anda dapat membuat satu sertifikat identitas perangkat dan menggunakan thumbprint yang sama untuk nilai thumbprint primer dan sekunder saat mendaftarkan perangkat di IoT Hub.

Mendaftarkan perangkat Anda

Anda dapat menggunakan portal Microsoft Azure, Visual Studio Code, atau CLI Azure untuk mendaftarkan perangkat, tergantung pada preferensi Anda.

Di hub IoT Anda di portal Azure, perangkat IoT Edge dibuat dan dikelola secara terpisah dari perangkat IoT yang tidak diaktifkan edge.

  1. Masuk ke portal Azure dan navigasikan ke IoT hub Anda.

  2. Di panel kiri, pilih Perangkat dari menu, lalu pilih Tambahkan Perangkat.

  3. Pada halaman Buat perangkat, berikan informasi berikut ini:

    • Membuat ID perangkat deskriptif. Catat ID perangkat ini, saat Anda menggunakannya nanti.
    • Centang kotak IoT Edge Device .
    • Pilih X.509 yang Ditandatangani Sendiri sebagai jenis autentikasi.
    • Berikan thumbprint sertifikat identitas utama dan sekunder. Nilai thumbprint adalah karakter 40 hex untuk hash SHA-1 atau karakter 64 hex untuk hash SHA-256. portal Azure hanya mendukung nilai heksadesimal. Hapus pemisah kolom dan spasi dari nilai thumbprint sebelum memasukkannya di portal. Misalnya, D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 dimasukkan sebagai D268D9049F1A4D6AFD8477687BC633C032375112.

    Tip

    Jika Anda menguji dan ingin menggunakan satu sertifikat, Anda dapat menggunakan sertifikat yang sama untuk thumbprint primer dan sekunder.

  4. Pilih Simpan.

Setelah Anda memiliki perangkat yang terdaftar di IoT Hub, ambil informasi yang Anda gunakan untuk menyelesaikan instalasi dan provisi runtime IoT Edge.

Melihat perangkat terdaftar dan mengambil informasi provisi

Perangkat yang menggunakan autentikasi sertifikat X.509 memerlukan nama IoT hub, nama perangkat, dan file sertifikat mereka untuk menyelesaikan instalasi dan provisi runtime IoT Edge.

Perangkat berkemampuan tepi yang tersambung ke hub IoT Anda tercantum di halaman Perangkat . Anda dapat memfilter daftar menurut jenis perangkat perangkat perangkat IoT Edge.

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

Sekarang setelah mesin kontainer dan runtime IoT Edge diinstal di perangkat Anda, Anda siap untuk menyiapkan perangkat dengan identitas cloud dan informasi autentikasinya.

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

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    
  2. Buka file konfigurasi pada perangkat IoT Edge.

    sudo nano /etc/aziot/config.toml
    
  3. Temukan bagian Provisi file dan batalkan baris untuk provisi manual dengan sertifikat identitas X.509. Pastikan bahwa bagian provisi lainnya dikomentari.

    # Manual provisioning with x.509 certificates
    [provisioning]
    source = "manual"
    iothub_hostname = "REQUIRED_IOTHUB_HOSTNAME"
    device_id = "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
    
    [provisioning.authentication]
    method = "x509"
    
    identity_cert = "REQUIRED_URI_OR_POINTER_TO_DEVICE_IDENTITY_CERTIFICATE"
    
    identity_pk = "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"
    

Perbarui bidang berikut:

  • iothub_hostname: Nama host IoT Hub yang disambungkan perangkat. Contohnya,{IoT hub name}.azure-devices.net.
  • device_id: ID yang Anda berikan saat mendaftarkan perangkat.
  • identity_cert:URI ke sertifikat identitas pada perangkat, contohnya: file:///path/identity_certificate.pem. Atau, secara dinamis mengeluarkan sertifikat menggunakan EST atau otoritas sertifikat lokal.
  • identity_pk: URI ke file kunci privat untuk sertifikat identitas yang disediakan, contohnya: file:///path/identity_key.pem. Atau, berikan URI PKCS#11 lalu berikan informasi konfigurasi Anda di

Bagian PKCS#11 nanti dalam file konfigurasi.

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

Simpan dan tutup file.

CTRL + X, , YEnter

Setelah memasukkan informasi provisi ke dalam file konfigurasi, terapkan perubahan Anda:

sudo iotedge config apply

Sebarkan modul

Untuk menyebarkan modul IoT Edge Anda, buka hub IoT Anda di portal Azure, lalu:

  1. Pilih Perangkat dari menu IoT Hub.

  2. Pilih perangkat Anda untuk membuka halamannya.

  3. Pilih tab Atur Modul .

  4. Karena kita ingin menyebarkan modul default IoT Edge (edgeAgent dan edgeHub), kita tidak perlu menambahkan modul apa pun ke panel ini, jadi pilih Tinjau + buat di bagian bawah.

  5. Anda melihat konfirmasi JSON modul Anda. Pilih Buat untuk menyebarkan modul.<

Untuk informasi selengkapnya, lihat Menyebarkan modul.

Memverifikasi konfigurasi yang berhasil

Pastikan bahwa runtime berhasil dipasang dan dikonfigurasi pada perangkat IoT Edge Anda.

Tip

Anda memerlukan hak istimewa yang lebih tinggi untuk menjalankan perintah iotedge. Setelah Anda keluar dari komputer Anda dan masuk kembali pertama kali setelah menginstal runtime IoT Edge, izin Anda akan diperbarui secara otomatis. Sampai saat itu, gunakan sudo di depan perintah.

Periksa untuk melihat layanan sistem IoT Edge sedang berjalan.

sudo iotedge system status

Respons status yang berhasil adalah Ok.

Jika Anda perlu memecahkan masalah layanan, ambil log layanan.

sudo iotedge system logs

Gunakan alat check untuk memverifikasi konfigurasi dan status koneksi perangkat.

sudo iotedge check

Anda dapat mengharapkan berbagai respons yang mungkin mencakup OK (hijau), Peringatan (kuning), atau Kesalahan (merah). Untuk memecahkan masalah kesalahan umum, lihat Solusi untuk masalah umum untuk Azure IoT Edge.

Cuplikan layar respons sampel dari perintah periksa.

Tip

Selalu gunakan sudo untuk menjalankan alat pemeriksaan, bahkan setelah izin Anda diperbarui. Alat ini membutuhkan hak istimewa yang ditingkatkan untuk mengakses file konfigurasi untuk memverifikasi status konfigurasi.

Catatan

Pada perangkat yang baru disediakan, Anda mungkin melihat kesalahan yang terkait dengan IoT Edge Hub:

× kesiapan produksi: Direktori penyimpanan Edge Hub dipertahankan pada sistem file host - Kesalahan

Tidak dapat memeriksa status kontainer edgeHub saat ini

Kesalahan ini diharapkan pada perangkat yang baru disediakan karena modul IoT Edge Hub tidak berjalan. Untuk mengatasi kesalahan, di IoT Hub, atur modul untuk perangkat dan buat penyebaran. Membuat penyebaran untuk perangkat memulai modul pada perangkat termasuk modul IoT Edge Hub.

Lihat semua modul yang berjalan di perangkat IoT Edge Anda. Saat layanan dimulai untuk pertama kalinya, Anda hanya akan melihat modul edgeAgent yang berjalan. Modul edgeAgent berjalan secara default dan membantu memasang dan memulai modul tambahan yang Anda sebarkan ke perangkat Anda.

sudo iotedge list

Saat Anda membuat perangkat IoT Edge baru, perangkat tersebut menampilkan kode 417 -- The device's deployment configuration is not set status di portal Azure. Status ini normal, dan berarti perangkat siap untuk menerima penyebaran modul.

Penginstalan versi offline atau versi spesifik (opsional)

Langkah-langkah di bagian ini adalah untuk skenario yang tidak dicakup oleh langkah-langkah penginstalan standar. Ini mungkin termasuk:

  • Memasang IoT Edge saat offline
  • Memasang versi RC

Gunakan langkah-langkah di bagian ini jika Anda ingin menginstal versi tertentu dari runtime Azure IoT Edge yang tidak tersedia melalui manajer paket Anda. Daftar paket Microsoft hanya berisi sekumpulan terbatas versi dan sub-versi terbarunya, jadi langkah-langkah ini adalah untuk siapa saja yang ingin menginstal versi lama atau versi RC.

Jika Anda menggunakan snap Ubuntu, Anda dapat mengunduh snap dan menginstalnya secara offline. Untuk informasi selengkapnya, lihat Mengunduh snap dan menginstal offline.

Dengan menggunakan perintah curl, Anda bisa menargetkan file komponen langsung dari repositori IoT Edge GitHub.

  1. Navigasikan ke rilis Azure IoT Edge, dan temukan versi rilis yang ingin Anda targetkan.

  2. Perluas bagian Aset untuk versi tersebut.

  3. Setiap rilis harus memiliki file baru untuk IoT Edge dan layanan identitas. Jika Anda akan menginstal IoT Edge pada perangkat offline, unduh file-file ini sebelumnya. Jika tidak, gunakan perintah berikut ini untuk memperbarui komponen tersebut.

    1. Temukan file aziot-identity-service yang cocok dengan arsitektur perangkat IoT Edge Anda. Klik kanan tautan file dan salin alamat tautan.

    2. Gunakan tautan yang disalin dalam perintah berikut untuk menginstal versi layanan identitas tersebut:

      curl -L <identity service link> -o aziot-identity-service.deb && sudo apt-get install ./aziot-identity-service.deb
      

    1. Temukan file aziot-edge yang cocok dengan arsitektur perangkat IoT Edge Anda. Klik kanan tautan file dan salin alamat tautan.

    2. Gunakan tautan yang disalin dalam perintah berikut untuk menginstal versi IoT Edge tersebut.

      curl -L <iotedge link> -o aziot-edge.deb && sudo apt-get install ./aziot-edge.deb
      

Mencopot pemasangan IoT Edge

Jika Anda ingin mencopot pemasangan IoT Edge dari perangkat Anda, gunakan perintah berikut.

Hapus runtime{i>

sudo apt-get autoremove --purge aziot-edge

--purge Tinggalkan bendera jika Anda berencana untuk menginstal ulang IoT Edge dan menggunakan informasi konfigurasi yang sama di masa mendatang. Bendera --purge menghapus semua file yang terkait dengan IoT Edge, termasuk file konfigurasi Anda.

Ketika runtime IoT Edge dihapus, kontainer apa pun yang dibuatnya akan dihentikan tetapi masih ada di perangkat Anda. Lihat semua kontainer untuk melihat mana yang masih tersisa.

sudo docker ps -a

Hapus kontainer dari perangkat Anda, termasuk dua kontainer runtime.

sudo docker rm -f <container name>

Terakhir, hapus runtime kontainer dari perangkat Anda.

sudo apt-get autoremove --purge moby-engine