Tutorial: Mengonfigurasi Pendaftaran melalui Secure Transport Server untuk Azure IoT Edge
Berlaku untuk: IoT Edge 1.5 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.
Dengan Azure IoT Edge, Anda dapat mengonfigurasi perangkat untuk menggunakan pendaftaran melalui server Secure Transport (EST) untuk mengelola sertifikat x509.
Tutorial ini memancarkan Anda melalui hosting server EST pengujian dan mengonfigurasi perangkat IoT Edge untuk pendaftaran dan perpanjangan sertifikat x509. Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat dan menghosting server EST pengujian
- Mengonfigurasi pendaftaran grup DPS
- Mengonfigurasi perangkat
Prasyarat
- Perangkat IoT Edge yang sudah ada dengan runtime Azure IoT Edge terbaru terinstal. Jika Anda perlu membuat perangkat pengujian, selesaikan Mulai Cepat: Sebarkan modul IoT Edge pertama Anda ke perangkat Linux virtual.
- Perangkat IoT Edge Anda memerlukan runtime Azure IoT Edge 1.2 atau yang lebih baru untuk dukungan EST. Runtime Azure IoT Edge 1.3 atau yang lebih baru diperlukan untuk perpanjangan sertifikat EST.
- IoT Hub Device Provisioning Service (DPS) ditautkan ke IoT Hub. Untuk informasi tentang mengonfigurasi DPS, lihat Mulai Cepat: Menyiapkan IoT Hub Device Provisioning Service dengan portal Azure.
Apa itu Pendaftaran melalui Transportasi Aman?
Pendaftaran melalui Secure Transport (EST) adalah protokol kriptografi yang mengotomatiskan penerbitan sertifikat x.509. Ini digunakan untuk klien infrastruktur kunci publik (PKI), seperti IoT Edge yang memerlukan sertifikat klien yang terkait dengan Otoritas Sertifikat (CA). EST menggantikan kebutuhan akan manajemen sertifikat manual, yang dapat berisiko dan rawan kesalahan.
Server EST
Untuk penerbitan dan perpanjangan sertifikat, Anda memerlukan server EST yang dapat diakses oleh perangkat Anda.
Penting
Untuk solusi tingkat perusahaan, pertimbangkan: GlobalSign IoT Edge Enroll atau DigiCert IoT Device Manager.
Untuk pengujian dan pengembangan, Anda dapat menggunakan server EST pengujian. Dalam tutorial ini, kita akan membuat server EST pengujian.
Jalankan server EST pada perangkat
Untuk memulai dengan cepat, tutorial ini menunjukkan langkah-langkah untuk menyebarkan server EST sederhana dalam kontainer secara lokal di perangkat IoT Edge. Metode ini adalah pendekatan paling sederhana untuk mencobanya.
Dockerfile menggunakan Ubuntu 18.04, pustaka Cisco yang disebut libest
, dan kode server sampel. Ini dikonfigurasi dengan pengaturan berikut yang dapat Anda ubah:
- CA root berlaku selama 20 tahun
- Sertifikat server EST berlaku selama 10 tahun
- Atur sertifikat default-hari ke 1 untuk menguji perpanjangan EST
- Server EST berjalan secara lokal pada perangkat IoT Edge dalam kontainer
Perhatian
Jangan gunakan Dockerfile ini dalam produksi.
Sambungkan ke perangkat, misalnya menggunakan SSH, tempat Anda telah menginstal IoT Edge.
Buat file bernama
Dockerfile
(peka huruf besar/kecil) dan tambahkan konten sampel menggunakan editor teks favorit Anda.Tip
Jika Anda ingin menghosting server EST Anda di Azure Container Instance, ubah
myestserver.westus.azurecontainer.io
ke nama DNS server EST Anda. Saat memilih nama DNS, ketahuilah label DNS untuk instans Azure Container harus panjangnya minimal lima karakter.# DO NOT USE IN PRODUCTION - Use only for testing # FROM ubuntu:18.04 RUN apt update && apt install -y apache2-utils git openssl libssl-dev build-essential && \ git clone https://github.com/cisco/libest.git && cd libest && \ ./configure --disable-safec && make install && \ rm -rf /src && apt remove --quiet -y libssl-dev build-essential && \ apt autoremove -y && apt clean -y && apt autoclean -y && \ rm -rf /var/lib/apt /tmp/* /var/tmp/* WORKDIR /libest/example/server/ # Setting the root CA expiration to 20 years RUN sed -i "s|-days 365|-days 7300 |g" ./createCA.sh ## If you want to host your EST server remotely (for example, an Azure Container Instance), ## change myestserver.westus.azurecontainer.io to the fully qualified DNS name of your EST server ## OR, change the IP address ## and uncomment the corresponding line. # RUN sed -i "s|DNS.2 = ip6-localhost|DNS.2 = myestserver.westus.azurecontainer.io|g" ./ext.cnf # RUN sed -i "s|IP.2 = ::1|IP.2 = <YOUR EST SERVER IP ADDRESS>|g" ./ext.cnf # Set EST server certificate to be valid for 10 years RUN sed -i "s|-keyout \$EST_SERVER_PRIVKEY -subj|-keyout \$EST_SERVER_PRIVKEY -days 7300 -subj |g" ./createCA.sh # Create the CA RUN echo 1 | ./createCA.sh # Set cert default-days to 1 to show EST renewal RUN sed -i "s|default_days = 365|default_days = 1 |g" ./estExampleCA.cnf # The EST server listens on port 8085 by default # Uncomment to change the port to 443 or something else. If changed, EXPOSE that port instead of 8085. # RUN sed -i "s|estserver -c|estserver -p 443 -c |g" ./runserver.sh EXPOSE 8085 CMD ./runserver.sh
Di direktori yang berisi
Dockerfile
, buat gambar Anda dari sampel Dockerfile.sudo docker build . --tag est
Mulai kontainer dan ekspos port kontainer 8085 ke port 8085 pada host.
sudo docker run -d -p 8085:8085 est
Sekarang, server EST Anda berjalan dan dapat dijangkau menggunakan
localhost
pada port 8085. Verifikasi bahwa tersedia dengan menjalankan perintah untuk melihat sertifikat servernya.openssl s_client -showcerts -connect localhost:8085
Anda akan melihat
-----BEGIN CERTIFICATE-----
di tengah-tengah output. Mengambil sertifikat memverifikasi bahwa server dapat dijangkau dan dapat menyajikan sertifikatnya.
Tip
Untuk menjalankan kontainer ini di cloud, buat gambar dan dorong gambar ke Azure Container Registry. Kemudian, ikuti mulai cepat untuk menyebarkan ke Azure Container Instance.
Unduh sertifikat CA
Setiap perangkat memerlukan sertifikat Otoritas Sertifikat (CA) yang terkait dengan sertifikat identitas perangkat.
Pada perangkat IoT Edge, buat
/var/aziot/certs
direktori jika tidak ada, lalu ubah direktori ke direktori tersebut.# If the certificate directory doen't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs # Change directory to /var/aziot/certs cd /var/aziot/certs
Ambil sertifikat CA dari server EST ke
/var/aziot/certs
direktori dan beri namacacert.crt.pem
.openssl s_client -showcerts -verify 5 -connect localhost:8085 < /dev/null | sudo awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".pem"; print >out}' && sudo cp cert2.pem cacert.crt.pem
Sertifikat harus dimiliki oleh aziotc pengguna layanan utama. Atur kepemilikan ke aziotcs untuk semua file sertifikat dan atur izin. Untuk informasi selengkapnya tentang kepemilikan dan izin sertifikat, lihat Persyaratan izin.
# Give aziotcs ownership to certificates sudo chown -R aziotcs:aziotcs /var/aziot/certs # Read and write for aziotcs, read-only for others sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
Memprovisikan perangkat IoT Edge menggunakan DPS
Menggunakan Device Provisioning Service memungkinkan Anda untuk secara otomatis menerbitkan dan memperbarui sertifikat dari server EST di IoT Edge. Saat menggunakan server tutorial EST, sertifikat identitas kedaluwarsa dalam satu hari membuat provisi manual dengan IoT Hub tidak praktis karena setiap kali sertifikat kedaluwarsa thumbprint harus diperbarui secara manual di IoT Hub. Autentikasi CA DPS dengan grup pendaftaran memungkinkan sertifikat identitas perangkat diperpanjang tanpa langkah manual.
Mengunggah sertifikat CA ke DPS
Jika Anda tidak memiliki Device Provisioning Service yang ditautkan ke IoT Hub, lihat Mulai Cepat: Menyiapkan IoT Hub Device Provisioning Service dengan portal Azure.
cacert.crt.pem
Transfer file dari perangkat Anda ke komputer dengan akses ke portal Azure seperti komputer pengembangan Anda. Cara mudah untuk mentransfer sertifikat adalah dengan menyambungkan dari jarak jauh ke perangkat Anda, menampilkan sertifikat menggunakan perintahcat /var/aziot/certs/cacert.crt.pem
, menyalin seluruh output, dan menempelkan konten ke file baru di komputer pengembangan Anda.Di portal Microsoft Azure, navigasikan ke contoh IoT Hub Device Provisioning Service Anda.
Di bawah Pengaturan, pilih Sertifikat, lalu +Tambahkan.
Pengaturan Nilai Nama sertifikat Berikan nama yang mudah diingat untuk sertifikat CA File .pem atau .cer sertifikat Telusuri ke cacert.crt.pem
dari server ESTAtur status sertifikat menjadi terverifikasi saat diunggah Pilih kotak centang Pilih Simpan.
Membuat grup pendaftaran
Di portal Microsoft Azure, navigasikan ke contoh IoT Hub Device Provisioning Service Anda.
Di bawah Pengaturan, pilih Kelola pendaftaran.
Pilih Tambahkan grup pendaftaran lalu selesaikan langkah-langkah berikut untuk mengonfigurasi pendaftaran.
Pada tab Pendaftaran + provisi , pilih pengaturan berikut:
Pengaturan Nilai Mekanisme pengesahan Pilih sertifikat X.509 yang diunggah ke instans Device Provisioning Service ini Sertifikat utama Pilih sertifikat Anda dari daftar dropdown Nama grup Berikan nama yang mudah diingat untuk pendaftaran grup ini Status provisi Pilih kotak centang Aktifkan pendaftaran ini Pada tab Hub IoT, pilih IoT Hub Anda dari daftar.
Pada tab Pengaturan perangkat, pilih kotak centang Aktifkan IoT Edge pada perangkat yang disediakan.
Pengaturan lain tidak relevan dengan tutorial. Anda dapat menerima pengaturan default.
Pilih Tinjau + buat.
Sekarang setelah pendaftaran ada untuk perangkat, runtime IoT Edge dapat secara otomatis mengelola sertifikat perangkat untuk IoT Hub yang ditautkan.
Mengonfigurasi perangkat IoT Edge
Pada perangkat IoT Edge, perbarui file konfigurasi IoT Edge untuk menggunakan sertifikat perangkat dari server EST.
Buka file konfigurasi IoT Edge menggunakan editor. Misalnya, gunakan
nano
editor untuk membuka/etc/aziot/config.toml
file.sudo nano /etc/aziot/config.toml
Tambahkan atau ganti bagian berikut dalam file konfigurasi. Pengaturan konfigurasi ini menggunakan autentikasi nama pengguna dan kata sandi pada awalnya untuk mendapatkan sertifikat perangkat dari server EST. Sertifikat perangkat digunakan untuk mengautentikasi ke server EST untuk perpanjangan sertifikat di masa mendatang.
Ganti teks tempat penampung berikut:
<DPS-ID-SCOPE>
dengan Cakupan ID DPS yang ditautkan ke IoT Hub yang berisi perangkat terdaftar, danmyiotedgedevice
dengan ID perangkat yang terdaftar di Azure IoT Hub. Anda dapat menemukan nilai Cakupan ID di halaman Gambaran Umum DPS.# DPS provisioning with X.509 certificate # Replace with ID Scope from your DPS [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "<DPS-ID-SCOPE>" [provisioning.attestation] method = "x509" registration_id = "myiotedgedevice" [provisioning.attestation.identity_cert] method = "est" common_name = "myiotedgedevice" # Auto renewal settings for the identity cert # Available only from IoT Edge 1.3 and above [provisioning.attestation.identity_cert.auto_renew] rotate_key = false threshold = "80%" retry = "4%" # Trusted root CA certificate in the global EST options # Optional if the EST server's TLS certificate is already trusted by the system's CA certificates. [cert_issuance.est] trusted_certs = [ "file:///var/aziot/certs/cacert.crt.pem", ] # The default username and password for libest # Used for initial authentication to EST server # # Not recommended for production [cert_issuance.est.auth] username = "estuser" password = "estpwd" [cert_issuance.est.urls] default = "https://localhost:8085/.well-known/est"
Catatan
Dalam contoh ini, IoT Edge menggunakan nama pengguna dan kata sandi untuk mengautentikasi ke server EST setiap kali perlu mendapatkan sertifikat. Metode ini tidak disarankan dalam produksi karena 1) diperlukan penyimpanan rahasia dalam teks biasa dan 2) IoT Edge harus menggunakan sertifikat identitas untuk mengautentikasi ke server EST juga. Untuk mengubah produksi:
- Pertimbangkan untuk menggunakan sertifikat bootstrap berumur panjang yang dapat disimpan ke perangkat selama manufaktur yang mirip dengan pendekatan yang direkomendasikan untuk DPS. Untuk melihat cara mengonfigurasi sertifikat bootstrap untuk server EST, lihat Mengautentikasi Perangkat Menggunakan Sertifikat yang Dikeluarkan Secara Dinamis melalui EST.
- Konfigurasikan
[cert_issuance.est.identity_auto_renew]
menggunakan sintaks yang sama dengan konfigurasi perpanjangan otomatis sertifikat provisi di atas.
Dengan cara ini, layanan sertifikat IoT Edge menggunakan sertifikat bootstrap untuk autentikasi awal dengan server EST, dan meminta sertifikat identitas untuk permintaan EST di masa mendatang ke server yang sama. Jika, karena alasan tertentu, sertifikat identitas EST kedaluwarsa sebelum perpanjangan, IoT Edge kembali menggunakan sertifikat bootstrap.
Jalankan
sudo iotedge config apply
untuk menerapkan pengaturan baru.Jalankan
sudo iotedge check
untuk memverifikasi konfigurasi perangkat IoT Edge Anda. Semua pemeriksaan konfigurasi harus berhasil. Untuk tutorial ini, Anda dapat mengabaikan kesalahan dan peringatan kesiapan produksi, peringatan server DNS, dan pemeriksaan konektivitas.Navigasi ke perangkat Anda di IoT Hub. Thumbprint sertifikat telah ditambahkan ke perangkat secara otomatis menggunakan DPS dan server EST.
Catatan
Saat Anda membuat perangkat IoT Edge baru, itu menampilkan kode
417 -- The device's deployment configuration is not set in the Azure portal.
status Status ini normal, dan berarti bahwa perangkat siap untuk menerima penyebaran modul.
Menguji perpanjangan sertifikat
Anda dapat segera menerbitkan ulang sertifikat identitas perangkat dengan menghapus sertifikat dan kunci yang ada dari perangkat lalu menerapkan konfigurasi IoT Edge. IoT Edge mendeteksi file yang hilang dan meminta sertifikat baru.
Pada perangkat IoT Edge, hentikan runtime IoT Edge.
sudo iotedge system stop
Hapus sertifikat dan kunci yang ada.
sudo sh -c "rm /var/lib/aziot/certd/certs/*" sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
Terapkan konfigurasi IoT Edge untuk memperbarui sertifikat.
sudo iotedge config apply
Anda mungkin perlu menunggu beberapa menit agar runtime dimulai.
Navigasi ke perangkat Anda di IoT Hub. Thumbprint sertifikat telah diperbarui.
Cantumkan file sertifikat menggunakan perintah
sudo ls -l /var/lib/aziot/certd/certs
. Anda akan melihat tanggal pembuatan terbaru untuk file sertifikat perangkat.openssl
Gunakan perintah untuk memeriksa konten sertifikat baru. Contohnya:sudo openssl x509 -in /var/lib/aziot/certd/certs/deviceid-bd732105ef89cf8edd2606a5309c8a26b7b5599a4e124a0fe6199b6b2f60e655.cer -text -noout
Ganti nama file sertifikat perangkat (.cer) dengan file sertifikat perangkat Anda.
Anda harus melihat rentang tanggal Validitas sertifikat telah berubah.
Berikut ini adalah cara lain opsional untuk menguji perpanjangan sertifikat. Pemeriksaan ini menunjukkan bagaimana IoT Edge memperbarui sertifikat dari server EST saat kedaluwarsa atau hilang. Setelah setiap pengujian, Anda dapat memverifikasi thumbprint baru di portal Azure dan menggunakan openssl
perintah untuk memverifikasi sertifikat baru.
- Coba tunggu satu hari agar sertifikat kedaluwarsa. Server EST pengujian dikonfigurasi untuk membuat sertifikat yang kedaluwarsa setelah satu hari. IoT Edge secara otomatis memperbarui sertifikat.
- Coba sesuaikan persentase dalam
threshold
untuk set perpanjangan otomatis diconfig.toml
(saat ini diatur ke 80% dalam konfigurasi contoh). Misalnya, atur ke10%
dan amati perpanjangan sertifikat setiap ~2 jam. - Coba sesuaikan ke
threshold
bilangan bulat diikuti olehm
(menit). Misalnya, atur ke dan amati perpanjangan sertifikat 1 jam sebelum kedaluwarsa60m
.
Membersihkan sumber daya
Anda dapat menyimpan sumber daya dan konfigurasi yang Anda buat dalam tutorial ini dan menggunakannya kembali. Jika tidak, Anda dapat menghapus konfigurasi lokal dan sumber daya Azure yang Anda gunakan dalam artikel ini untuk menghindari tagihan.
Menghapus sumber daya Azure
Menghapus sumber daya Azure dan grup sumber daya tidak dapat diubah. Pastikan Anda tidak menghapus grup atau sumber daya yang salah secara tidak sengaja. Jika Anda membuat hub IoT di dalam grup sumber daya yang sudah ada yang berisi sumber daya yang ingin Anda simpan, hapus hanya sumber daya hub IoT itu sendiri, bukan grup sumber daya.
Untuk menghapus sumber daya:
Masuk ke portal Azure, lalu pilih Grup sumber daya.
Pilih nama grup sumber daya yang berisi sumber daya pengujian IoT Edge Anda.
Tinjau daftar sumber daya yang dimuat grup sumber daya Anda. Jika ingin menghapus semuanya, Anda dapat memilih Hapus grup sumber daya. Jika Anda hanya ingin menghapus beberapa dari mereka, Anda dapat memilih setiap sumber daya untuk menghapusnya satu per satu.
Langkah berikutnya
- Untuk menggunakan server EST untuk menerbitkan sertifikat Ca Edge, lihat contoh konfigurasi.
- Menggunakan nama pengguna dan kata sandi untuk autentikasi bootstrap ke server EST tidak disarankan untuk produksi. Sebagai gantinya, pertimbangkan untuk menggunakan sertifikat bootstrap berumur panjang yang dapat disimpan ke perangkat selama manufaktur yang mirip dengan pendekatan yang direkomendasikan untuk DPS. Untuk melihat cara mengonfigurasi sertifikat bootstrap untuk server EST, lihat Mengautentikasi Perangkat Menggunakan Sertifikat yang Dikeluarkan Secara Dinamis melalui EST.
- Server EST juga dapat digunakan untuk menerbitkan sertifikat untuk semua perangkat dalam hierarki. Bergantung pada apakah Anda memiliki persyaratan ISA-95, mungkin perlu menjalankan rantai server EST dengan satu di setiap lapisan atau menggunakan modul proksi API untuk meneruskan permintaan. Untuk mempelajari lebih lanjut, lihat blog Kevin.
- Untuk solusi tingkat perusahaan, pertimbangkan: GlobalSign IoT Edge Enroll, DigiCert IoT Device Manager, dan Keytos EZCA.
- Untuk mempelajari selengkapnya tentang sertifikat, lihat Memahami cara Azure IoT Edge menggunakan sertifikat.