Aracılığıyla paylaş


X.509 sertifikalarını kullanarak Linux üzerinde büyük ölçekte IoT Edge cihazları oluşturma ve sağlama

Şunlar için geçerlidir: evet simgesi IoT Edge 1.1

Önemli

IoT Edge 1.1 destek sonu tarihi 13 Aralık 2022'ydi. Bu ürünün, hizmetin, teknolojinin veya API’nin nasıl desteklendiği hakkında bilgi edinmek için Microsoft Ürün Yaşam Döngüsü’ne göz atın. IoT Edge'in en son sürümüne güncelleştirme hakkında daha fazla bilgi için bkz . IoT Edge'i güncelleştirme.

Bu makalede, X.509 sertifikalarını kullanarak bir veya daha fazla Linux IoT Edge cihazının otomatik sağlamasını sağlamak için uçtan uca yönergeler sağlanmaktadır. Azure IoT Edge cihazlarını Azure IoT Hub cihaz sağlama hizmeti (DPS) ile otomatik olarak sağlayabilirsiniz. Otomatik sağlama işlemini bilmiyorsanız devam etmeden önce sağlama genel bakışını gözden geçirin.

Görevler aşağıdaki gibidir:

  1. Sertifikalar ve anahtarlar oluşturun.
  2. Tek bir cihaz için tek bir kayıt veya bir cihaz kümesi için grup kaydı oluşturun.
  3. IoT Edge çalışma zamanını yükleyin ve cihazı IoT Hub'a kaydedin.

X.509 sertifikalarını kanıtlama mekanizması olarak kullanmak, üretimi ölçeklendirmenin ve cihaz sağlamayı basitleştirmenin mükemmel bir yoludur. X.509 sertifikaları genellikle bir güven sertifikası zincirinde düzenlenir. Otomatik olarak imzalanan veya güvenilen bir kök sertifikayla başlayarak, zincirdeki her sertifika bir sonraki alt sertifikayı imzalar. Bu düzen, kök sertifikadan her ara sertifikaya kadar bir cihaza yüklenen son aşağı akış cihaz sertifikasına kadar temsilcili bir güven zinciri oluşturur.

İpucu

Cihazınızda TPM 2.0 gibi bir Donanım Güvenlik Modülü (HSM) varsa, X.509 anahtarlarını HSM'de güvenli bir şekilde depolamanızı öneririz. iotedge-tpm2cloud örneğiyle bu şemada açıklanan ölçekte sıfır dokunma sağlamayı uygulama hakkında daha fazla bilgi edinin.

Önkoşullar

Bulut kaynakları

  • Etkin bir IoT hub'ı
  • Azure'da IoT Hub cihaz sağlama hizmetinin IoT hub'ınıza bağlı bir örneği
    • Cihaz sağlama hizmeti örneğiniz yoksa, IoT Hub cihaz sağlama hizmeti hızlı başlangıcının Yeni IoT Hub cihazı sağlama hizmeti oluşturma ve IoT hub'ı ile cihaz sağlama hizmetinizi bağlama bölümlerindeki yönergeleri izleyebilirsiniz.
    • Cihaz sağlama hizmetini çalıştırdıktan sonra, genel bakış sayfasından Kimlik Kapsamı değerini kopyalayın. IoT Edge çalışma zamanını yapılandırırken bu değeri kullanırsınız.

Cihaz gereksinimleri

IoT Edge cihazı olacak fiziksel veya sanal bir Linux cihazı.

Cihaz kimliği sertifikaları oluşturma

Cihaz kimliği sertifikası, bir sertifika güven zinciri aracılığıyla en üst X.509 sertifika yetkilisi (CA) sertifikasına bağlanan bir aşağı akış cihaz sertifikasıdır. Cihaz kimliği sertifikasının ortak adı (CN), cihazın IoT hub'ınızda olmasını istediğiniz cihaz kimliğine ayarlanmış olmalıdır.

Cihaz kimliği sertifikaları yalnızca IoT Edge cihazını sağlamak ve Azure IoT Hub ile cihazın kimliğini doğrulamak için kullanılır. IoT Edge cihazının doğrulama için modüllere veya aşağı akış cihazlarına sunduğu CA sertifikalarından farklı olarak sertifikaları imzalamaz. Daha fazla bilgi için bkz . Azure IoT Edge sertifika kullanım ayrıntıları.

Cihaz kimliği sertifikasını oluşturduktan sonra iki dosyanız olmalıdır: sertifikanın ortak bölümünü içeren bir .cer veya .pem dosyası ve sertifikanın özel anahtarına sahip bir .cer veya .pem dosyası. DPS'de grup kaydını kullanmayı planlıyorsanız, aynı sertifika güven zincirinde bir ara veya kök CA sertifikasının genel bölümüne de ihtiyacınız vardır.

X.509 ile otomatik sağlamayı ayarlamak için aşağıdaki dosyalara ihtiyacınız vardır:

  • Cihaz kimliği sertifikası ve özel anahtar sertifikası. Tek bir kayıt oluşturursanız cihaz kimliği sertifikası DPS'ye yüklenir. Özel anahtar IoT Edge çalışma zamanına geçirilir.
  • En azından cihaz kimliğine ve ara sertifikalara sahip olması gereken tam zincir sertifikası. Tam zincir sertifikası IoT Edge çalışma zamanına geçirilir.
  • Güven sertifika zincirinden bir ara veya kök CA sertifikası. Grup kaydı oluşturursanız bu sertifika DPS'ye yüklenir.

Not

Şu anda libiothsm'deki bir sınırlama, 1 Ocak 2038 veya sonrasında süresi dolan sertifikaların kullanımını engelliyor.

Test sertifikalarını kullanma (isteğe bağlı)

Yeni kimlik sertifikaları oluşturmak için kullanılabilecek bir sertifika yetkiliniz yoksa ve bu senaryoyu denemek istiyorsanız, Azure IoT Edge git deposu test sertifikaları oluşturmak için kullanabileceğiniz betikler içerir. Bu sertifikalar yalnızca geliştirme testi için tasarlanmıştır ve üretimde kullanılmamalıdır.

Test sertifikaları oluşturmak için IoT Edge cihaz özelliklerini test etmek için tanıtım sertifikaları oluşturma bölümünde yer alan adımları izleyin. Sertifika oluşturma betiklerini ayarlamak ve bir kök CA sertifikası oluşturmak için gerekli iki bölümü tamamlayın. Ardından, cihaz kimliği sertifikası oluşturma adımlarını izleyin. İşiniz bittiğinde aşağıdaki sertifika zincirine ve anahtar çiftlerine sahip olmanız gerekir:

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

IoT Edge cihazında bu iki sertifikaya da ihtiyacınız vardır. DPS'de bireysel kayıt kullanacaksanız .cert.pem dosyasını karşıya yükleyeceksiniz. DPS'de grup kaydını kullanacaksanız, karşıya yüklemek için aynı sertifika güven zincirinde bir ara veya kök CA sertifikasına da ihtiyacınız vardır. Tanıtım sertifikaları kullanıyorsanız, grup kaydı için sertifikayı <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem kullanın.

DPS kaydı oluşturma

Oluşturulan sertifikalarınızı ve anahtarlarınızı kullanarak bir veya daha fazla IoT Edge cihazı için DPS'de kayıt oluşturun.

Tek bir IoT Edge cihazı sağlamak istiyorsanız tek bir kayıt oluşturun. Birden çok cihazın sağlanması gerekiyorsa DPS grup kaydı oluşturma adımlarını izleyin.

DPS'de kayıt oluşturduğunuzda, İlk Cihaz İkizi Durumunu bildirme fırsatınız vardır. Cihaz ikizinde cihazları bölge, ortam, konum veya cihaz türü gibi çözümünüzde ihtiyacınız olan ölçümlere göre gruplandıracak şekilde ayarlayabilirsiniz. Bu etiketler otomatik dağıtımlar oluşturmak için kullanılır.

Cihaz sağlama hizmetindeki kayıtlar hakkında daha fazla bilgi için bkz . Cihaz kayıtlarını yönetme.

DPS bireysel kaydı oluşturma

Bireysel kayıtlar, bir cihazın kimlik sertifikasının genel bölümünü alır ve bunu cihazdaki sertifikayla eşleştirir.

İpucu

Bu makaledeki adımlar Azure portalına yöneliktir, ancak Azure CLI kullanarak tek tek kayıtlar da oluşturabilirsiniz. Daha fazla bilgi için bkz . az iot dps enrollment. CLI komutunun bir parçası olarak, kaydın bir IoT Edge cihazına ait olduğunu belirtmek için kenar etkin bayrağını kullanın.

  1. Azure portalında IoT Hub cihaz sağlama hizmeti örneğine gidin.

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

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

    • Mekanizma: X.509'ı seçin.

    • Birincil Sertifika .pem veya .cer dosyası: Cihaz kimliği sertifikasından genel dosyayı karşıya yükleyin. Betikleri test sertifikası oluşturmak için kullandıysanız aşağıdaki dosyayı seçin:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • IoT Hub Cihaz Kimliği: İsterseniz cihazınız için bir kimlik belirtin. Modül dağıtımı için tek bir cihazı hedeflemek için cihaz kimliklerini kullanabilirsiniz. Cihaz kimliği sağlamazsanız, X.509 sertifikasındaki ortak ad (CN) kullanılır.

    • IoT Edge cihazı: Kaydın bir IoT Edge cihazına yönelik olduğunu bildirmek için True'yu seçin.

    • Bu cihazın atanabileceği IoT hub'larını seçin: Cihazınızı bağlamak istediğiniz bağlı IoT hub'ını seçin. Birden çok hub seçebilirsiniz ve cihaz seçilen ayırma ilkesine göre bunlardan birine atanır.

    • İlk Cihaz İkizi Durumu: İstersenize cihaz ikizine eklenecek bir etiket değeri ekleyin. Otomatik dağıtım için cihaz gruplarını hedeflemek için etiketleri kullanabilirsiniz. Örneğin:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Kaydet'i seçin.

Kayıtları Yönet'in altında, yeni oluşturduğunuz kaydın Kayıt Kimliğini görebilirsiniz. Cihazınızı sağlarken kullanılabileceğini unutmayın.

Artık bu cihaz için bir kayıt var olduğuna göre, IoT Edge çalışma zamanı yükleme sırasında cihazı otomatik olarak sağlayabilir.

IoT Edge'i yükleme

Bu bölümde, Linux VM'nizi veya fiziksel cihazınızı IoT Edge için hazırlarsınız. Ardından IoT Edge'i yüklersiniz.

Paket deposunu eklemek için aşağıdaki komutları çalıştırın ve ardından Microsoft paket imzalama anahtarını güvenilen anahtarlar listenize ekleyin.

Önemli

30 Haziran 2022'de Raspberry Pi OS Stretch, Katman 1 işletim sistemi destek listesinden kullanımdan kaldırıldı. Olası güvenlik açıklarını önlemek için konak işletim sisteminizi Bullseye'a güncelleştirin.

Yükleme birkaç komutla yapılabilir. Bir terminal açın ve aşağıdaki komutları çalıştırın:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Not

Azure IoT Edge yazılım paketleri, her pakette (usr/share/doc/{package-name} veya dizinde) bulunan lisans koşullarına LICENSE tabidir. Paket kullanmadan önce lisans koşullarını okuyun. Bir paketi yüklemeniz ve kullanmanız, bu koşulları kabul etmişsinizdir. Lisans koşullarını kabul etmiyorsanız bu paketi kullanmayın.

Kapsayıcı altyapısı yükleme

Azure IoT Edge, OCI uyumlu bir kapsayıcı çalışma zamanı kullanır. Üretim senaryoları için Moby altyapısını kullanmanızı öneririz. Moby altyapısı, IoT Edge ile resmi olarak desteklenen tek kapsayıcı altyapısıdır. Docker CE/EE kapsayıcı görüntüleri Moby çalışma zamanıyla uyumludur.

Moby motorunu yükleyin.

sudo apt-get update; \
  sudo apt-get install moby-engine

Moby altyapısı başarıyla yüklendikten sonra, günlüğe kaydetme mekanizması olarak günlük sürücüsünü kullanacak local şekilde yapılandırın. Günlük yapılandırması hakkında daha fazla bilgi edinmek için bkz . Üretim Dağıtımı Denetim Listesi.

  • Docker daemon'un yapılandırma dosyasını adresinde /etc/docker/daemon.jsonoluşturun veya açın.

  • Aşağıdaki örnekte gösterildiği gibi varsayılan günlük sürücüsünü local günlüğe kaydetme sürücüsü olarak ayarlayın.

       {
          "log-driver": "local"
       }
    
  • Değişikliklerin etkili olması için kapsayıcı altyapısını yeniden başlatın.

    sudo systemctl restart docker
    

    İpucu

    Moby kapsayıcı altyapısını yüklerken hata alırsanız, Moby uyumluluğu için Linux çekirdeğinizi doğrulayın. Bazı katıştırılmış cihaz üreticileri, kapsayıcı altyapısı uyumluluğu için gereken özellikler olmadan özel Linux çekirdekleri içeren cihaz görüntülerini gönderir. Çekirdek yapılandırmanızı denetlemek için Moby tarafından sağlanan check-config betiğini kullanan aşağıdaki komutu çalıştırın:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    Betiğin çıktısında ve Network Drivers altındaki Generally Necessary tüm öğelerin etkinleştirilip etkinleştirilmediğini denetleyin. Özellikleriniz eksikse, çekirdeğinizi kaynaktan yeniden oluşturup uygun çekirdek .config'e eklemek üzere ilişkili modülleri seçerek bunları etkinleştirin. Benzer şekilde, veya menuconfiggibi defconfig bir çekirdek yapılandırma oluşturucu kullanıyorsanız ilgili özellikleri bulup etkinleştirin ve çekirdeğinizi buna göre yeniden oluşturun. Yeni değiştirilen çekirdeğinizi dağıttıktan sonra, gerekli tüm özelliklerin başarıyla etkinleştirildiğini doğrulamak için check-config betiğini yeniden çalıştırın.

IoT Edge çalışma zamanını yükleme

IoT Edge güvenlik daemon'ı IoT Edge cihazında güvenlik standartlarını sağlar ve korur. Daemon her önyüklemede başlar ve IoT Edge çalışma zamanının geri kalanını başlatarak cihazı önyükler.

Bu bölümdeki adımlar, İnternet bağlantısı olan bir cihaza en son sürümü yükleme işlemini gösterir. Yayın öncesi sürüm gibi belirli bir sürümü yüklemeniz veya çevrimdışıyken yüklemeniz gerekiyorsa, bu makalenin devamında yer alan Çevrimdışı veya belirli bir sürüm yükleme adımlarını izleyin.

IoT Edge sürüm 1.1.* ile birlikte libiothsm-std paketini yükleyin:

sudo apt-get update; \
  sudo apt-get install iotedge

Not

IoT Edge sürüm 1.1, IoT Edge'in uzun vadeli destek dalıdır. Eski bir sürüm çalıştırıyorsanız, eski sürümler artık desteklenmediğinden en son düzeltme ekini yüklemenizi veya güncelleştirmenizi öneririz.

Cihazı bulut kimliğiyle sağlama

Çalışma zamanı cihazınıza yüklendikten sonra, cihazı cihaz sağlama hizmetine ve IoT Hub'a bağlanmak için kullandığı bilgilerle yapılandırın.

Aşağıdaki bilgileri hazır bulundurun:

  • DPS Kimlik Kapsamı değeri. Bu değeri, Azure portalındaki DPS örneğinizin genel bakış sayfasından alabilirsiniz.
  • Cihazdaki cihaz kimliği sertifika zinciri dosyası.
  • Cihazdaki cihaz kimlik anahtarı dosyası.
  1. IoT Edge cihazında yapılandırma dosyasını açın.

    sudo nano /etc/iotedge/config.yaml
    
  2. Dosyanın sağlama yapılandırmaları bölümünü bulun. DPS X.509 sertifika sağlama satırlarının açıklamasını kaldırın ve diğer sağlama satırlarının açıklama satırı eklendiğine emin olun.

    Satırın provisioning: önünde boşluk olmamalıdır ve iç içe öğeler iki boşlukla girintilenmelidir.

    # DPS X.509 provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "SCOPE_ID_HERE"
      attestation:
        method: "x509"
    #   registration_id: "OPTIONAL_REGISTRATION_ID_LEAVE_COMMENTED_OUT_TO_REGISTER_WITH_CN_OF_IDENTITY_CERT"
        identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE_HERE"
        identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: false
    
  3. , identity_certve değerlerini scope_idDPS ve identity_pk cihaz bilgilerinizle güncelleştirin.

    X.509 sertifikasını ve anahtar bilgilerini config.yaml dosyasına eklediğinizde, yollar dosya URI'leri olarak sağlanmalıdır. Örneğin:

    file:///<path>/identity_certificate_chain.pem file:///<path>/identity_key.pem

  4. İsteğe bağlı olarak, kimlik sertifikasının ortak adıyla (CN) eşleşmesi gereken cihaz için değerini sağlayın registration_id . Bu satırı açıklamalı olarak bırakırsanız, CN otomatik olarak uygulanır.

  5. İsteğe bağlı olarak, cihazınızın yeniden sağlama davranışını yapılandırmak için veya dynamic_reprovisioning satırlarını kullanınalways_reprovision_on_startup. Bir cihaz başlangıçta yeniden sağlama için ayarlanırsa, her zaman önce DPS ile sağlamayı dener ve başarısız olursa sağlama yedeklemesine geri döner. Bir cihaz dinamik olarak yeniden sağlama yapacak şekilde ayarlanırsa IoT Edge (ve tüm modüller) yeniden başlatılır ve cihaz bir IoT Hub'dan diğerine taşındığında olduğu gibi bir yeniden sağlama olayı algılanırsa yeniden sağlanır. Özellikle IoT Edge, yeniden sağlama olayını algılamak için bad_credential SDK'dan gelen hataları veya device_disabled hataları denetler. Bu olayı el ile tetikleme için Cihazı IoT Hub'da devre dışı bırakın. Daha fazla bilgi için bkz . IoT Hub cihazı yeniden sağlama kavramları.

  6. config.yaml dosyasını kaydedin ve kapatın.

  7. Cihazda yaptığınız tüm yapılandırma değişikliklerini alması için IoT Edge çalışma zamanını yeniden başlatın.

    sudo systemctl restart iotedge
    

Yüklemenin başarılı olduğunu doğrulama

Çalışma zamanı başarıyla başlatıldıysa IoT Hub'ınıza gidebilir ve IoT Edge modüllerini cihazınıza dağıtmaya başlayabilirsiniz.

Cihaz sağlama hizmetinde oluşturduğunuz bireysel kaydın kullanıldığını doğrulayabilirsiniz. Azure portalında cihaz sağlama hizmeti örneğine gidin. Oluşturduğunuz bireysel kayıt için kayıt ayrıntılarını açın. Kaydın durumunun atandığını ve cihaz kimliğinin listelendiğine dikkat edin.

IoT Edge'in başarıyla yüklendiğini ve başlatıldığını doğrulamak için cihazınızda aşağıdaki komutları kullanın.

IoT Edge hizmetinin durumunu kontrol edin.

systemctl status iotedge

Hizmet günlüklerini inceleyin.

journalctl -u iotedge --no-pager --no-full

Çalışan modülleri listeleyin.

iotedge list

Sonraki adımlar

Cihaz sağlama hizmeti kayıt işlemi, yeni cihazı sağlarken cihaz kimliğini ve cihaz ikizi etiketlerini aynı anda ayarlamanıza olanak tanır. Otomatik cihaz yönetimi kullanarak tek tek cihazları veya cihaz gruplarını hedeflemek için bu değerleri kullanabilirsiniz. Azure portalını veya Azure CLI'yi kullanarak IoT Edge modüllerini uygun ölçekte dağıtmayı ve izlemeyi öğrenin.