Sdílet prostřednictvím


Vytváření a zřizování zařízení IoT Edge ve velkém měřítku v Linuxu pomocí certifikátů X.509

Platí pro: Ikona Ano IoT Edge 1.1

Důležité

Datum ukončení podpory ioT Edge 1.1 bylo 13. prosince 2022. Informace o způsobu podpory tohoto produktu, služby, technologie nebo rozhraní API najdete v tématu věnovaném životnímu cyklu produktů Microsoftu. Další informace o aktualizaci na nejnovější verzi IoT Edge najdete v tématu Aktualizace IoT Edge.

Tento článek obsahuje kompletní pokyny pro automatické zřízení jednoho nebo více zařízení IoT Edge s Linuxem pomocí certifikátů X.509. Zařízení Azure IoT Edge můžete automaticky zřídit pomocí služby Azure IoT Hub device provisioning (DPS). Pokud neznáte proces automatického zřizování, než budete pokračovat, projděte si přehled zřizování.

Úkoly jsou následující:

  1. Vygenerujte certifikáty a klíče.
  2. Vytvořte individuální registraci pro jedno zařízení nebo skupinovou registraci pro sadu zařízení.
  3. Nainstalujte modul runtime IoT Edge a zaregistrujte zařízení ve službě IoT Hub.

Použití certifikátů X.509 jako mechanismu ověřování představuje skvělý způsob škálování produkčního prostředí a zjednodušení zřizování zařízení. Certifikáty X.509 jsou obvykle uspořádány v řetězu certifikátů důvěryhodnosti. Počínaje certifikátem podepsaným svým držitelem nebo důvěryhodným kořenovým certifikátem podepíše každý certifikát v řetězu další nižší certifikát. Tento model vytvoří delegovaný řetěz důvěryhodnosti z kořenového certifikátu směrem dolů přes každý zprostředkující certifikát až po konečný certifikát podřízeného zařízení nainstalovaný na zařízení.

Tip

Pokud má vaše zařízení modul hardwarového zabezpečení (HSM), například TPM 2.0, doporučujeme bezpečně ukládat klíče X.509 do hsM. Přečtěte si další informace o tom, jak implementovat zřizování bez dotyku ve velkém měřítku popsané v tomto podrobném plánu s ukázkou iotedge-tpm2cloud .

Požadavky

Cloudové prostředky

  • Aktivní centrum IoT
  • Instance služby IoT Hub device Provisioning v Azure propojená s centrem IoT
    • Pokud nemáte instanci služby zřizování zařízení, můžete postupovat podle pokynů v rychlém startu vytvoření nové služby zřizování zařízení ioT Hubu a propojení centra IoT a oddílů služby zřizování zařízení ve službě IoT Hub.
    • Po spuštění služby device provisioning zkopírujte hodnotu Oboru ID ze stránky přehledu. Tuto hodnotu použijete při konfiguraci modulu runtime IoT Edge.

Požadavky na zařízení

Fyzické nebo virtuální zařízení s Linuxem, které má být zařízením IoT Edge.

Generování certifikátů identit zařízení

Certifikát identity zařízení je podřízený certifikát zařízení, který se připojuje prostřednictvím řetězu certifikátů důvěryhodnosti k nejvyššímu certifikátu certifikační autority X.509 (CA). Certifikát identity zařízení musí mít svůj běžný název (CN) nastavený na ID zařízení, které má mít zařízení ve službě IoT Hub.

Certifikáty identit zařízení se používají jenom ke zřízení zařízení IoT Edge a ověřování zařízení pomocí Azure IoT Hubu. Na rozdíl od certifikátů certifikační autority, které zařízení IoT Edge prezentuje modulům nebo podřízeným zařízením k ověření, nejsou podpisové certifikáty. Další informace najdete v podrobnostech o využití certifikátů Azure IoT Edge.

Po vytvoření certifikátu identity zařízení byste měli mít dva soubory: soubor .cer nebo .pem, který obsahuje veřejnou část certifikátu, a soubor .cer nebo .pem s privátním klíčem certifikátu. Pokud plánujete používat skupinovou registraci ve službě DPS, potřebujete také veřejnou část certifikátu zprostředkující nebo kořenové certifikační autority ve stejném řetězu certifikátů důvěryhodnosti.

K nastavení automatického zřizování pomocí X.509 potřebujete následující soubory:

  • Certifikát identity zařízení a jeho certifikát privátního klíče. Certifikát identity zařízení se nahraje do DPS, pokud vytvoříte jednotlivou registraci. Privátní klíč se předává modulu runtime IoT Edge.
  • Úplný řetězový certifikát, který by měl mít alespoň identitu zařízení a zprostředkující certifikáty. Úplný řetězový certifikát se předává modulu runtime IoT Edge.
  • Zprostředkující nebo kořenový certifikát certifikační autority z řetězu certifikátů důvěryhodnosti. Pokud vytvoříte skupinovou registraci, tento certifikát se nahraje do DPS.

Poznámka:

V současné době omezení v libiothsm zabraňuje použití certifikátů, jejichž platnost vyprší 1. ledna 2038 nebo po 1. lednu 2038.

Použití testovacích certifikátů (volitelné)

Pokud nemáte k dispozici certifikační autoritu k vytvoření nových certifikátů identit a chcete si tento scénář vyzkoušet, úložiště Git Azure IoT Edge obsahuje skripty, které můžete použít k vygenerování testovacích certifikátů. Tyto certifikáty jsou určené jenom pro testování vývoje a nesmí se používat v produkčním prostředí.

Pokud chcete vytvořit testovací certifikáty, postupujte podle kroků v části Vytvoření ukázkových certifikátů a otestujte funkce zařízení IoT Edge. Dokončete dvě požadované části pro nastavení skriptů pro generování certifikátů a vytvoření kořenového certifikátu certifikační autority. Pak podle pokynů vytvořte certifikát identity zařízení. Až budete hotovi, měli byste mít následující pár řetězu certifikátů a klíčů:

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

Oba tyto certifikáty potřebujete na zařízení IoT Edge. Pokud budete používat individuální registraci ve službě DPS, nahrajete soubor .cert.pem. Pokud budete používat skupinovou registraci ve službě DPS, budete také potřebovat certifikát zprostředkující nebo kořenové certifikační autority ve stejném řetězu certifikátů důvěryhodnosti k nahrání. Pokud používáte ukázkové certifikáty, použijte <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem certifikát pro registraci skupiny.

Vytvoření registrace DPS

Pomocí vygenerovaných certifikátů a klíčů vytvořte registraci v DPS pro jedno nebo více zařízení IoT Edge.

Pokud chcete zřídit jedno zařízení IoT Edge, vytvořte individuální registraci. Pokud potřebujete zřídit více zařízení, postupujte podle pokynů k vytvoření skupinové registrace DPS.

Při vytváření registrace v DPS máte možnost deklarovat počáteční stav dvojčete zařízení. Ve dvojčeti zařízení můžete nastavit značky pro seskupení zařízení podle libovolné metriky, kterou potřebujete v řešení, jako je oblast, prostředí, umístění nebo typ zařízení. Tyto značky slouží k vytváření automatických nasazení.

Další informace o registracích ve službě zřizování zařízení najdete v tématu Správa registrací zařízení.

Vytvoření jednotlivé registrace DPS

Jednotlivé registrace přebírají veřejnou část certifikátu identity zařízení a shodují se s certifikátem na zařízení.

Tip

Kroky v tomto článku jsou určené pro Azure Portal, ale pomocí Azure CLI můžete také vytvářet jednotlivé registrace. Další informace najdete v tématu az iot dps enrollment. Jako součást příkazu rozhraní příkazového řádku použijte příznak s povoleným hraničním zařízením a určete, že registrace je pro zařízení IoT Edge.

  1. Na webu Azure Portal přejděte do vaší instance služby IoT Hub device provisioning.

  2. V části Nastavení vyberte Spravovat registrace.

  3. Vyberte Přidat jednotlivé registrace a pak proveďte následující kroky a nakonfigurujte registraci:

    • Mechanismus: Vyberte X.509.

    • Soubor .pem nebo .cer primárního certifikátu: Nahrajte veřejný soubor z certifikátu identity zařízení. Pokud jste k vygenerování testovacího certifikátu použili skripty, zvolte následující soubor:

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

    • ID zařízení služby IoT Hub: Pokud chcete, zadejte ID zařízení. ID zařízení můžete použít k cílení na jednotlivá zařízení pro nasazení modulu. Pokud nezadáte ID zařízení, použije se běžný název (CN) v certifikátu X.509.

    • Zařízení IoT Edge: Výběrem možnosti True deklarujte, že registrace je pro zařízení IoT Edge.

    • Vyberte centra IoT, ke kterým se toto zařízení dá přiřadit: Zvolte propojené centrum IoT, ke kterému chcete zařízení připojit. Můžete zvolit více rozbočovačů a zařízení se přiřadí k jednomu z nich podle vybraných zásad přidělování.

    • Počáteční stav dvojčete zařízení: Pokud chcete, přidejte do dvojčete zařízení hodnotu značky. Značky můžete použít k cílení skupin zařízení pro automatické nasazení. Příklad:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Zvolte Uložit.

V části Spravovat registrace uvidíte ID registrace pro právě vytvořenou registraci. Poznamenejte si ho, protože ho můžete použít při zřizování zařízení.

Teď, když pro toto zařízení existuje registrace, může modul runtime IoT Edge během instalace zařízení automaticky zřídit.

Instalace IoT Edge

V této části připravíte virtuální počítač s Linuxem nebo fyzické zařízení pro IoT Edge. Pak nainstalujete IoT Edge.

Spuštěním následujících příkazů přidejte úložiště balíčků a potom přidejte podpisový klíč balíčku Microsoftu do seznamu důvěryhodných klíčů.

Důležité

30. června 2022 Raspberry Pi OS Stretch byl vyřazen ze seznamu podpory operačního systému vrstvy 1. Abyste se vyhnuli potenciálním ohrožením zabezpečení, aktualizujte hostitelský operační systém na Bullseye.

Instalaci je možné provést několika příkazy. Otevřete terminál a spusťte následující příkazy:

  • 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
    

Poznámka:

Softwarové balíčky Azure IoT Edge podléhají licenčním podmínkám umístěným v jednotlivých balíčcích (usr/share/doc/{package-name} nebo adresáři LICENSE ). Přečtěte si licenční podmínky před použitím balíčku. Vaše instalace a použití balíčku představuje vaše přijetí těchto podmínek. Pokud s licenčními podmínkami nesouhlasíte, nepoužívejte tento balíček.

Instalace modulu kontejneru

Azure IoT Edge spoléhá na modul runtime kontejneru kompatibilní s OCI. Pro produkční scénáře doporučujeme použít modul Moby. Modul Moby je jediným kontejnerovým modulem oficiálně podporovaným v IoT Edge. Image kontejnerů Dockeru CE/EE jsou kompatibilní s modulem runtime Moby.

Nainstalujte modul Moby.

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

Po úspěšné instalaci modulu Moby ho nakonfigurujte tak, aby jako mechanismus protokolování používal local ovladač protokolování. Další informace o konfiguraci protokolování najdete v kontrolním seznamu produkčního nasazení.

  • Vytvořte nebo otevřete konfigurační soubor démona Dockeru na adrese /etc/docker/daemon.json.

  • Nastavte výchozí ovladač protokolování na local ovladač protokolování, jak je znázorněno v následujícím příkladu.

       {
          "log-driver": "local"
       }
    
  • Restartujte modul kontejneru, aby se změny projevily.

    sudo systemctl restart docker
    

    Tip

    Pokud při instalaci modulu kontejneru Moby dojde k chybám, ověřte kompatibilitu jádra Linuxu pro Moby. Někteří výrobci vložených zařízení dodávají image zařízení, která obsahují vlastní linuxová jádra bez funkcí potřebných pro kompatibilitu modulu kontejnerů. Spuštěním následujícího příkazu, který používá skript check-config od Moby, zkontrolujte konfiguraci jádra:

    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
    

    Ve výstupu skriptu zkontrolujte, jestli jsou všechny položky v části Generally Necessary a Network Drivers jsou povolené. Pokud vám chybí funkce, povolte je opětovným sestavením jádra ze zdroje a výběrem přidružených modulů pro zahrnutí do příslušného jádra .config. Podobně pokud používáte generátor konfigurace jádra, například defconfig nebo menuconfig, vyhledejte a povolte příslušné funkce a odpovídajícím způsobem znovu sestavte jádro. Po nasazení nově upraveného jádra znovu spusťte skript check-config a ověřte, že všechny požadované funkce byly úspěšně povolené.

Instalace modulu runtime IoT Edge

Proces démon zabezpečení IoT Edge poskytuje a udržuje standardy zabezpečení na zařízení IoT Edge. Proces démon se spustí při každém spuštění a spustí zařízení spuštěním zbytku modulu runtime IoT Edge.

Kroky v této části představují typický proces instalace nejnovější verze na zařízení s připojením k internetu. Pokud potřebujete nainstalovat konkrétní verzi, jako je předběžná verze, nebo je potřeba ji nainstalovat offline, postupujte podle pokynů pro offline nebo konkrétní instalaci verze dále v tomto článku.

Nainstalujte IoT Edge verze 1.1.* spolu s balíčkem libiothsm-std :

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

Poznámka:

IoT Edge verze 1.1 je dlouhodobá větev ioT Edge. Pokud používáte starší verzi, doporučujeme nainstalovat nebo aktualizovat nejnovější opravu, protože starší verze už nejsou podporované.

Zřízení zařízení s využitím cloudové identity

Jakmile je modul runtime nainstalovaný na vašem zařízení, nakonfigurujte zařízení s informacemi, které používá pro připojení ke službě zřizování zařízení a ioT Hubu.

Připravte si následující informace:

  • Hodnota oboru ID DPS. Tuto hodnotu můžete načíst ze stránky přehledu vaší instance DPS na webu Azure Portal.
  • Soubor řetězu certifikátů identity zařízení v zařízení.
  • Soubor klíče identity zařízení v zařízení.
  1. Otevřete konfigurační soubor na zařízení IoT Edge.

    sudo nano /etc/iotedge/config.yaml
    
  2. Vyhledejte část konfigurace zřizování souboru. Odkomentujte řádky pro zřizování certifikátů DPS X.509 a ujistěte se, že jsou zakomentované všechny ostatní řádky zřizování.

    Řádek provisioning: by neměl mít žádné předchozí prázdné znaky a vnořené položky by měly být odsazené o dvě mezery.

    # 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. Aktualizujte hodnoty a scope_ididentity_certidentity_pk informacemi o dps a zařízení.

    Když do souboru config.yaml přidáte informace o certifikátu X.509 a klíči, měly by se cesty poskytnout jako identifikátory URI souborů. Příklad:

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

  4. Volitelně můžete zadat registration_id zařízení, které musí odpovídat běžnému názvu certifikátu identity. Pokud tento řádek necháte zakomentovaný, použije se cn automaticky.

  5. Volitelně můžete pomocí always_reprovision_on_startup řádků dynamic_reprovisioning nakonfigurovat chování opětovného zřízení zařízení. Pokud je zařízení nastavené na opětovné zřízení při spuštění, vždy se nejprve pokusí zřídit službu DPS a v případě selhání se vrátí do zálohy zřizování. Pokud je zařízení nastavené na dynamické opětovné zřízení, IoT Edge (a všechny moduly) se restartuje a znovu vytvoří, pokud se zjistí událost opětovného zřízení, například pokud se zařízení přesune z jednoho IoT Hubu do jiného. Konkrétně IoT Edge kontroluje bad_credential nebo device_disabled chyby ze sady SDK za účelem zjištění události opětovného zřízení. Pokud chcete tuto událost aktivovat ručně, zakažte zařízení v IoT Hubu. Další informace najdete v tématu Koncepty opětovného zřízení zařízení ve službě IoT Hub.

  6. Uložte a zavřete soubor config.yaml.

  7. Restartujte modul runtime IoT Edge, aby se zachytály všechny změny konfigurace, které jste provedli na zařízení.

    sudo systemctl restart iotedge
    

Ověření úspěšné instalace

Pokud se modul runtime úspěšně spustil, můžete přejít do služby IoT Hub a začít nasazovat moduly IoT Edge do zařízení.

Můžete ověřit, že se použila jednotlivá registrace, kterou jste vytvořili ve službě device Provisioning. Na webu Azure Portal přejděte k instanci služby zřizování zařízení. Otevřete podrobnosti o registraci pro jednotlivou registraci, kterou jste vytvořili. Všimněte si, že se přiřadí stav registrace a zobrazí se ID zařízení.

Pomocí následujících příkazů na zařízení ověřte, že se IoT Edge nainstaloval a úspěšně spustil.

Zkontrolujte stav služby IoT Edge.

systemctl status iotedge

Prozkoumejte protokoly služby.

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

Výpis spuštěných modulů

iotedge list

Další kroky

Proces registrace služby Device Provisioning umožňuje nastavit ID zařízení a značky dvojčat zařízení současně se zřízením nového zařízení. Tyto hodnoty můžete použít k cílení na jednotlivá zařízení nebo skupiny zařízení pomocí automatické správy zařízení. Zjistěte, jak nasadit a monitorovat moduly IoT Edge ve velkém měřítku pomocí webu Azure Portal nebo pomocí Azure CLI.