Megosztás a következőn keresztül:


IoT Edge-eszközök létrehozása és kiépítése nagy méretekben Linuxon X.509-tanúsítványok használatával

A következőkre vonatkozik: igen ikon IoT Edge 1.1

Fontos

Az IoT Edge 1.1 támogatási dátuma 2022. december 13. volt. A termék, szolgáltatás, technológia vagy API támogatásáról a Microsoft-termékek életciklusa című leírásból tájékozódhat. Az IoT Edge legújabb verziójára való frissítésről további információt az IoT Edge frissítése című témakörben talál.

Ez a cikk egy vagy több Linux IoT Edge-eszköz X.509-tanúsítványokkal történő automatikus fejlesztésére vonatkozó részletes utasításokat tartalmaz. Az Azure IoT Edge-eszközöket automatikusan kiépítheti az Azure IoT Hub eszközkiépítési szolgáltatással (DPS). Ha nem ismeri az automatikus kiépítés folyamatát, a folytatás előtt tekintse át a kiépítés áttekintését .

A feladatok a következők:

  1. Tanúsítványok és kulcsok létrehozása.
  2. Hozzon létre egyéni regisztrációt egyetlen eszközhöz vagy csoportregisztrációhoz egy eszközcsoporthoz.
  3. Telepítse az IoT Edge-futtatókörnyezetet, és regisztrálja az eszközt az IoT Hubon.

Az X.509-tanúsítványok igazolási mechanizmusként való használata kiváló módszer az éles környezet méretezésére és az eszközök kiépítésének egyszerűsítésére. Az X.509-tanúsítványok általában megbízhatósági tanúsítványláncba vannak rendezve. Az önaláírt vagy megbízható főtanúsítványtól kezdve a lánc minden tanúsítványa aláírja a következő alacsonyabb tanúsítványt. Ez a minta egy delegált megbízhatósági láncot hoz létre a főtanúsítványtól kezdve az egyes köztes tanúsítványokon át az eszközön telepített végső alsóbb rétegbeli eszköztanúsítványig.

Tipp.

Ha az eszköz hardveres biztonsági modullal (HSM), például TPM 2.0-s verzióval rendelkezik, javasoljuk, hogy az X.509-kulcsokat biztonságosan tárolja a HSM-ben. Az iotedge-tpm2cloud mintával kapcsolatos tervben ismertetett, érintés nélküli üzembe helyezés nagy léptékű implementálásával kapcsolatos további információk.

Előfeltételek

Felhőbeli erőforrások

  • Aktív IoT Hub
  • Az IoT Hub eszközkiépítési szolgáltatásának egy példánya az Azure-ban, az IoT Hubhoz csatolva
    • Ha nem rendelkezik eszközkiépítési szolgáltatáspéldánysal, kövesse az új IoT Hub-eszközkiépítési szolgáltatás létrehozása, valamint az IoT Hub és az IoT Hub eszközkiépítési szolgáltatás szakaszainak összekapcsolása rövid útmutatójában leírtakat.
    • Az eszközkiépítési szolgáltatás futtatása után másolja ki az azonosító hatókörének értékét az áttekintési oldalról. Ezt az értéket az IoT Edge-futtatókörnyezet konfigurálásakor használja.

Eszközkövetelmények

Egy fizikai vagy virtuális Linux-eszköz, amely az IoT Edge-eszköz.

Eszközidentitás-tanúsítványok létrehozása

Az eszközidentitás-tanúsítvány egy alsóbb rétegbeli eszköztanúsítvány, amely egy megbízhatósági tanúsítványláncon keresztül csatlakozik a legfelső X.509 hitelesítésszolgáltatói (CA-) tanúsítványhoz. Az eszköz identitástanúsítványának a köznapi nevét (CN) arra az eszközazonosítóra kell beállítania, amelyet az eszköznek az IoT Hubban szeretne használni.

Az eszközidentitás-tanúsítványok csak az IoT Edge-eszköz kiépítéséhez és az eszköz Azure IoT Hubbal való hitelesítéséhez használhatók. Nem aláíró tanúsítványok, ellentétben azokkal a hitelesítésszolgáltatói tanúsítványokkal, amelyeket az IoT Edge-eszköz a moduloknak vagy az alsóbb rétegbeli eszközöknek biztosít ellenőrzés céljából. További információ: Azure IoT Edge-tanúsítványhasználat részletei.

Az eszközidentitás-tanúsítvány létrehozása után két fájlnak kell lennie: egy .cer vagy .pem fájllal, amely tartalmazza a tanúsítvány nyilvános részét, valamint egy .cer vagy .pem fájllal, amely a tanúsítvány titkos kulcsával rendelkezik. Ha csoportregisztrációt szeretne használni a DPS-ben, szüksége lesz egy köztes vagy fő hitelesítésszolgáltatói tanúsítvány nyilvános részére ugyanabban a tanúsítványláncban.

Az X.509-zel való automatikus üzembe helyezés beállításához a következő fájlokra van szüksége:

  • Az eszköz identitástanúsítványa és titkoskulcs-tanúsítványa. Az eszköz identitástanúsítványa akkor lesz feltöltve a DPS-be, ha egyéni regisztrációt hoz létre. A titkos kulcsot a rendszer átadja az IoT Edge-futtatókörnyezetnek.
  • Teljes láncú tanúsítvány, amelynek legalább az eszközidentitással és a köztes tanúsítványokkal kell rendelkeznie. A teljes lánctanúsítvány az IoT Edge-futtatókörnyezetnek lesz átadva.
  • Köztes vagy fő hitelesítésszolgáltatói tanúsítvány a megbízhatósági tanúsítványláncból. Ez a tanúsítvány akkor lesz feltöltve a DPS-be, ha csoportregisztrációt hoz létre.

Feljegyzés

Jelenleg a libiothsm korlátozása megakadályozza a 2038. január 1-jén vagy azt követően lejáró tanúsítványok használatát.

Teszttanúsítványok használata (nem kötelező)

Ha nem rendelkezik olyan hitelesítésszolgáltatóval, amely új identitástanúsítványokat hozna létre, és ki szeretné próbálni ezt a forgatókönyvet, az Azure IoT Edge Git-adattár olyan szkripteket tartalmaz, amelyekkel teszttanúsítványokat hozhat létre. Ezek a tanúsítványok csak fejlesztési tesztelésre vannak tervezve, és éles környezetben nem használhatók.

Teszttanúsítványok létrehozásához kövesse a demótanúsítványok létrehozása című témakörben leírt lépéseket az IoT Edge eszközfunkcióinak teszteléséhez. Töltse ki a tanúsítványgenerálási szkriptek beállításához és egy legfelső szintű hitelesítésszolgáltatói tanúsítvány létrehozásához szükséges két szakaszt. Ezután kövesse az eszközidentitás-tanúsítvány létrehozásához szükséges lépéseket. Ha végzett, a következő tanúsítványláncot és kulcspárt kell tartalmaznia:

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

Mindkét tanúsítványra szüksége van az IoT Edge-eszközön. Ha egyéni regisztrációt fog használni a DPS-ben, akkor feltölti a .cert.pem fájlt. Ha csoportregisztrációt fog használni a DPS-ben, akkor egy köztes vagy fő hitelesítésszolgáltatói tanúsítványra is szüksége lesz ugyanabban a megbízhatósági tanúsítványláncban a feltöltéshez. Ha demó tanúsítványokat használ, használja a tanúsítványt a <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem csoportregisztrációhoz.

DPS-regisztráció létrehozása

A létrehozott tanúsítványok és kulcsok használatával hozzon létre regisztrációt a DPS-ben egy vagy több IoT Edge-eszközhöz.

Ha egyetlen IoT Edge-eszközt szeretne kiépíteni, hozzon létre egy egyéni regisztrációt. Ha több eszköz kiépítésére van szüksége, kövesse a DPS-csoportregisztráció létrehozásának lépéseit.

Amikor létrehoz egy regisztrációt a DPS-ben, lehetősége van az ikereszköz kezdeti állapotának deklarálására. Az ikereszközön beállíthatja, hogy a címkéket a megoldásban szükséges bármely metrika alapján csoportosítsa, például régió, környezet, hely vagy eszköztípus szerint. Ezek a címkék automatikus üzembe helyezéseket hoznak létre.

Az eszközkiépítési szolgáltatásban történő regisztrációval kapcsolatos további információkért tekintse meg az eszközregisztrációk kezelését ismertető témakört.

DPS-egyéni regisztráció létrehozása

Az egyéni regisztrációk átveszik az eszköz identitástanúsítványának nyilvános részét, és megegyeznek az eszközön található tanúsítvánnyal.

Tipp.

A cikkben szereplő lépések az Azure Portalon érhetők el, de egyéni regisztrációkat is létrehozhat az Azure CLI használatával. További információ: az iot dps-regisztráció. A CLI-parancs részeként használja az edge-kompatibilis jelzőt annak megadásához, hogy a regisztráció egy IoT Edge-eszközhöz tartozik- e.

  1. Az Azure Portalon keresse meg az IoT Hub eszközkiépítési szolgáltatás példányát.

  2. A Beállítások területen válassza a Regisztrációk kezelése lehetőséget.

  3. Válassza az Egyéni regisztráció hozzáadása lehetőséget, majd végezze el a következő lépéseket a regisztráció konfigurálásához:

    • Mechanizmus: Válassza az X.509-et.

    • Elsődleges tanúsítvány .pem vagy .cer fájl: Töltse fel a nyilvános fájlt az eszköz identitástanúsítványából. Ha teszttanúsítvány létrehozásához használta a szkripteket, válassza a következő fájlt:

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

    • IoT Hub-eszközazonosító: Adjon meg egy azonosítót az eszközéhez, ha szeretné. Az eszközazonosítókkal egy-egy eszközt célozhat meg a modul üzembe helyezéséhez. Ha nem ad meg eszközazonosítót, a rendszer az X.509-tanúsítványban szereplő köznapi nevet (CN) használja.

    • IoT Edge-eszköz: Válassza az Igaz lehetőséget annak deklarálásához, hogy a regisztráció egy IoT Edge-eszközre vonatkozik.

    • Válassza ki azokat az IoT Hubokat, amelyekhez az eszköz hozzárendelhető: Válassza ki azt a csatolt IoT Hubot, amelyhez csatlakoztatni szeretné az eszközt. Több központot is választhat, és az eszköz a kiválasztott foglalási szabályzatnak megfelelően az egyikhez lesz hozzárendelve.

    • Kezdeti ikereszköz-állapot: Ha szeretné, adjon hozzá egy címkeértéket az ikereszközhöz. Címkék használatával célcsoportokat célozhat meg az automatikus üzembe helyezéshez. Példa:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. Válassza a Mentés lehetőséget.

A Regisztrációk kezelése csoportban láthatja az imént létrehozott regisztráció regisztrációs azonosítóját. Jegyezze fel, mivel az eszköz kiépítésekor használható.

Most, hogy már létezik regisztráció ehhez az eszközhöz, az IoT Edge-futtatókörnyezet automatikusan kiépítheti az eszközt a telepítés során.

Az IoT Edge telepítése

Ebben a szakaszban előkészíti Linux rendszerű virtuális gépét vagy fizikai eszközét az IoT Edge-hez. Ezután telepítse az IoT Edge-et.

Futtassa az alábbi parancsokat a csomagtárház hozzáadásához, majd adja hozzá a Microsoft-csomagaláíró kulcsot a megbízható kulcsok listájához.

Fontos

2022. június 30-án a Raspberry Pi OS Stretch kilépett az 1. rétegbeli operációsrendszer-támogatási listából. A lehetséges biztonsági rések elkerülése érdekében frissítse a gazdagép operációs rendszerét a Bullseye-re.

A telepítés néhány paranccsal elvégezhető. Nyisson meg egy terminált, és futtassa a következő parancsokat:

  • 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
    

Feljegyzés

Az Azure IoT Edge szoftvercsomagjaira az egyes csomagokban (usr/share/doc/{package-name} vagy a LICENSE címtárban) található licencfeltételek vonatkoznak. A csomag használata előtt olvassa el a licencfeltételeket. A csomagok telepítése és használata jelenti a jelen feltételek elfogadását. Ha nem ért egyet a licencfeltételekkel, ne használja ezt a csomagot.

Tárolómotor telepítése

Az Azure IoT Edge egy OCI-kompatibilis tároló-futtatókörnyezetre támaszkodik. Éles helyzetekben javasoljuk, hogy használja a Moby motort. A Moby motor az egyetlen olyan tárolómotor, amelyet hivatalosan támogat az IoT Edge. A Docker CE/EE tárolórendszerképei kompatibilisek a Moby futtatókörnyezetével.

Telepítse a Moby motort.

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

A Moby motor sikeres telepítése után konfigurálja úgy, hogy naplózási illesztőprogramot használjon local naplózási mechanizmusként. A naplózási konfigurációval kapcsolatos további információkért tekintse meg az éles üzembehelyezési ellenőrzőlistát.

  • Hozza létre vagy nyissa meg a Docker démon konfigurációs fájlját a következő helyen /etc/docker/daemon.json: .

  • Állítsa be az alapértelmezett naplózási illesztőprogramot a local naplózási illesztőprogramra az alábbi példában látható módon.

       {
          "log-driver": "local"
       }
    
  • Indítsa újra a tárolómotort a módosítások érvénybe lépéséhez.

    sudo systemctl restart docker
    

    Tipp.

    Ha hibaüzenetet kap a Moby tárolómotor telepítésekor, ellenőrizze a Linux kernelt a Moby kompatibilitása érdekében. Egyes beágyazott eszközgyártók egyéni Linux-kerneleket tartalmazó eszközlemezképeket szállítanak a tárolómotorok kompatibilitásához szükséges funkciók nélkül. Futtassa az alábbi parancsot, amely a Moby által biztosított ellenőrzőkonfigurációs szkriptet használja a kernelkonfiguráció ellenőrzéséhez:

    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
    

    A szkript kimenetében ellenőrizze, hogy az összes elem be Generally Necessary van-e kapcsolva, és Network Drivers engedélyezve van-e. Ha hiányoznak a funkciók, engedélyezze őket úgy, hogy újraépíti a kernelt a forrásból, és kiválasztja a kapcsolódó modulokat a megfelelő kernel .config fájlba való felvételéhez. Hasonlóképpen, ha kernelkonfigurációs generátort használ, például defconfig vagy menuconfig, keresse meg és engedélyezze a megfelelő funkciókat, és ennek megfelelően építse újra a kernelt. Az újonnan módosított kernel üzembe helyezése után futtassa újra a check-config szkriptet annak ellenőrzéséhez, hogy az összes szükséges funkció sikeresen engedélyezve lett-e.

Az IoT Edge-futtatókörnyezet telepítése

Az IoT Edge biztonsági démon biztonsági szabványokat biztosít és tart fenn az IoT Edge-eszközön. A démon minden rendszerindításkor elindul, és az IoT Edge többi futtatókörnyezetének elindításával elindítja az eszközt.

Az ebben a szakaszban ismertetett lépések a legújabb verzió internetkapcsolattal rendelkező eszközre való telepítésének tipikus folyamatát jelölik. Ha telepítenie kell egy adott verziót, például egy előzetes verziót, vagy offline állapotban kell telepítenie, kövesse az Offline vagy adott verzió telepítési lépéseit a jelen cikk későbbi részében.

Telepítse az IoT Edge 1.1.* verzióját a libiothsm-std csomaggal együtt:

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

Feljegyzés

Az IoT Edge 1.1-es verziója az IoT Edge hosszú távú támogatási ága. Ha régebbi verziót futtat, javasoljuk, hogy telepítse vagy frissítse a legújabb javításra, mivel a régebbi verziók már nem támogatottak.

Az eszköz kiépítése a felhőbeli identitással

Miután telepítette a futtatókörnyezetet az eszközön, konfigurálja az eszközt az eszközkiépítési szolgáltatáshoz és az IoT Hubhoz való csatlakozáshoz használt információkkal.

Készítse fel a következő információkat:

  • A DPS-azonosító hatókörének értéke. Ezt az értéket lekérheti a DPS-példány áttekintési oldaláról az Azure Portalon.
  • Az eszköz identitástanúsítvány-láncfájlja az eszközön.
  • Az eszköz identitáskulcsfájlja az eszközön.
  1. Nyissa meg a konfigurációs fájlt az IoT Edge-eszközön.

    sudo nano /etc/iotedge/config.yaml
    
  2. Keresse meg a fájl kiépítési konfigurációs szakaszát. Bontsa ki a DPS X.509-tanúsítványkiépítés sorait, és ellenőrizze, hogy a többi kiépítési sor megjegyzésben van-e.

    A provisioning: vonalnak nem szabad korábbi szóközzel rendelkeznie, a beágyazott elemeket pedig két szóközzel kell behúzni.

    # 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. Frissítse az scope_id, identity_certés a DPS és identity_pk az eszköz adatait.

    Amikor hozzáadja az X.509-tanúsítványt és a kulcsinformációkat a config.yaml fájlhoz, az elérési utakat fájl URI-kként kell megadni. Példa:

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

  4. Igény szerint adja meg az registration_id eszköz nevét, amelynek meg kell egyeznie az identitástanúsítvány köznapi nevével (CN). Ha ezt a sort megjegyzésként hagyja, a rendszer automatikusan alkalmazza a CN-t.

  5. Igény szerint az eszköz újraépítési viselkedésének konfigurálásához használja a always_reprovision_on_startup vonalakat vagy dynamic_reprovisioning a vonalakat. Ha egy eszköz újraépítésre van beállítva az indításkor, mindig először megpróbál kiépíteni a DPS-t, majd visszaáll a kiépítési biztonsági mentésre, ha ez nem sikerül. Ha egy eszköz dinamikus újraépítésre van beállítva, az IoT Edge (és az összes modul) újraindul és újraépül, ha újraépítési eseményt észlel, például ha az eszközt az egyik IoT Hubról a másikra helyezi át. Az IoT Edge pontosabban az SDK-tól érkező hibákat ellenőrzi vagy device_disabled ellenőrzi bad_credential az újraépítési esemény észleléséhez. Az esemény manuális aktiválásához tiltsa le az eszközt az IoT Hubban. További információ: IoT Hub-eszközök újraépítési fogalmai.

  6. Mentse és zárja be a config.yaml fájlt.

  7. Indítsa újra az IoT Edge-futtatókörnyezetet, hogy az átvegye az eszközön végrehajtott összes konfigurációs módosítást.

    sudo systemctl restart iotedge
    

Sikeres telepítés ellenőrzése

Ha a futtatókörnyezet sikeresen elindult, bemehet az IoT Hubba, és megkezdheti az IoT Edge-modulok üzembe helyezését az eszközön.

Ellenőrizheti, hogy az eszközkiépítési szolgáltatásban létrehozott egyéni regisztrációt használták-e. Lépjen az eszközkiépítési szolgáltatáspéldányra az Azure Portalon. Nyissa meg a létrehozott egyéni regisztráció regisztrációs adatait. Figyelje meg, hogy a regisztráció állapota ki van rendelve , és az eszközazonosító megjelenik a listában.

Az eszközön az alábbi parancsokkal ellenőrizheti, hogy az IoT Edge sikeresen telepítve van-e és elindult-e.

Ellenőrizze az IoT Edge-szolgáltatás állapotát.

systemctl status iotedge

Vizsgálja meg a szolgáltatásnaplókat.

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

Futó modulok listázása.

iotedge list

Következő lépések

Az eszközkiépítési szolgáltatás regisztrációs folyamata lehetővé teszi az eszközazonosító és az ikereszköz-címkék beállítását az új eszköz üzembe helyezésével egyidejűleg. Ezekkel az értékekkel egyéni eszközöket vagy eszközcsoportokat célozhat meg automatikus eszközkezeléssel. Megtudhatja, hogyan helyezhet üzembe és monitorozhat IoT Edge-modulokat nagy méretekben az Azure Portalon vagy az Azure CLI használatával.