Tutorial: Mengonfigurasi Pendaftaran melalui Secure Transport Server untuk 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.

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

Diagram memperlihatkan gambaran umum tingkat tinggi dari tiga langkah yang diperlukan untuk menyelesaikan tutorial ini.

Prasyarat

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.

  1. Koneksi ke perangkat, misalnya menggunakan SSH, tempat Anda menginstal IoT Edge.

  2. 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
    
  3. Di direktori yang berisi Dockerfile, buat gambar Anda dari sampel Dockerfile.

    sudo docker build . --tag est
    
  4. Mulai kontainer dan ekspos port kontainer 8085 ke port 8085 pada host.

    sudo docker run -d -p 8085:8085 est
    
  5. 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
    
  6. 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.

  1. 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
    
  2. Ambil sertifikat CA dari server EST ke /var/aziot/certs direktori dan beri nama cacert.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
    
  3. 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

  1. Jika Anda tidak memiliki Device Provisioning Service yang ditautkan ke IoT Hub, lihat Mulai Cepat: Menyiapkan IoT Hub Device Provisioning Service dengan portal Azure.

  2. 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 perintah cat /var/aziot/certs/cacert.crt.pem, menyalin seluruh output, dan menempelkan konten ke file baru di komputer pengembangan Anda.

  3. Di portal Microsoft Azure, navigasikan ke contoh IoT Hub Device Provisioning Service Anda.

  4. Di bawah Pengaturan, pilih Sertifikat, lalu +Tambahkan.

    Cuplikan layar yang menambahkan sertifikat CA ke Device Provisioning Service menggunakan portal Azure.

    Pengaturan Nilai
    Nama sertifikat Berikan nama yang mudah diingat untuk sertifikat CA
    File .pem atau .cer sertifikat Telusuri ke cacert.crt.pem dari server EST
    Atur status sertifikat menjadi terverifikasi saat diunggah Pilih kotak centang
  5. Pilih Simpan.

Membuat grup pendaftaran

  1. Di portal Microsoft Azure, navigasikan ke contoh IoT Hub Device Provisioning Service Anda.

  2. Di bawah Pengaturan, pilih Kelola pendaftaran.

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

  4. Pada tab Pendaftaran + provisi , pilih pengaturan berikut:

    Cuplikan layar yang menambahkan grup pendaftaran DPS menggunakan portal Azure.

    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
  5. Pada tab Hub IoT, pilih IoT Hub Anda dari daftar.

  6. 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.

  7. 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.

  1. Buka file konfigurasi IoT Edge menggunakan editor. Misalnya, gunakan nano editor untuk membuka /etc/aziot/config.toml file.

    sudo nano /etc/aziot/config.toml
    
  2. 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, dan myiotedgedevice 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:

    1. 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.
    2. 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.

  3. Jalankan sudo iotedge config apply untuk menerapkan pengaturan baru.

  4. 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.

  5. Navigasi ke perangkat Anda di IoT Hub. Thumbprint sertifikat telah ditambahkan ke perangkat secara otomatis menggunakan DPS dan server EST.

    Cuplikan layar pengaturan perangkat IoT Hub di portal Azure. Bidang thumbprint sertifikat memperlihatkan nilai.

    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.

  1. Pada perangkat IoT Edge, hentikan runtime IoT Edge.

    sudo iotedge system stop
    
  2. Hapus sertifikat dan kunci yang ada.

    sudo sh -c "rm /var/lib/aziot/certd/certs/*"
    sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
    
  3. Terapkan konfigurasi IoT Edge untuk memperbarui sertifikat.

    sudo iotedge config apply
    

    Anda mungkin perlu menunggu beberapa menit agar runtime dimulai.

  4. Navigasi ke perangkat Anda di IoT Hub. Thumbprint sertifikat telah diperbarui.

    Cuplikan layar pengaturan perangkat IoT Hub di portal Azure. Bidang thumbprint sertifikat memperlihatkan nilai baru.

  5. Cantumkan file sertifikat menggunakan perintah sudo ls -l /var/lib/aziot/certd/certs. Anda akan melihat tanggal pembuatan terbaru untuk file sertifikat perangkat.

  6. 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.

  1. 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.
  2. Coba sesuaikan persentase dalam threshold untuk set perpanjangan otomatis di config.toml (saat ini diatur ke 80% dalam konfigurasi contoh). Misalnya, atur ke 10% dan amati perpanjangan sertifikat setiap ~2 jam.
  3. Coba sesuaikan ke threshold bilangan bulat diikuti oleh m (menit). Misalnya, atur ke dan amati perpanjangan sertifikat 1 jam sebelum kedaluwarsa 60m .

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:

  1. Masuk ke portal Azure, lalu pilih Grup sumber daya.

  2. Pilih nama grup sumber daya yang berisi sumber daya pengujian IoT Edge Anda.

  3. Tinjau daftar sumber daya yang terdapat dalam grup sumber daya Anda. Jika ingin menghapus semuanya, Anda dapat memilih Hapus grup sumber daya. Jika hanya ingin menghapus beberapa sumber daya, Anda dapat mengklik setiap sumber daya untuk menghapusnya satu per satu.

Langkah berikutnya