Bagikan melalui


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

Semua perangkat IoT Edge menggunakan sertifikat untuk membuat koneksi aman antara runtime dan modul apa pun yang berjalan di perangkat. Perangkat IoT Edge juga berfungsi sebagai gateway menggunakan sertifikat yang sama ini untuk tersambung ke perangkat downstream-nya.

Catatan

Istilah CA akar yang digunakan di seluruh artikel ini mengacu pada sertifikat otoritas paling atas dalam rantai sertifikat untuk solusi IoT Anda. Anda tidak perlu menggunakan akar sertifikat otoritas sertifikat sindikasi, atau akar otoritas sertifikat organisasi Anda. Seringkali, ini sebenarnya sertifikat OS perantara.

Prasyarat

  • Anda harus terbiasa dengan konsep dalam Memahami bagaimana Azure IoT Edge menggunakan sertifikat, khususnya bagaimana IoT Edge menggunakan sertifikat.

  • Perangkat IoT Edge.

    Jika Anda tidak menyiapkan perangkat IoT Edge, Anda dapat membuatnya di komputer virtual Azure. Ikuti langkah-langkah dalam salah satu artikel mulai cepat ini untuk Membuat perangkat Linux virtual atau Membuat perangkat Windows virtual.

  • Kemampuan untuk mengedit file config.toml konfigurasi IoT Edge mengikuti templat konfigurasi.

  • Jika Anda config.toml tidak didasarkan pada templat, buka templat dan gunakan panduan yang dikomentari untuk menambahkan bagian konfigurasi mengikuti struktur templat.

  • Jika Anda memiliki penginstalan IoT Edge baru yang belum dikonfigurasi, salin templat untuk menginisialisasi konfigurasi. Jangan gunakan perintah ini jika Anda memiliki konfigurasi yang sudah ada. Ini menimpa file.

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

Persyaratan format

Tip

  • Sertifikat dapat dikodekan dalam representasi biner yang disebut DER (Distinguished Encoding Rules), atau representasi tekstual yang disebut PEM (Privacy Enhanced Mail). Format PEM memiliki -----BEGIN CERTIFICATE----- header diikuti oleh DER yang dikodekan base64 diikuti oleh -----END CERTIFICATE----- footer.
  • Mirip dengan sertifikat, kunci privat dapat dikodekan dalam DER biner atau representasi tekstual PEM.
  • Karena PEM digambarkan, dimungkinkan juga untuk membangun PEM yang menggabungkan dan CERTIFICATE PRIVATE KEY secara berurutan dalam file yang sama.
  • Terakhir, sertifikat dan kunci privat dapat dikodekan bersama-sama dalam representasi biner yang disebut PKCS#12, yang dienkripsi dengan kata sandi opsional.

Ekstensi file bersifat arbitrer dan Anda perlu menjalankan file perintah atau melihat file memverifikasi jenisnya. Secara umum, file menggunakan konvensi ekstensi berikut:

  • .cer adalah sertifikat dalam bentuk DER atau PEM.
  • .pem adalah sertifikat, kunci privat, atau keduanya dalam bentuk PEM.
  • .pfx adalah file PKCS#12 .

IoT Edge memerlukan sertifikat dan kunci privat untuk menjadi:

  • Format PEM
  • Pisahkan file
  • Dalam kebanyakan kasus, dengan rantai penuh

Jika Anda mendapatkan .pfx file dari penyedia PKI, kemungkinan sertifikat dan kunci privat dikodekan bersama-sama dalam satu file. Verifikasi bahwa ini adalah jenis file PKCS#12 dengan menggunakan file perintah . Anda dapat mengonversi file PKCS#12 .pfx ke file PEM menggunakan perintah openssl pkcs12.

Jika penyedia PKI Anda menyediakan .cer file, mungkin berisi sertifikat .pfxyang sama dengan , atau mungkin sertifikat penerbitan (root) penyedia PKI. Untuk memverifikasi, periksa file dengan openssl x509 perintah . Jika sertifikat penerbit:

  • Jika dalam format DER (biner), konversikan ke PEM dengan openssl x509 -in cert.cer -out cert.pem.
  • Gunakan file PEM sebagai bundel kepercayaan. Untuk informasi selengkapnya tentang bundel kepercayaan, lihat bagian berikutnya.

Penting

Infrastruktur PKI Anda harus mendukung kunci RSA-2048 bit dan kunci EC P-256. Misalnya, server EST Anda harus mendukung jenis kunci ini. Anda dapat menggunakan jenis kunci lainnya, tetapi kami hanya menguji kunci RSA-2048 bit dan kunci EC P-256.

Persyaratan izin

Tabel berikut mencantumkan izin file dan direktori yang diperlukan untuk sertifikat IoT Edge. Direktori pilihan untuk sertifikat adalah /var/aziot/certs/ dan /var/aziot/secrets/ untuk kunci.

File atau direktori Izin Pemilik
/var/aziot/certs/ direktori sertifikat drwxr-xr-x (755) aziotcs
File sertifikat di /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ direktori kunci drwx------ (700) aziotks
File kunci di /var/aziot/secrets/ -wr------- (600) aziotks

Untuk membuat direktori, atur izin, dan atur pemilik, jalankan perintah berikut:

# If the certificate and keys directories don'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

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

Output daftar dengan kepemilikan dan izin yang benar mirip dengan output berikut:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

Mengelola CA akar tepercaya (bundel kepercayaan)

Menggunakan sertifikat otoritas sertifikat (CA) yang ditandatangani sendiri sebagai akar kepercayaan dengan IoT Edge dan modul dikenal sebagai bundel kepercayaan. Bundel kepercayaan tersedia untuk IoT Edge dan modul untuk berkomunikasi dengan server. Untuk mengonfigurasi bundel kepercayaan, tentukan jalur filenya di file konfigurasi IoT Edge.

  1. Dapatkan sertifikat OS akar dari penyedia PKI.

  2. Periksa apakah sertifikat memenuhi persyaratan format.

  3. Salin file PEM dan berikan akses layanan sertifikat IoT Edge. Misalnya, dengan /var/aziot/certs direktori:

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. Di file config.tomlkonfigurasi IoT Edge , temukan bagian Sertifikasi bundel kepercayaan. Jika bagian hilang, Anda dapat menyalinnya dari file templat konfigurasi.

    Tip

    Jika file konfigurasi belum ada di perangkat Anda, maka gunakan /etc/aziot/config.toml.edge.template sebagai templat untuk membuatnya.

  5. Atur kunci trust_bundle_cert ke lokasi file sertifikat.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Terapkan konfigurasi.

    sudo iotedge config apply
    

Menginstal OS akar ke penyimpanan sertifikat OS

Menginstal sertifikat ke file bundel kepercayaan membuatnya tersedia untuk modul kontainer tetapi tidak untuk menghosting modul seperti Azure Device Update atau Defender. Jika Anda menggunakan komponen tingkat host atau mengalami masalah TLS lainnya, instal juga sertifikat OS akar ke penyimpanan sertifikat sistem operasi:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

Mengimpor sertifikat dan file kunci privat

IoT Edge dapat menggunakan sertifikat dan file kunci privat yang ada untuk mengautentikasi atau membuktikan ke Azure, menerbitkan sertifikat server modul baru, dan mengautentikasi ke server EST. Untuk menginstalnya:

  1. Periksa sertifikat dan file kunci privat memenuhi persyaratan format.

  2. Salin file PEM ke perangkat IoT Edge tempat modul IoT Edge dapat memiliki akses. Misalnya, /var/aziot/ direktori .

    # If the certificate and keys directories don'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
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. Berikan kepemilikan ke layanan sertifikat dan layanan aziotcs aziotks kunci IoT Edge ke sertifikat dan kunci privat.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. Di config.toml, temukan bagian yang relevan untuk jenis sertifikat yang akan dikonfigurasi. Misalnya, Anda dapat mencari kata kunci cert.

  5. Menggunakan contoh dari templat konfigurasi, konfigurasikan sertifikat identitas perangkat atau file EDGE CA. Pola contohnya adalah:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Terapkan konfigurasi

    sudo iotedge config apply
    

Untuk mencegah kesalahan ketika sertifikat kedaluwarsa, ingatlah untuk memperbarui file dan konfigurasi secara manual sebelum sertifikat kedaluwarsa.

Contoh: Menggunakan file sertifikat identitas perangkat dari penyedia PKI

Minta sertifikat klien TLS dan kunci privat dari penyedia PKI Anda.

Persyaratan sertifikat identitas perangkat:

  • Ekstensi sertifikat klien standar: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • Pengidentifikasi kunci untuk membantu membedakan antara MENERBITKAN CA dengan CN yang sama untuk rotasi sertifikat CA.
    • subjectKeyIdentifier = hash
    • authorityKeyIdentifier = keyid:always,issuer:always

Pastikan bahwa nama umum (CN) cocok dengan ID perangkat IoT Edge yang terdaftar di IoT Hub atau ID pendaftaran dengan DPS. Misalnya, dalam sertifikat identitas perangkat berikut, Subject: CN = my-device adalah bidang penting yang harus cocok.

Contoh sertifikat identitas perangkat:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Tip

Untuk menguji tanpa akses ke file sertifikat yang disediakan oleh PKI, lihat Membuat sertifikat demo untuk menguji fitur perangkat untuk menghasilkan sertifikat identitas perangkat non-produksi berumur pendek dan kunci privat.

Contoh konfigurasi saat memprovisikan dengan IoT Hub:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Contoh konfigurasi saat provisi dengan DPS:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

Overhead dengan manajemen sertifikat manual dapat berisiko dan rawan kesalahan. Untuk produksi, disarankan menggunakan IoT Edge dengan manajemen sertifikat otomatis.

Mengelola EDGE CA

Edge CA memiliki dua mode berbeda:

  • Mulai cepat adalah perilaku default. Mulai cepat adalah untuk pengujian dan tidak cocok untuk produksi.
  • Mode produksi mengharuskan Anda menyediakan sumber Anda sendiri untuk sertifikat Ca Edge dan kunci privat.

Mulai Cepat Edge CA

Untuk membantu memulai, IoT Edge secara otomatis menghasilkan sertifikat EDGE CA saat dimulai untuk pertama kalinya secara default. Sertifikat yang ditandatangani sendiri ini hanya dimaksudkan untuk skenario pengembangan dan pengujian, bukan produksi. Secara default, sertifikat kedaluwarsa setelah 90 hari. Kedaluwarsa dapat dikonfigurasi. Perilaku ini disebut sebagai mulai cepat Edge CA.

Quickstart Edge CA memungkinkan edgeHub dan modul IoT Edge lainnya memiliki sertifikat server yang valid saat IoT Edge pertama kali diinstal tanpa konfigurasi. Sertifikat diperlukan karena edgeHub modul atau perangkat hilir perlu membangun saluran komunikasi yang aman. Tanpa mulai cepat Edge CA, memulai akan jauh lebih sulit karena Anda harus memberikan sertifikat server yang valid dari penyedia PKI atau dengan alat seperti openssl.

Penting

Jangan pernah menggunakan MULAI cepat Edge CA untuk produksi karena sertifikat yang dihasilkan secara lokal di dalamnya tidak terhubung ke PKI.

Keamanan identitas berbasis sertifikat berasal dari PKI yang dioperasikan dengan baik (infrastruktur) di mana sertifikat (dokumen) hanya merupakan komponen. PKI yang dioperasikan dengan baik memungkinkan definisi, aplikasi, manajemen, dan penegakan kebijakan keamanan untuk disertakan tetapi tidak terbatas pada penerbitan sertifikat, pencabutan, dan manajemen siklus hidup.

Menyesuaikan masa pakai untuk mulai cepat Edge CA

Untuk mengonfigurasi kedaluwarsa sertifikat ke sesuatu selain 90 hari default, tambahkan nilai dalam hari ke bagian Sertifikat Edge CA (Quickstart) dari file konfigurasi.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Hapus konten /var/lib/aziot/certd/certs folder dan /var/lib/aziot/keyd/keys untuk menghapus sertifikat yang dibuat sebelumnya lalu terapkan konfigurasi.

Memperpanjang MULAI cepat Edge CA

Secara default, IoT Edge secara otomatis memperbarui sertifikat CA Edge mulai cepat saat berada di 80% dari masa pakai sertifikat. Misalnya, jika sertifikat memiliki masa pakai 90 hari, IoT Edge secara otomatis meregenerasi sertifikat CA Edge pada 72 hari sejak penerbitan.

Untuk mengubah logika perpanjangan otomatis, tambahkan pengaturan berikut ke bagian sertifikat EDGE CA di config.toml. Contohnya:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

Edge CA dalam produksi

Setelah Anda pindah ke skenario produksi, atau Anda ingin membuat perangkat gateway, Anda tidak dapat lagi menggunakan MULAI cepat Edge CA.

Salah satu opsinya adalah menyediakan sertifikat Anda sendiri dan mengelolanya secara manual. Namun, untuk menghindari proses manajemen sertifikat manual berisiko dan rawan kesalahan, gunakan server EST jika memungkinkan.

Perhatian

Nama umum (CN) sertifikat Ca Edge tidak dapat mencocokkan parameter nama host perangkat yang ditentukan dalam file konfigurasi perangkat config.toml atau ID perangkat yang terdaftar di IoT Hub.

Merencanakan perpanjangan CA Azure Stack Edge

Saat sertifikat CA Edge diperpanjang, semua sertifikat yang dikeluarkannya seperti sertifikat server modul diregenerasi. Untuk memberikan modul sertifikat server baru, IoT Edge memulai ulang semua modul saat sertifikat Edge CA diperpanjang.

Untuk meminimalkan potensi efek negatif dari mulai ulang modul, rencanakan untuk memperbarui sertifikat CA Edge pada waktu tertentu (misalnya, threshold = "10d") dan memberi tahu dependen solusi tentang waktu henti.

Contoh: gunakan file sertifikat Azure Stack Edge CA dari penyedia PKI

Minta file berikut dari penyedia PKI Anda:

  • Sertifikat OS akar PKI
  • Sertifikat penerbitan/CA dan kunci privat terkait

Agar sertifikat CA penerbit menjadi Edge CA, sertifikat harus memiliki ekstensi ini:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

Contoh sertifikat CA Edge hasil:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

Setelah Anda menerima file terbaru, perbarui bundel kepercayaan:

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

Kemudian, konfigurasikan IoT Edge untuk menggunakan sertifikat dan file kunci privat:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

Jika Anda telah menggunakan sertifikat lain untuk IoT Edge pada perangkat sebelumnya, hapus file di /var/lib/aziot/certd/certs dan kunci privat yang terkait dengan sertifikat (tidak semua kunci) di /var/lib/aziot/keyd/keys. IoT Edge membuatnya kembali dengan sertifikat CA baru yang Anda berikan.

Pendekatan ini mengharuskan Anda memperbarui file secara manual saat sertifikat kedaluwarsa. Untuk menghindari masalah ini, pertimbangkan untuk menggunakan EST untuk manajemen otomatis.

Manajemen sertifikat otomatis dengan server EST

IoT Edge dapat berinteraksi dengan pendaftaran melalui server Secure Transport (EST) untuk penerbitan dan perpanjangan sertifikat otomatis. Menggunakan EST direkomendasikan untuk produksi karena menggantikan kebutuhan akan manajemen sertifikat manual, yang dapat berisiko dan rawan kesalahan. Ini dapat dikonfigurasi secara global dan ditimpa untuk setiap jenis sertifikat.

Dalam skenario ini, sertifikat bootstrap dan kunci privat diharapkan berumur panjang dan berpotensi diinstal pada perangkat selama manufaktur. IoT Edge menggunakan kredensial bootstrap untuk mengautentikasi ke server EST agar permintaan awal menerbitkan sertifikat identitas untuk permintaan berikutnya dan untuk autentikasi ke DPS atau IoT Hub.

  1. Dapatkan akses ke server EST. Jika Anda tidak memiliki server EST, gunakan salah satu opsi berikut untuk mulai menguji:

  2. Dalam file config.tomlkonfigurasi perangkat IoT Edge , konfigurasikan jalur ke sertifikat akar tepercaya yang digunakan IoT Edge untuk memvalidasi sertifikat TLS server EST. Langkah ini bersifat opsional jika server EST memiliki sertifikat TLS akar tepercaya publik.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. Berikan URL default untuk server EST. Di config.toml, tambahkan bagian berikut dengan URL server EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. Untuk mengonfigurasi sertifikat EST untuk autentikasi, tambahkan bagian berikut dengan jalur ke sertifikat dan kunci privat:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. Terapkan perubahan konfigurasi.

    sudo iotedge config apply
    

Pengaturan di [cert_issuance.est.identity_auto_renew] tercakup di bagian berikutnya.

Autentikasi nama pengguna dan kata sandi

Jika autentikasi ke server EST menggunakan sertifikat tidak dimungkinkan, Anda dapat menggunakan rahasia bersama atau nama pengguna dan kata sandi sebagai gantinya.

[cert_issuance.est.auth]
username = "username"
password = "password"

Mengonfigurasi parameter perpanjangan otomatis

Alih-alih mengelola file sertifikat secara manual, IoT Edge memiliki kemampuan bawaan untuk mendapatkan dan memperbarui sertifikat sebelum kedaluwarsa. Perpanjangan sertifikat memerlukan metode penerbitan yang dapat dikelola IoT Edge. Pendaftaran melalui server Secure Transport (EST) adalah satu metode penerbitan, tetapi IoT Edge juga dapat memperbarui CA mulai cepat secara default secara otomatis. Perpanjangan sertifikat dikonfigurasi per jenis sertifikat.

  1. Di config.toml, temukan bagian yang relevan untuk jenis sertifikat yang akan dikonfigurasi. Misalnya, Anda dapat mencari kata kunci auto_renew.

  2. Menggunakan contoh dari templat konfigurasi, konfigurasikan sertifikat identitas perangkat, Edge CA, atau sertifikat identitas EST. Pola contohnya adalah:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Terapkan konfigurasi

    sudo iotege config apply
    

Tabel berikut ini mencantumkan apa yang dilakukan setiap opsi auto_renew :

Parameter Deskripsi
rotate_key Mengontrol apakah kunci privat harus diputar saat IoT Edge memperbarui sertifikat.
threshold Mengatur kapan IoT Edge harus mulai memperbarui sertifikat. Ini dapat ditentukan sebagai:
- Persentase: bilangan bulat antara 0 dan 100 diikuti oleh %. Perpanjangan dimulai relatif terhadap masa pakai sertifikat. Misalnya, saat diatur ke 80%, sertifikat yang berlaku selama 100 hari mulai diperpanjang pada 20 hari sebelum kedaluwarsa.
- Waktu absolut: bilangan bulat diikuti oleh min (menit) atau day (hari). Perpanjangan dimulai relatif terhadap waktu kedaluwarsa sertifikat. Misalnya, ketika diatur ke selama empat hari atau 10min selama 10 menit, sertifikat mulai diperpanjang pada saat itu sebelum kedaluwarsa4day. Untuk menghindari kesalahan konfigurasi yang tidak disengaja di mana threshold lebih besar dari masa pakai sertifikat, sebaiknya gunakan persentase jika memungkinkan.
retry mengontrol seberapa sering perpanjangan harus dicoba kembali pada kegagalan. Seperti threshold, hal ini juga dapat ditentukan sebagai persentase atau waktu absolut menggunakan format yang sama.

Contoh: memperbarui sertifikat identitas perangkat secara otomatis dengan EST

Untuk menggunakan EST dan IoT Edge untuk penerbitan dan perpanjangan sertifikat identitas perangkat otomatis, yang direkomendasikan untuk produksi, IoT Edge harus menyediakan sebagai bagian dari grup pendaftaran berbasis CA DPS. Contohnya:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

Pembaruan otomatis untuk Edge CA harus diaktifkan saat metode penerbitan diatur ke EST. Kedaluwarsa CA Edge harus dihindari karena merusak banyak fungsionalitas IoT Edge. Jika situasi memerlukan kontrol total atas siklus hidup sertifikat Azure Stack Edge CA, gunakan metode manajemen CA Edge manual sebagai gantinya.

Jangan gunakan EST atau auto_renew dengan metode provisi lain, termasuk provisi X.509 manual dengan IoT Hub dan DPS dengan pendaftaran individual. IoT Edge tidak dapat memperbarui thumbprint sertifikat di Azure saat sertifikat diperbarui, yang mencegah IoT Edge tersambung kembali.

Contoh: manajemen CA Edge otomatis dengan EST

Gunakan penerbitan dan perpanjangan EST Edge CA otomatis untuk produksi. Setelah server EST dikonfigurasi, Anda dapat menggunakan pengaturan global, atau menimpanya mirip dengan contoh ini:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

Sertifikat server modul

Edge Daemon mengeluarkan server modul dan sertifikat identitas untuk digunakan oleh modul Edge. Ini tetap menjadi tanggung jawab modul Edge untuk memperbarui identitas dan sertifikat server mereka sesuai kebutuhan.

Perpanjangan

Sertifikat server dapat dikeluarkan dari sertifikat EDGE CA. Terlepas dari metode penerbitan, sertifikat ini harus diperbarui oleh modul. Jika Mengembangkan modul kustom, Anda harus menerapkan logika perpanjangan dalam modul Anda.

Modul edgeHub mendukung fitur perpanjangan sertifikat. Anda dapat mengonfigurasi perpanjangan sertifikat server modul edgeHub menggunakan variabel lingkungan berikut:

  • ServerCertificateRenewAfterInMs: Mengatur durasi dalam milidetik ketika sertifikat server edgeHub diperbarui terlepas dari waktu kedaluwarsa sertifikat.
  • MaxCheckCertExpiryInMs: Mengatur durasi dalam milidetik saat layanan edgeHub memeriksa kedaluwarsa sertifikat server edgeHub . Jika variabel diatur, pemeriksaan terjadi terlepas dari waktu kedaluwarsa sertifikat.

Untuk informasi selengkapnya tentang variabel lingkungan, lihat Variabel lingkungan EdgeHub dan EdgeAgent.

Perubahan dalam 1.2 dan yang lebih baru

  • Sertifikat OS Perangkat diganti namanya menjadi sertifikat Ca Edge.
  • Sertifikat OS beban kerja tidak digunakan lagi. Sekarang manajer keamanan IoT Edge menghasilkan sertifikat server hub edgeHub IoT Edge langsung dari sertifikat CA Edge, tanpa sertifikat CA beban kerja menengah di antara mereka.
  • File konfigurasi default memiliki nama dan lokasi baru, dari /etc/iotedge/config.yaml ke /etc/aziot/config.toml secara default. Perintah iotedge config import dapat digunakan untuk membantu memigrasikan informasi konfigurasi dari lokasi dan sintaksis lama ke lokasi dan sintaksis baru.

Langkah berikutnya

Menginstal sertifikat pada perangkat IoT Edge adalah langkah yang diperlukan sebelum menyebarkan solusi Anda dalam produksi. Pelajari selengkapnya tentang cara Menyiapkan penyebaran solusi IoT Edge dalam produksi.