Öğretici: Azure IoT Edge için Güvenli Aktarım Sunucusu üzerinden kaydı yapılandırma

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

Azure IoT Edge ile, x509 sertifikalarını yönetmek için cihazlarınızı Güvenli Aktarım Üzerinden Kayıt (EST) sunucusu kullanacak şekilde yapılandırabilirsiniz.

Bu öğreticide test EST sunucusu barındırma ve x509 sertifikalarının kaydı ve yenilenmesi için ioT Edge cihazı yapılandırma adımları açıklanmıştır. Bu öğreticide aşağıdakilerin nasıl yapılacağını öğreneceksiniz:

  • Test EST sunucusu oluşturma ve barındırma
  • DPS grup kaydını yapılandırma
  • Cihazı yapılandırma

Bu öğreticiyi tamamlamak için gereken üç adıma üst düzey genel bakışı gösteren diyagram.

Önkoşullar

  • En son Azure IoT Edge çalışma zamanının yüklü olduğu mevcut bir IoT Edge cihazı. Test cihazı oluşturmanız gerekiyorsa Hızlı Başlangıç: İlk IoT Edge modülünüzü bir sanal Linux cihazına dağıtma işlemini tamamlayın.
  • IoT Edge cihazınız IÇIN EST desteği için Azure IoT Edge çalışma zamanı 1.2 veya üzeri gerekir. EST sertifika yenilemesi için Azure IoT Edge çalışma zamanı 1.3 veya üzeri gereklidir.
  • IoT Hub'a bağlı IoT Hub Cihaz Sağlama Hizmeti (DPS). DPS'yi yapılandırma hakkında bilgi için bkz . Hızlı Başlangıç: Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama.

Güvenli Aktarım üzerinden kayıt nedir?

Güvenli Aktarım üzerinden kayıt (EST), x.509 sertifikalarının verilmesini otomatik hale getiren bir şifreleme protokolüdür. Bir Sertifika Yetkilisi (CA) ile ilişkilendirilmiş istemci sertifikalarına ihtiyaç duyan IoT Edge gibi ortak anahtar altyapısı (PKI) istemcileri için kullanılır. EST, el ile sertifika yönetimi gereksiniminin yerini alır ve bu da riskli ve hataya açık olabilir.

EST sunucusu

Sertifika verme ve yenileme için cihazlarınız için erişilebilir bir EST sunucusuna ihtiyacınız vardır.

Önemli

Kurumsal sınıf çözümler için şunları göz önünde bulundurun: GlobalSign IoT Edge Kaydı veya DigiCert IoT Aygıt Yöneticisi.

Test ve geliştirme için bir test EST sunucusu kullanabilirsiniz. Bu öğreticide bir test EST sunucusu oluşturacağız.

Cihazda EST sunucusunu çalıştırma

Hızlı bir şekilde başlamak için bu öğreticide, IoT Edge cihazında yerel olarak bir kapsayıcıda basit bir EST sunucusu dağıtma adımları gösterilmektedir. Bu yöntem, denemek için en basit yaklaşımdır.

Dockerfile, adlılibest bir Cisco kitaplığı olan Ubuntu 18.04'ü ve örnek sunucu kodunu kullanır. Aşağıdaki ayar ile yapılandırılır ve değiştirebilirsiniz:

  • Kök CA 20 yıl geçerlidir
  • EST sunucu sertifikası 10 yıl geçerlidir
  • EST yenilemesini test etmek için sertifika varsayılan günlerini 1 olarak ayarlayın
  • EST sunucusu bir kapsayıcıdaki IoT Edge cihazında yerel olarak çalışır

Dikkat

Bu Dockerfile dosyasını üretimde kullanmayın.

  1. Örneğin IoT Edge'i yüklediğiniz SSH kullanarak cihaza Bağlan.

  2. (büyük/küçük harfe duyarlı) adlı Dockerfile bir dosya oluşturun ve sık kullandığınız metin düzenleyicisini kullanarak örnek içeriği ekleyin.

    İpucu

    EST sunucunuzu Azure Container Instance'da barındırmak istiyorsanız, EST sunucunuzun DNS adı olarak değiştirin myestserver.westus.azurecontainer.io . DNS adı seçerken, Azure Container örneğinin DNS etiketinin en az beş karakter uzunluğunda olması gerektiğini unutmayın.

    # 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. öğesini Dockerfileiçeren dizinde, örnek Dockerfile dosyasından görüntünüzü derleyin.

    sudo docker build . --tag est
    
  4. Kapsayıcıyı başlatın ve kapsayıcının 8085 numaralı bağlantı noktasını konakta 8085 numaralı bağlantı noktasına kullanıma sunun.

    sudo docker run -d -p 8085:8085 est
    
  5. Artık EST sunucunuz çalışıyor ve 8085 numaralı bağlantı noktası üzerinden localhost erişilebilir. Sunucu sertifikasını görmek için bir komut çalıştırarak kullanılabilir olduğunu doğrulayın.

    openssl s_client -showcerts -connect localhost:8085
    
  6. Çıkışın ortasında görmeniz -----BEGIN CERTIFICATE----- gerekir. Sertifikanın alınması, sunucunun ulaşılabilir olduğunu ve sertifikasını sunabildiğini doğrular.

İpucu

Bu kapsayıcıyı bulutta çalıştırmak için görüntüyü derleyin ve görüntüyü Azure Container Registry'ye gönderin. Ardından hızlı başlangıcı izleyerek Azure Container Instance'a dağıtın.

CA sertifikalarını indirme

Her cihaz, bir cihaz kimliği sertifikasıyla ilişkili Sertifika Yetkilisi (CA) sertifikası gerektirir.

  1. IoT Edge cihazında /var/aziot/certs , yoksa dizini oluşturun ve dizini bu dizinle değiştirin.

    # 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. CA sertifikasını EST sunucusundan dizinine alın ve olarak adlandırın /var/aziot/certscacert.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. Sertifikalar, anahtar hizmet kullanıcısı aziotcs'e ait olmalıdır. Tüm sertifika dosyaları için sahipliği aziotcs olarak ayarlayın ve izinleri ayarlayın. Sertifika sahipliği ve izinleri hakkında daha fazla bilgi için bkz . İzin gereksinimleri.

    # 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 {} \;
    

DPS kullanarak IoT Edge cihazı sağlama

Cihaz Sağlama Hizmeti'ni kullanmak, IoT Edge'de bir EST sunucusundan sertifikaları otomatik olarak vermenizi ve yenilemenizi sağlar. Öğretici EST sunucusunu kullanırken kimlik sertifikalarının süresi bir gün içinde dolar ve sertifikanın süresi her dolduğunda parmak izi IoT Hub'da el ile güncelleştirilmelidir. Kayıt grubuyla DPS CA kimlik doğrulaması, cihaz kimliği sertifikalarının el ile herhangi bir adım olmadan yenilenmesini sağlar.

CA sertifikasını DPS'ye yükleme

  1. IoT Hub'a bağlı bir Cihaz Sağlama Hizmetiniz yoksa bkz . Hızlı Başlangıç: Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama.

  2. Dosyayı cihazınızdan cacert.crt.pem geliştirme bilgisayarınız gibi Azure portalına erişimi olan bir bilgisayara aktarın. Sertifikayı aktarmanın kolay bir yolu cihazınıza uzaktan bağlanmak, komutunu cat /var/aziot/certs/cacert.crt.pemkullanarak sertifikayı görüntülemek, çıkışın tamamını kopyalamak ve içeriği geliştirme bilgisayarınızdaki yeni bir dosyaya yapıştırmaktır.

  3. Azure portalında IoT Hub Cihazı Sağlama Hizmeti örneğine gidin.

  4. Ayarlar altında Sertifikalar'ı ve ardından +Ekle'yi seçin.

    Azure portalını kullanarak Cihaz Sağlama Hizmeti'ne CA sertifikası ekleme ekran görüntüsü.

    Ayar Value
    Sertifika adı CA sertifikası için kolay bir ad sağlayın
    Sertifika .pem veya .cer dosyası cacert.crt.pem EST sunucusundan adresine gidin
    Sertifika durumunu karşıya yüklemede doğrulandı olarak ayarlama Onay kutusunu seçin
  5. Kaydet'i seçin.

Kayıt grubu oluşturma

  1. Azure portalında IoT Hub Cihazı Sağlama Hizmeti örneğine gidin.

  2. Ayarlar altında Kayıtları yönet'i seçin.

  3. Kayıt grubu ekle'yi seçin ve kaydı yapılandırmak için aşağıdaki adımları tamamlayın.

  4. Kayıt + sağlama sekmesinde aşağıdaki ayarları seçin:

    Azure portalını kullanarak DPS kayıt grubu ekleme ekran görüntüsü.

    Ayar Value
    Kanıtlama mekanizması Bu Cihaz Sağlama Hizmeti örneğine yüklenen X.509 sertifikalarını seçin
    Birincil sertifika Açılan listeden sertifikanızı seçin
    Grup adı Bu grup kaydı için kolay bir ad sağlayın
    Sağlama durumu Bu kaydı etkinleştir onay kutusunu seçin
  5. IoT hub'ları sekmesinde, listeden IoT Hub'ınızı seçin.

  6. Cihaz ayarları sekmesinde Sağlanan cihazlarda IoT Edge'i etkinleştir onay kutusunu seçin.

    Diğer ayarlar öğreticiyle ilgili değildir. Varsayılan ayarları kabul edebilirsiniz.

  7. Gözden geçir ve oluştur’u seçin.

Artık cihaz için bir kayıt var olduğuna göre, IoT Edge çalışma zamanı bağlı IoT Hub için cihaz sertifikalarını otomatik olarak yönetebilir.

IoT Edge cihazını yapılandırma

IoT Edge cihazında IoT Edge yapılandırma dosyasını, EST sunucusundan cihaz sertifikalarını kullanacak şekilde güncelleştirin.

  1. Düzenleyici kullanarak IoT Edge yapılandırma dosyasını açın. Örneğin, dosyayı açmak için düzenleyiciyi /etc/aziot/config.toml kullanınnano.

    sudo nano /etc/aziot/config.toml
    
  2. Yapılandırma dosyasına aşağıdaki bölümleri ekleyin veya değiştirin. Bu yapılandırma ayarları, cihaz sertifikasını EST sunucusundan almak için başlangıçta kullanıcı adı ve parola kimlik doğrulamasını kullanır. Cihaz sertifikası, gelecekteki sertifika yenilemeleri için EST sunucusunda kimlik doğrulaması yapmak için kullanılır.

    Aşağıdaki yer tutucu metni değiştirin: <DPS-ID-SCOPE>Kayıtlı cihazı içeren IoT Hub'a bağlı DPS'nin Kimlik Kapsamı ve myiotedgedevice Azure IoT Hub'da kayıtlı cihaz kimliği ile. Kimlik Kapsamı değerini DPS Genel Bakış sayfasında bulabilirsiniz.

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

    Not

    Bu örnekte IoT Edge, sertifika alması gereken her durumda EST sunucusunda kimlik doğrulaması yapmak için kullanıcı adı ve parola kullanır. Bu yöntem üretimde önerilmez, çünkü 1) gizli diziyi düz metin olarak depolamayı gerektirir ve 2) IoT Edge de EST sunucusunda kimlik doğrulaması yapmak için bir kimlik sertifikası kullanmalıdır. Üretim için değiştirmek için:

    1. DpS için önerilen yaklaşıma benzer şekilde üretim sırasında cihaza depolanabilen uzun ömürlü bootstrap sertifikalarını kullanmayı göz önünde bulundurun. EST sunucusu için bootstrap sertifikasının nasıl yapılandırıldığını görmek için bkz . EST aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Cihazın Kimliğini Doğrulama.
    2. Yukarıdaki sağlama sertifikası otomatik yenileme yapılandırmasıyla aynı söz dizimini kullanarak yapılandırın[cert_issuance.est.identity_auto_renew].

    Bu şekilde IoT Edge sertifika hizmeti, EST sunucusuyla ilk kimlik doğrulaması için önyükleme sertifikasını kullanır ve aynı sunucuya gelecek EST istekleri için bir kimlik sertifikası ister. Herhangi bir nedenle, YENILEMEden önce EST kimlik sertifikasının süresi dolarsa, IoT Edge önyükleme sertifikasını kullanmaya geri döner.

  3. Yeni ayarları uygulamak için komutunu çalıştırın sudo iotedge config apply .

  4. IoT Edge cihaz yapılandırmanızı doğrulamak için komutunu çalıştırın sudo iotedge check . Tüm yapılandırma denetimleri başarılı olmalıdır. Bu öğreticide üretime hazır olma hatalarını ve uyarılarını, DNS sunucusu uyarılarını ve bağlantı denetimlerini yoksayabilirsiniz.

  5. IoT Hub'da cihazınıza gidin. Sertifika parmak izleri, DPS ve EST sunucusu kullanılarak cihaza otomatik olarak eklendi.

    Azure portalında IoT Hub cihaz ayarlarının ekran görüntüsü. Sertifika parmak izi alanları değerleri gösterir.

    Not

    Yeni bir IoT Edge cihazı oluşturduğunuzda durum kodu 417 -- The device's deployment configuration is not set in the Azure portal. Bu durum normaldir ve cihazın modül dağıtımı almaya hazır olduğu anlamına gelir.

Sertifika yenilemeyi test et

Mevcut sertifikaları ve anahtarları cihazdan kaldırıp Ardından IoT Edge yapılandırmasını uygulayarak cihaz kimliği sertifikalarını hemen yeniden oluşturabilirsiniz. IoT Edge eksik dosyaları algılar ve yeni sertifikalar istemektedir.

  1. IoT Edge cihazında IoT Edge çalışma zamanını durdurun.

    sudo iotedge system stop
    
  2. Mevcut sertifikaları ve anahtarları silin.

    sudo sh -c "rm /var/lib/aziot/certd/certs/*"
    sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
    
  3. Sertifikaları yenilemek için IoT Edge yapılandırmasını uygulayın.

    sudo iotedge config apply
    

    Çalışma zamanının başlatılması için birkaç dakika beklemeniz gerekebilir.

  4. IoT Hub'da cihazınıza gidin. Sertifika parmak izleri güncelleştirildi.

    Azure portalında IoT Hub cihaz ayarlarının ekran görüntüsü. Sertifika parmak izleri alanları yeni değerleri gösterir.

  5. komutunu sudo ls -l /var/lib/aziot/certd/certskullanarak sertifika dosyalarını listeleyin. Cihaz sertifika dosyaları için son oluşturma tarihlerini görmeniz gerekir.

  6. openssl Yeni sertifika içeriğini denetlemek için komutunu kullanın. Örneğin:

    sudo openssl x509 -in /var/lib/aziot/certd/certs/deviceid-bd732105ef89cf8edd2606a5309c8a26b7b5599a4e124a0fe6199b6b2f60e655.cer -text -noout
    

    Cihaz sertifikası dosya adını (.cer) cihazınızın sertifika dosyasıyla değiştirin.

    Sertifika Geçerlilik tarihi aralığının değiştiğini fark etmelisiniz.

Sertifika yenilemeyi test etmenin isteğe bağlı diğer yolları aşağıdadır. Bu denetimler, Süresi dolduğunda veya eksik olduğunda IoT Edge'in EST sunucusundan sertifikaları nasıl yenilediklerini gösterir. Her test sonrasında Azure portalında yeni parmak izlerini doğrulayabilir ve komutunu kullanarak yeni sertifikayı doğrulayabilirsiniz openssl .

  1. Sertifikanın süresinin dolması için bir gün beklemeyi deneyin. Test EST sunucusu, bir gün sonra süresi dolan sertifikalar oluşturacak şekilde yapılandırılmıştır. IoT Edge sertifikayı otomatik olarak yeniler.
  2. içindeki otomatik yenileme kümesinin config.toml yüzdesini threshold ayarlamayı deneyin (şu anda örnek yapılandırmada %80 olarak ayarlanmıştır). Örneğin, bunu 10% olarak ayarlayın ve yaklaşık 2 saatte bir sertifika yenilemesini gözlemleyin.
  3. değerini bir tamsayıya ve ardından m (dakika) ayarlamayı threshold deneyin. Örneğin, sertifikayı 60m olarak ayarlayın ve süresi dolmadan 1 saat önce sertifika yenilemesini gözlemleyin.

Kaynakları temizleme

Bu öğreticide oluşturduğunuz kaynakları ve yapılandırmaları tutabilir ve yeniden kullanabilirsiniz. Aksi takdirde, ücretlerden kaçınmak için bu makalede kullandığınız yerel yapılandırmaları ve Azure kaynaklarını silebilirsiniz.

Azure kaynaklarını silme

Azure kaynaklarını ve kaynak gruplarını silme işlemi geri alınamaz. Yanlış kaynak grubunu veya kaynakları yanlışlıkla silmediğinizden emin olun. IoT hub'ını tutmak istediğiniz kaynakların yer aldığı mevcut bir kaynak grubunda oluşturduysanız, kaynak grubunu değil yalnızca IoT hub kaynağını silin.

Kaynakları silmek için:

  1. Azure portalında oturum açın ve Kaynak grupları’nı seçin.

  2. IoT Edge test kaynaklarınızı içeren kaynak grubunun adını seçin.

  3. Kaynak grubunuzda bulunan kaynakların listesini gözden geçirin. Tümünü silmek isterseniz Kaynak grubunu sil'i seçebilirsiniz. Kaynakların yalnızca bazılarını silmek istiyorsanız tek tek tıklayarak silebilirsiniz.

Sonraki adımlar

  • Est sunucusunu kullanarak Edge CA sertifikaları vermek için örnek yapılandırmaya bakın.
  • Est sunucusuna kimlik doğrulamasını önyüklemek için kullanıcı adı ve parola kullanılması üretim için önerilmez. Bunun yerine, DPS için önerilen yaklaşıma benzer şekilde üretim sırasında cihaza depolanabilen uzun süreli önyükleme sertifikalarını kullanmayı göz önünde bulundurun. EST sunucusu için bootstrap sertifikasının nasıl yapılandırıldığını görmek için bkz . EST aracılığıyla Dinamik Olarak Verilen Sertifikaları Kullanarak Cihazın Kimliğini Doğrulama.
  • EST sunucusu, hiyerarşideki tüm cihazlar için sertifika vermek için de kullanılabilir. ISA-95 gereksinimleriniz olup olmadığınıza bağlı olarak, her katmanda bir tane olan bir EST sunucuları zinciri çalıştırmanız veya istekleri iletmek için API proxy modülünü kullanmanız gerekebilir. Daha fazla bilgi edinmek için Kevin'in bloguna bakın.
  • Kurumsal sınıf çözümler için şunları göz önünde bulundurun: GlobalSign IoT Edge Kaydı veya DigiCert IoT Aygıt Yöneticisi
  • Sertifikalar hakkında daha fazla bilgi edinmek için bkz . Azure IoT Edge'in sertifikaları nasıl kullandığını anlama.