Menyambungkan perangkat hilir ke gateway Azure IoT Edge

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.

Di sini, Anda menemukan instruksi untuk membuat koneksi tepercaya antara perangkat hilir dan gateway transparan IoT Edge. Dalam skenario gateway transparan, satu atau beberapa perangkat dapat meneruskan pesan mereka melalui satu perangkat gateway yang mempertahankan koneksi ke IoT Hub. Di sini, gateway istilah dan gateway IoT Edge merujuk ke perangkat IoT Edge yang dikonfigurasi sebagai gateway transparan.

Catatan

Perangkat hilir memancarkan data langsung ke Internet atau ke perangkat gateway (diaktifkan IoT Edge atau tidak). Perangkat anak dapat menjadi perangkat hilir atau perangkat gateway dalam topologi berlapis.

Ada tiga langkah umum untuk menyiapkan koneksi gateway transparan yang sukses. Artikel ini menjelaskan langkah ketiga.

  1. Konfigurasikan perangkat gateway sebagai server sehingga perangkat hilir dapat tersambungkan dengan aman. Siapkan gateway untuk menerima pesan dari perangkat hilir dan merutekannya ke tujuan yang tepat. Untuk langkah-langkah tersebut, lihat Mengonfigurasi perangkat IoT Edge untuk bertindak sebagai gateway transparan.

  2. Buat identitas perangkat untuk perangkat hilir sehingga dapat mengautentikasi dengan IoT Hub. Konfigurasikan perangkat hilir untuk mengirim pesan melalui perangkat gateway. Untuk langkah-langkah tersebut, lihat Mengautentikasi perangkat hilir ke Azure IoT Hub.

  3. Sambungkan perangkat hilir ke perangkat gateway dan mulai mengirim pesan.

Artikel ini membantu Anda memahami komponen koneksi perangkat hilir, seperti:

  • Keamanan lapisan transportasi (TLS) dan dasar-dasar sertifikat.
  • Pustaka TLS bekerja di berbagai sistem operasi yang menangani sertifikat secara berbeda.

Anda kemudian menelusuri sampel Azure IoT, dalam bahasa pilihan Anda, untuk membuat perangkat Anda mengirim pesan ke gateway.

Prasyarat

Dapatkan hal berikut untuk menyiapkan perangkat hilir Anda:

  • Perangkat hilir.

    Perangkat ini dapat berupa aplikasi atau platform apa pun yang memiliki identitas yang dibuat dengan layanan cloud Azure IoT Hub. Dalam banyak kasus, aplikasi ini menggunakan perangkat Azure IoT SDK. Perangkat hilir juga dapat menjadi aplikasi yang berjalan di perangkat gateway IoT Edge itu sendiri.

    Nantinya, artikel ini menyediakan langkah-langkah untuk menyambungkan perangkat IoT sebagai perangkat hilir. Jika Anda lebih suka menggunakan perangkat IoT Edge sebagai perangkat hilir, lihat Koneksi perangkat Azure IoT Edge bersama-sama untuk membuat hierarki (tepi berlapis).

  • File sertifikat OS akar.

    File ini digunakan untuk menghasilkan sertifikat OS perangkat di Mengonfigurasi perangkat IoT Edge untuk bertindak sebagai gateway transparan, yang tersedia di perangkat hilir Anda.

    Perangkat hilir Anda menggunakan sertifikat ini untuk memvalidasi identitas perangkat gateway. Sertifikat tepercaya ini memvalidasi koneksi keamanan lapisan transportasi (TLS) ke perangkat gateway. Lihat detail penggunaan di bagian Sediakan sertifikat OS akar.

  • string koneksi yang dimodifikasi yang menunjuk ke perangkat gateway.

    Cara mengubah string koneksi Anda dijelaskan dalam Mengautentikasi perangkat hilir ke Azure IoT Hub.

Catatan

Perangkat IoT yang terdaftar di IoT Hub dapat menggunakan modul kembar untuk mengisolasi berbagai proses, perangkat keras, atau fungsi pada satu perangkat. Gateway IoT Edge mendukung koneksi modul hilir, menggunakan autentikasi kunci konten tetapi bukan autentikasi sertifikat X.509.

Memahami dasar-dasar TLS dan sertifikat

Tantangan menghubungkan perangkat hilir dengan aman ke IoT Edge sama seperti komunikasi klien/server aman lainnya yang terjadi melalui internet. Klien dan server berkomunikasi dengan aman melalui internet menggunakan Keamanan lapisan transportasi (TLS). TLS dibangun menggunakan konstruksi standar infrastruktur kunci publik (PKI) yang disebut sertifikat. TLS adalah spesifikasi yang cukup terlibat dan membahas berbagai topik yang terkait dengan pengamanan dua titik akhir. Bagian ini meringkas konsep yang relevan bagi Anda untuk menghubungkan perangkat dengan aman ke gateway IoT Edge.

Ketika klien terhubung ke server, server menyajikan rantai sertifikat, yang disebut rantai sertifikat server. Rantai sertifikat biasanya terdiri dari sertifikat otoritas sertifikat akar (CA), satu atau lebih sertifikat CA menengah, dan akhirnya sertifikat server itu sendiri. Klien membangun kepercayaan dengan server dengan memverifikasi secara kriptografi seluruh rantai sertifikat server. Validasi klien dari rantai sertifikat server ini disebut validasi rantai server. Klien menantang server untuk membuktikan kepemilikan kunci pribadi yang terkait dengan sertifikat server dalam proses yang disebut bukti kepemilikan. Kombinasi validasi rantai server dan bukti kepemilikan disebut otentikasi server. Untuk memvalidasi rantai sertifikat server, klien memerlukan salinan sertifikat CA akar yang digunakan untuk membuat (atau menerbitkan) sertifikat server. Biasanya saat menyambungkan ke situs web, browser telah dikonfigurasi sebelumnya dengan sertifikat CA yang umum digunakan sehingga klien memiliki proses yang mulus.

Saat perangkat terhubung ke Azure IoT Hub, perangkat adalah klien dan layanan cloud IoT Hub adalah server. Layanan cloud IoT Hub didukung oleh sertifikat CA akar yang disebut Baltimore CyberTrust Root,yang tersedia untuk umum dan banyak digunakan. Karena sertifikat IoT Hub CA sudah diinstal pada sebagian besar perangkat, banyak implementasi TLS (OpenSSL, Schannel, LibreSSL) secara otomatis menggunakannya selama validasi sertifikat server. Namun, perangkat yang berhasil terhubung ke IoT Hub mungkin mengalami masalah saat mencoba menyambungkan ke gateway IoT Edge.

Saat perangkat tersambung ke gateway IoT Edge, perangkat hilir adalah klien dan perangkat gateway adalah server. Azure IoT Edge memungkinkan Anda untuk membangun rantai sertifikat gateway sesuai keinginan mereka. Anda dapat memilih untuk menggunakan sertifikat CA publik, seperti Baltimore, atau menggunakan sertifikat CA akar yang ditandatangani sendiri (atau in-house). Sertifikat CA publik sering memiliki biaya yang terkait dengan mereka, sehingga biasanya digunakan dalam skenario produksi. Sertifikat CA yang ditandatangani sendiri lebih disukai untuk pengembangan dan pengujian. Sertifikat demo adalah sertifikat OS akar yang ditandatangani sendiri.

Saat Anda menggunakan sertifikat CA root yang ditandatangani sendiri untuk gateway IoT Edge, sertifikat tersebut perlu diinstal atau disediakan untuk semua perangkat hilir yang mencoba menyambungkan ke gateway.

Cuplikan layar penyiapan sertifikat gateway.

Untuk mempelajari selengkapnya tentang sertifikat IoT Edge dan beberapa implikasi produksi, lihat detail penggunaan sertifikat IoT Edge.

Berikan sertifikat CA akar

Untuk memverifikasi sertifikat perangkat gateway, perangkat hilir memerlukan salinan sertifikat CA akarnya sendiri. Jika Anda menggunakan skrip yang disediakan di repositori git IoT Edge untuk membuat sertifikat uji, maka sertifikat CA root disebut azure-iot-test-only.root.ca.cert.pem.

Jika Anda belum melakukannya, pindahkan file sertifikat ini ke direktori apa pun di perangkat hilir Anda. Anda dapat memindahkan file dengan menginstal sertifikat CA di penyimpanan sertifikat sistem operasi atau (untuk bahasa tertentu) dengan mereferensikan sertifikat dalam aplikasi menggunakan Azure IoT SDK.

Anda dapat menggunakan layanan seperti Azure Key Vault atau fungsi seperti protokol salinan Aman untuk memindahkan file sertifikat.

Memasang sertifikat di OS

Setelah sertifikat OS akar berada di perangkat hilir, pastikan aplikasi yang tersambung ke gateway dapat mengakses sertifikat.

Menginstal sertifikat CA akar di penyimpanan sertifikat sistem operasi umumnya memungkinkan sebagian besar aplikasi untuk menggunakan sertifikat CA akar. Ada beberapa pengecualian, seperti aplikasi NodeJS yang tidak menggunakan penyimpanan sertifikat OS melainkan menggunakan toko sertifikat internal Node runtime. Jika Anda tidak dapat menginstal sertifikat di tingkat sistem operasi, lewati ke Gunakan sertifikat dengan Azure IoT SDK.

Instal sertifikat OS akar pada Ubuntu atau Windows.

Perintah berikut adalah contoh cara menginstal sertifikat CA pada host Ubuntu. Contoh ini mengasumsikan bahwa Anda menggunakan sertifikat azure-iot-test-only.root.ca.cert.pem dari artikel prasyarat, dan bahwa Anda telah menyalin sertifikat ke lokasi di perangkat hilir.

sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates

Anda akan melihat pesan yang tertulis, "Memperbarui sertifikat di /etc/ssl/certs... 1 ditambahkan, 0 dihapus; selesai."

Menggunakan sertifikat dengan Azure IoT SDK

Azure IoT SDK terhubung ke perangkat IoT Edge menggunakan aplikasi sampel sederhana. Tujuan sampel adalah untuk menghubungkan klien perangkat dan mengirim pesan telemetri ke gateway, lalu menutup koneksi dan keluar.

Sebelum menggunakan sampel tingkat aplikasi, dapatkan item berikut:

  • String koneksi IoT Hub Anda, dari perangkat hilir Anda, dimodifikasi untuk mengarahkan ke perangkat gateway.

  • Sertifikat apa pun yang diperlukan untuk mengautentikasi perangkat hilir Anda ke IoT Hub. Untuk informasi selengkapnya, lihat Mengautentikasi perangkat hilir ke Azure IoT Hub.

  • Jalur lengkap ke sertifikat CA akar yang Anda salin dan simpan di suatu tempat di perangkat hilir Anda.

    Misalnya: <file path>/azure-iot-test-only.root.ca.cert.pem.

Sekarang Anda siap untuk menggunakan sertifikat dengan sampel dalam bahasa pilihan Anda:

Bagian ini menyediakan aplikasi sampel untuk menghubungkan klien perangkat Azure IoT NodeJS ke gateway IoT Edge. Untuk aplikasi NodeJS, Anda harus menginstal sertifikat CA root di tingkat aplikasi seperti yang ditunjukkan di sini. Aplikasi NodeJS tidak menggunakan penyimpanan sertifikat sistem.

  1. Dapatkan sampel untuk edge_downstream_device.js dari SDK perangkat Azure IoT untuk repo sampel Node.js.
  2. Pastikan Anda memiliki semua prasyarat untuk menjalankan sampel dengan meninjau file readme.md.
  3. Dalam file edge_downstream_device.js, perbarui connectionString dan variabel edge_ca_cert_path.
  4. Lihat dokumentasi SDK untuk petunjuk tentang cara menjalankan sampel di perangkat Anda.

Untuk memahami sampel yang Anda jalankan, cuplikan kode berikut adalah cara SDK klien membaca file sertifikat dan menggunakannya untuk membuat koneksi TLS yang aman:

// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
    ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};

Menguji koneksi gateway

Gunakan perintah sampel ini pada perangkat hilir untuk menguji bahwa ia dapat tersambung ke perangkat gateway:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Perintah ini menguji koneksi melalui MQTTS (port 8883). Jika Anda menggunakan protokol yang berbeda, sesuaikan perintah seperlunya untuk AMQPS (5671) atau HTTPS (443).

Output dari perintah ini mungkin panjang, termasuk informasi tentang semua sertifikat dalam rantai. Jika koneksi Anda berhasil, Anda akan melihat baris seperti Verification: OK atau Verify return code: 0 (ok).

Cuplikan layar cara memverifikasi koneksi gateway.

Memecahkan masalah koneksi gateway

Jika koneksi perangkat hilir Anda ke perangkat gatewaynya tidak stabil, pertimbangkan pertanyaan-pertanyaan ini untuk resolusi.

  • Apakah nama host gateway dalam string koneksi sama dengan nilai hostname dalam file konfigurasi IoT Edge di perangkat gateway?
  • Apakah nama host gateway dapat dipecahkan ke Alamat IP? Anda dapat mengatasi koneksi terputus-terputus baik dengan menggunakan DNS atau dengan menambahkan entri file host pada perangkat hilir.
  • Apakah port komunikasi terbuka di dalam firewall Anda? Komunikasi berdasarkan protokol yang digunakan (MQTTS:8883/AMQPS:5671/HTTPS:433) harus dimungkinkan antara perangkat hilir dan IoT Edge transparan.

Langkah berikutnya

Pelajari bagaimana IoT Edge dapat memperluas kemampuan offline ke perangkat hilir.