IoT Edge sertifikalarını yönetme

Şunlar için geçerlidir: IoT Edge 1.5 onay işareti IoT Edge 1.5 IoT Edge 1.4 onay işareti IoT Edge 1.4

Önemli

IoT Edge 1.5 LTS ve IoT Edge 1.4 LTS desteklenen sürümlerdir. IoT Edge 1.4 LTS, 12 Kasım 2024'te kullanım ömrü sona erer. Önceki bir sürümdeyseniz bkz. IoT Edge’i güncelleştirme.

Tüm IoT Edge cihazları çalışma zamanı ile cihazda çalışan modüller arasında güvenli bağlantılar oluşturmak için sertifikaları kullanır. Ağ geçidi olarak işlevli IoT Edge cihazları da aşağı akış cihazlarına bağlanmak için aynı sertifikaları kullanır.

Not

Bu makalede kullanılan kök CA terimi, IoT çözümünüz için sertifika zincirinde en üstteki yetkilinin sertifikasını ifade eder. Bir genel sertifika yetkilisinin sertifika kökünü veya kuruluşunuzun sertifika yetkilisinin kökünü kullanmanız gerekmez. Genellikle, aslında bir ara CA sertifikasıdır.

Önkoşullar

  • Azure IoT Edge'in sertifikaları nasıl kullandığını, özellikle de IoT Edge'in sertifikaları nasıl kullandığını anlama başlığındaki kavramlar hakkında bilgi sahibi olmanız gerekir.

  • IoT Edge cihazı.

    Ayarlanmış bir IoT Edge cihazınız yoksa Azure sanal makinesinde bir cihaz oluşturabilirsiniz. Sanal Linux cihazı oluşturma veya Sanal Windows cihazı oluşturma için bu hızlı başlangıç makalelerinden birinde yer alan adımları izleyin.

  • Yapılandırma şablonunun ardından IoT Edge yapılandırma dosyasını config.toml düzenleyebilme.

  • Şablonunuz config.toml şablonu temel almıyorsa, şablonu açın ve açıklamalı kılavuzu kullanarak şablonun yapısını izleyen yapılandırma bölümleri ekleyin.

  • Yapılandırılmamış yeni bir IoT Edge yüklemeniz varsa, yapılandırmayı başlatmak için şablonu kopyalayın. Mevcut bir yapılandırmanız varsa bu komutu kullanmayın. Dosyanın üzerine yazar.

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

Biçim gereksinimleri

İpucu

  • Sertifika, DER (Ayırt Edici Kodlama Kuralları) adlı ikili gösterimde veya PEM (Privacy Enhanced Mail) adlı metinsel gösterimde kodlanabilir. PEM biçiminde üst -----BEGIN CERTIFICATE----- bilgi, ardından base64 kodlu DER ve ardından bir -----END CERTIFICATE----- alt bilgi bulunur.
  • Sertifikaya benzer şekilde, özel anahtar ikili DER veya metin gösterimi PEM'sinde kodlanabilir.
  • PEM çizgili olduğundan, hem hem PRIVATE KEY de CERTIFICATE öğesini aynı dosyada sıralı olarak birleştiren bir PEM oluşturmak da mümkündür.
  • Son olarak, sertifika ve özel anahtar, isteğe bağlı bir parolayla şifrelenmiş PKCS#12 adlı ikili gösterimde birlikte kodlanabilir.

Dosya uzantıları rastgeledir ve komutunu çalıştırmanız file veya dosyayı görüntülemeniz ve türü doğrulamanız gerekir. Genel olarak, dosyalar aşağıdaki uzantı kurallarını kullanır:

  • .cer DER veya PEM biçiminde bir sertifikadır.
  • .pem bir sertifika, özel anahtar veya PEM biçiminde her ikisi de olabilir.
  • .pfx bir PKCS#12 dosyasıdır.

IoT Edge için sertifikanın ve özel anahtarın şunlar olması gerekir:

  • PEM biçimi
  • Dosyaları ayırma
  • Çoğu durumda, tam zincirle

PKI sağlayıcınızdan bir .pfx dosya alırsanız, büyük olasılıkla sertifika ve özel anahtar tek bir dosyada birlikte kodlanmıştır. komutunu kullanarak file bunun bir PKCS#12 dosya türü olduğunu doğrulayın. openssl pkcs12 komutunu kullanarak pkCS#12 .pfx dosyasını PEM dosyalarına dönüştürebilirsiniz.

PKI sağlayıcınız bir .cer dosya sağlıyorsa, ile aynı sertifikayı .pfxiçerebilir veya PKI sağlayıcısının veren (kök) sertifikası olabilir. Doğrulamak için, komutuyla openssl x509 dosyayı inceleyin. Sertifika veren sertifikaysa:

  • DER (ikili) biçimindeyse, ile openssl x509 -in cert.cer -out cert.pemPEM'ye dönüştürün.
  • GÜVEN paketi olarak PEM dosyasını kullanın. Güven paketi hakkında daha fazla bilgi için sonraki bölüme bakın.

Önemli

PKI altyapınız RSA-2048 bit anahtarlarını ve EC P-256 anahtarlarını desteklemelidir. Örneğin, EST sunucularınız bu anahtar türlerini desteklemelidir. Diğer anahtar türlerini kullanabilirsiniz, ancak biz yalnızca RSA-2048 bit anahtarlarını ve EC P-256 anahtarlarını test ederiz.

İzin gereksinimleri

Aşağıdaki tabloda IoT Edge sertifikaları için gereken dosya ve dizin izinleri listelanmıştır. Sertifikalar için tercih edilen dizin ve /var/aziot/secrets/ anahtarlarıdır/var/aziot/certs/.

Dosya veya dizin İzinler Sahip
/var/aziot/certs/ certificates dizini drwxr-xr-x (755) aziotcs
uygulamasındaki sertifika dosyaları /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ keys dizini drwx------ (700) aziotks
içindeki anahtar dosyaları /var/aziot/secrets/ -wr------- (600) aziotks

Dizinleri oluşturmak, izinleri ayarlamak ve sahibini ayarlamak için aşağıdaki komutları çalıştırın:

# 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

Doğru sahiplik ve izin içeren listenin çıktısı aşağıdaki çıkışa benzer:

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

Güvenilen kök CA'ları yönetme (güven paketi)

IoT Edge ve modüller ile güven kökü olarak otomatik olarak imzalanan sertifika yetkilisi (CA) sertifikası kullanmak güven paketi olarak bilinir. Güven paketi, IoT Edge ve modüllerin sunucularla iletişim kurması için kullanılabilir. Güven paketini yapılandırmak için IoT Edge yapılandırma dosyasında dosya yolunu belirtin.

  1. Bir PKI sağlayıcısından kök CA sertifikasını alın.

  2. Sertifikanın biçim gereksinimlerini karşılayıp karşılamadığını denetleyin.

  3. PEM dosyasını kopyalayın ve IoT Edge'in sertifika hizmeti erişimi verin. Örneğin, dizin ile /var/aziot/certs :

    # 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. IoT Edge yapılandırma dosyasında config.tomlGüven paketi sertifikası bölümünü bulun. Bölüm eksikse, yapılandırma şablonu dosyasından kopyalayabilirsiniz.

    İpucu

    Yapılandırma dosyası henüz cihazınızda yoksa şablon olarak kullanarak /etc/aziot/config.toml.edge.template oluşturun.

  5. trust_bundle_cert Anahtarı sertifika dosyası konumuna ayarlayın.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. Yapılandırmayı uygulayın.

    sudo iotedge config apply
    

kök CA'yi işletim sistemi sertifika deposuna yükleme

Sertifikayı güven paketi dosyasına yüklemek kapsayıcı modüllerinin kullanımına sunulur ancak Azure Cihaz Güncelleştirmesi veya Defender gibi modülleri barındırmaz. Konak düzeyi bileşenleri kullanıyorsanız veya diğer TLS sorunlarıyla karşılaşırsanız, kök CA sertifikasını da işletim sistemi sertifika deposuna yükleyin:

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

sudo update-ca-certificates

Sertifika ve özel anahtar dosyalarını içeri aktarma

IoT Edge, Azure'da kimlik doğrulaması yapmak veya doğrulamak, yeni modül sunucusu sertifikaları vermek ve EST sunucularında kimlik doğrulaması yapmak için mevcut sertifikaları ve özel anahtar dosyalarını kullanabilir. Bunları yüklemek için:

  1. Sertifika ve özel anahtar dosyalarının biçim gereksinimlerini karşıladığından denetleyin.

  2. PEM dosyasını IoT Edge modüllerinin erişebileceği IoT Edge cihazına kopyalayın. Örneğin, /var/aziot/ dizin.

    # 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. IoT Edge'in sertifika hizmetine ve anahtar hizmetine aziotcs aziotks sırasıyla sertifikaya ve özel anahtara sahiplik verin.

    # 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. içinde config.toml, yapılandırılan sertifika türü için ilgili bölümü bulun. Örneğin, anahtar sözcüğünü certarayabilirsiniz.

  5. Yapılandırma şablonundaki örneği kullanarak cihaz kimliği sertifikasını veya Edge CA dosyalarını yapılandırın. Örnek desen:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. Yapılandırmayı uygulama

    sudo iotedge config apply
    

Sertifikaların süresi dolduğunda hataları önlemek için, sertifika süre sonu öncesinde dosyaları ve yapılandırmayı el ile güncelleştirmeyi unutmayın.

Örnek: PKI sağlayıcısından cihaz kimliği sertifika dosyalarını kullanma

PKI sağlayıcınızdan bir TLS istemci sertifikası ve özel anahtar isteyin.

Cihaz kimliği sertifika gereksinimleri:

  • Standart istemci sertifikası uzantıları: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • CA sertifika döndürmesi için aynı CN'ye sahip CA'ları veren CA'ları ayırt etmeye yardımcı olan anahtar tanımlayıcıları.
    • subjectKeyIdentifier = karma
    • authorityKeyIdentifier = keyid:always,issuer:always

Ortak adın (CN) IoT Hub'a kayıtlı IoT Edge cihaz kimliğiyle veya DPS ile kayıt kimliğiyle eşleştiğinden emin olun. Örneğin, aşağıdaki cihaz kimliği sertifikasında eşleşmesi Subject: CN = my-device gereken önemli alan yer alır.

Örnek cihaz kimliği sertifikası:

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

İpucu

PKI tarafından sağlanan sertifika dosyalarına erişim olmadan test etmek için bkz . Kısa süreli üretim dışı cihaz kimlik sertifikası ve özel anahtar oluşturmak üzere cihaz özelliklerini test etmek için tanıtım sertifikaları oluşturma.

IoT Hub ile sağlama sırasında yapılandırma örneği:

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

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

DPS ile sağlama sırasında yapılandırma örneği:

[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"

El ile sertifika yönetimiyle ilgili ek yük riskli ve hataya açık olabilir. Üretim için IoT Edge'in otomatik sertifika yönetimiyle kullanılması önerilir.

Edge CA'sı yönetme

Edge CA'nın iki farklı modu vardır:

  • Hızlı başlangıç varsayılan davranıştır. Hızlı başlangıç test amaçlıdır ve üretim için uygun değildir .
  • Üretim modu, Edge CA sertifikası ve özel anahtarı için kendi kaynağınızı sağlamanızı gerektirir.

Hızlı Başlangıç Edge CA'sı

Kullanmaya başlamaya yardımcı olmak için IoT Edge, varsayılan olarak ilk kez başlatıldığında otomatik olarak bir Edge CA sertifikası oluşturur. Otomatik olarak imzalanan bu sertifika, üretime değil yalnızca geliştirme ve test senaryolarına yöneliktir. Varsayılan olarak, sertifikanın süresi 90 gün sonra dolar. Süre sonu yapılandırılabilir. Bu davranış, hızlı başlangıç Edge CA'sı olarak adlandırılır.

Hızlı Başlangıç Edge CA'sı , IoT Edge yapılandırma olmadan ilk yüklendiğinde ve diğer IoT Edge modüllerinin geçerli bir sunucu sertifikasına sahip olmasını sağlar edgeHub . Modüllerin veya aşağı akış cihazlarının güvenli iletişim kanalları oluşturması gerektiğinden sertifika gereklidiredgeHub. Hızlı başlangıç Edge CA'sı olmadan, bir PKI sağlayıcısından veya gibi opensslaraçlarla geçerli bir sunucu sertifikası sağlamanız gerekeceğinden kullanmaya başlamak önemli ölçüde daha zor olabilir.

Önemli

Yerel olarak oluşturulan sertifika bir PKI'ya bağlı olmadığından, üretim için hızlı başlangıç Edge CA'sını asla kullanmayın.

Sertifika tabanlı kimliğin güvenliği, sertifikanın (belge) yalnızca bir bileşen olduğu iyi çalıştırılan bir PKI'dan (altyapı) türetilir. İyi çalıştırılan bir PKI, güvenlik ilkelerinin tanımlanmasını, uygulanmasını, yönetilmesini ve uygulanmasının sertifika verme, iptal etme ve yaşam döngüsü yönetimiyle sınırlı olmamak üzere eklenmesini sağlar.

Hızlı başlangıç Edge CA'sı için kullanım ömrünü özelleştirme

Sertifika süre sonunu varsayılan 90 gün dışında bir değerle yapılandırmak için, gün olarak değerini yapılandırma dosyasının Edge CA sertifikası (Hızlı Başlangıç) bölümüne ekleyin.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

Daha önce oluşturulmuş sertifikaları kaldırmak için ve /var/lib/aziot/keyd/keys klasörlerinin /var/lib/aziot/certd/certs içeriğini silin ve ardından yapılandırmayı uygulayın.

Hızlı başlangıç Edge CA'sı yenileme

Varsayılan olarak IoT Edge, sertifika ömrünün %80'indeyken hızlı başlangıç Edge CA sertifikasını otomatik olarak yeniler. Örneğin, bir sertifikanın 90 günlük ömrü varsa IoT Edge, Edge CA sertifikasını verme tarihinden itibaren 72 gün içinde otomatik olarak yeniden oluşturur.

Otomatik yenileme mantığını değiştirmek için, içindeki Edge CA sertifikası bölümüne config.tomlaşağıdaki ayarları ekleyin. Örneğin:

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

Üretimde Edge CA

Bir üretim senaryosuna geçtikten veya ağ geçidi cihazı oluşturmak istediğinizde, artık hızlı başlangıç Edge CA'sını kullanamazsınız.

Seçeneklerden biri kendi sertifikalarınızı sağlamak ve bunları el ile yönetmektir. Ancak, riskli ve hataya açık el ile sertifika yönetimi işleminden kaçınmak için mümkün olduğunda bir EST sunucusu kullanın.

Dikkat

Edge CA sertifikasının ortak adı (CN), cihazın yapılandırma dosyasında config.toml veya IoT Hub'a kayıtlı cihaz kimliğinde tanımlanan cihaz ana bilgisayar adı parametresiyle eşleşemez.

Edge CA yenilemesini planlama

Edge CA sertifikası yenilendiğinde, modül sunucusu sertifikaları gibi verilen tüm sertifikalar yeniden oluşturulur. Modüllere yeni sunucu sertifikaları vermek için, Edge CA sertifikası yenilendiğinde IoT Edge tüm modülleri yeniden başlatır.

Modül yeniden başlatmalarının olası olumsuz etkilerini en aza indirmek için Edge CA sertifikasını belirli bir zamanda (örneğin, threshold = "10d") yenilemeyi planlayın ve çözümün bağımlılarını kapalı kalma süresi hakkında bilgilendirin.

Örnek: PKI sağlayıcısından Edge CA sertifika dosyalarını kullanma

PKI sağlayıcınızdan aşağıdaki dosyaları isteyin:

  • PKI'nın kök CA sertifikası
  • Veren/CA sertifikası ve ilişkili özel anahtar

Veren CA sertifikasının Edge CA olması için şu uzantılara sahip olması gerekir:

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

Sonuç Edge CA sertifikası örneği:

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

En son dosyaları aldıktan sonra güven paketini güncelleştirin:

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

Ardından IoT Edge'i sertifika ve özel anahtar dosyalarını kullanacak şekilde yapılandırın:

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

Daha önce cihazda IoT Edge için başka sertifikalar kullandıysanız içindeki dosyaları /var/lib/aziot/certd/certs ve içindeki sertifikalarla ilişkili özel anahtarları (tüm anahtarlarla değil ) /var/lib/aziot/keyd/keyssilin. IoT Edge, bunları sağladığınız yeni CA sertifikasıyla yeniden oluşturur.

Bu yaklaşım, sertifikanın süresi dolduğunda dosyaları el ile güncelleştirmenizi gerektirir. Bu sorunu önlemek için otomatik yönetim için EST kullanmayı göz önünde bulundurun.

EST sunucusu ile otomatik sertifika yönetimi

IoT Edge, otomatik sertifika verme ve yenileme için Güvenli Aktarım Üzerinden Kayıt (EST) sunucusuyla arabirim oluşturabilir. Riskli ve hataya açık olabilecek el ile sertifika yönetimi gereksiniminin yerini aldığı için üretim için EST kullanılması önerilir. Genel olarak yapılandırılabilir ve her sertifika türü için geçersiz kılınabilir.

Bu senaryoda bootstrap sertifikasının ve özel anahtarın uzun ömürlü olması ve üretim sırasında cihaza yüklenmesi beklenir. IoT Edge, ilk isteğin sonraki istekler için kimlik sertifikası verme ve DPS veya IoT Hub kimlik doğrulaması için EST sunucusunda kimlik doğrulaması yapmak için bootstrap kimlik bilgilerini kullanır.

  1. EST sunucusuna erişim elde edin. EST sunucunuz yoksa test etmeye başlamak için aşağıdaki seçeneklerden birini kullanın:

  2. IoT Edge cihaz yapılandırma dosyasında config.toml, IoT Edge'in EST sunucusunun TLS sertifikasını doğrulamak için kullandığı güvenilir bir kök sertifikanın yolunu yapılandırın. EST sunucusunun genel olarak güvenilen bir kök TLS sertifikası varsa bu adım isteğe bağlıdır.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. EST sunucusu için varsayılan bir URL sağlayın. içinde config.toml, EST sunucusunun URL'si ile aşağıdaki bölümü ekleyin:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. EST sertifikasını kimlik doğrulaması için yapılandırmak için sertifika ve özel anahtarın yolunu içeren aşağıdaki bölümü ekleyin:

    [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. Yapılandırma değişikliklerini uygulayın.

    sudo iotedge config apply
    

içindeki [cert_issuance.est.identity_auto_renew] ayarlar sonraki bölümde ele alınmıştır.

Kullanıcı adı ve parola kimlik doğrulaması

Sertifika kullanarak EST sunucusunda kimlik doğrulaması mümkün değilse, bunun yerine paylaşılan bir gizli dizi veya kullanıcı adı ve parola kullanabilirsiniz.

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

Otomatik yenileme parametrelerini yapılandırma

IoT Edge, sertifika dosyalarını el ile yönetmek yerine, süresi dolmadan önce sertifikaları alma ve yenileme özelliğine sahiptir. Sertifika yenileme, IoT Edge'in yönetebileceği bir verme yöntemi gerektirir. Güvenli Aktarım (EST) sunucusu üzerinden kayıt, bir verme yöntemidir, ancak IoT Edge de hızlı başlangıç CA'sını varsayılan olarak otomatik olarak yenileyebilir. Sertifika yenileme, sertifika türü başına yapılandırılır.

  1. içinde config.toml, yapılandırılan sertifika türü için ilgili bölümü bulun. Örneğin, anahtar sözcüğünü auto_renewarayabilirsiniz.

  2. Yapılandırma şablonundaki örneği kullanarak cihaz kimliği sertifikasını, Edge CA'yı veya EST kimlik sertifikalarını yapılandırın. Örnek desen:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. Yapılandırmayı uygulama

    sudo iotege config apply
    

Aşağıdaki tabloda, içindeki her seçeneğin auto_renew ne yaptığı listelenir:

Parametre Açıklama
rotate_key IoT Edge sertifikayı yenilediğinde özel anahtarın döndürülüp döndürülmemesi gerektiğini denetler.
threshold IoT Edge'in sertifikayı yenilemeye başlaması gereken zamanları ayarlar. Şu şekilde belirtilebilir:
- Yüzde: ile arasında 0 ve 100 ardından %gelen tamsayı. Yenileme, sertifika ömrüne göre başlar. Örneğin, olarak 80%ayarlandığında, 100 gün boyunca geçerli olan bir sertifika süresi dolmadan 20 gün önce yenilenmeye başlar.
- Mutlak saat: tamsayı ve min ardından (dakika) veya day (gün). Yenileme, sertifika süre sonu süresine göre başlar. Örneğin, dört gün veya 10min 10 dakika olarak ayarlandığında4day, sertifika süresi dolmadan önce bu zamanda yenilenmeye başlar. değerinin sertifika ömründen daha büyük olduğu threshold yanlışlıkla yanlış yapılandırmayı önlemek için mümkün olduğunda bunun yerine yüzde kullanmanızı öneririz.
retry , yenileme işleminin hata durumunda ne sıklıkta yeniden denenmesi gerektiğini denetler. gibithreshold, aynı biçim kullanılarak yüzde veya mutlak süre olarak da belirtilebilir.

Örnek: CIHAZ kimliği sertifikalarını EST ile otomatik olarak yenileme

Üretim için önerilen otomatik cihaz kimliği sertifikası verme ve yenileme için EST ve IoT Edge'i kullanmak için IoT Edge'in DPS CA tabanlı bir kayıt grubunun parçası olarak sağlanması gerekir. Örneğin:

## 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%"

Verme yöntemi EST olarak ayarlandığında Edge CA için otomatik yenileme etkinleştirilmelidir. Birçok IoT Edge işlevini bozan Edge CA'sı süre sonu kaçınılmalıdır. Bir durum Edge CA sertifika yaşam döngüsü üzerinde tam denetim gerektiriyorsa, bunun yerine el ile Edge CA yönetim yöntemini kullanın.

IOT Hub ile el ile X.509 sağlama ve bireysel kayıtla DPS dahil olmak üzere EST veya auto_renew diğer sağlama yöntemleriyle kullanmayın. IoT Edge, bir sertifika yenilendiğinde Azure'da sertifika parmak izlerini güncelleştiremez ve bu da IoT Edge'in yeniden bağlanmasını engeller.

Örnek: EST ile otomatik Edge CA yönetimi

Üretim için EST otomatik Edge CA verme ve yenilemeyi kullanın. EST sunucusu yapılandırıldıktan sonra genel ayarı kullanabilir veya bu örneğe benzer şekilde geçersiz kılabilirsiniz:

[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%"

Modül sunucusu sertifikaları

Edge Daemon, Edge modülleri tarafından kullanılmak üzere modül sunucusu ve kimlik sertifikaları sağlar. Gerektiğinde kimliklerini ve sunucu sertifikalarını yenilemek Edge modüllerinin sorumluluğundadır.

Yenileme

Sunucu sertifikaları Edge CA sertifikasından verilebilir. Verme yöntemi ne olursa olsun, bu sertifikaların modül tarafından yenilenmesi gerekir. Özel bir modül geliştirirseniz, modülünüzde yenileme mantığını uygulamanız gerekir.

edgeHub modülü sertifika yenileme özelliğini destekler. EdgeHub modülü sunucu sertifikası yenilemesini aşağıdaki ortam değişkenlerini kullanarak yapılandırabilirsiniz:

  • ServerCertificateRenewAfterInMs: EdgeHub sunucu sertifikasının süresi sona erme süresinden bağımsız olarak yenilendiğinde süreyi milisaniye olarak ayarlar.
  • MaxCheckCertExpiryInMs: EdgeHub hizmeti EdgeHub sunucu sertifikasının süre sonunu denetlediğinde süreyi milisaniye olarak ayarlar. Değişken ayarlanırsa, sertifika süre sonu süresinden bağımsız olarak denetim gerçekleşir.

Ortam değişkenleri hakkında daha fazla bilgi için bkz . EdgeHub ve EdgeAgent ortam değişkenleri.

1.2 ve sonraki sürümlerdeki değişiklikler

  • Cihaz CA sertifikası Edge CA sertifikası olarak yeniden adlandırıldı.
  • İş yükü CA sertifikası kullanım dışı bırakıldı. IoT Edge güvenlik yöneticisi, ara iş yükü CA sertifikası olmadan IoT Edge hub edgeHub sunucu sertifikasını doğrudan Edge CA sertifikasından oluşturur.
  • Varsayılan yapılandırma dosyasının adı ve konumu varsayılan olarak ile /etc/iotedge/config.yaml /etc/aziot/config.toml arasındadır. Komutu, iotedge config import yapılandırma bilgilerinin eski konumdan ve söz diziminden yenisine geçirilmesine yardımcı olmak için kullanılabilir.

Sonraki adımlar

IoT Edge cihazına sertifika yüklemek, çözümünüzü üretim ortamında dağıtmadan önce gerekli bir adımdır. IoT Edge çözümünüzü üretim ortamında dağıtmaya hazırlanma hakkında daha fazla bilgi edinin.