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


Oktatóanyag: Regisztráció konfigurálása biztonságos átviteli kiszolgálón keresztül az Azure IoT Edge-hez

A következőkre vonatkozik:IoT Edge 1.5 pipa IoT Edge 1.5

Fontos

Az IoT Edge 1.5 LTS a támogatott kiadás. Az IoT Edge 1.4 LTS 2024. november 12-én megszűnik. Ha egy korábbi kiadáson dolgozik, olvassa el az IoT Edge frissítése című témakört.

Az Azure IoT Edge-lel úgy konfigurálhatja eszközeit, hogy az x509-tanúsítványok kezeléséhez egy EST-kiszolgálón keresztüli regisztrációt használjon.

Ez az oktatóanyag végigvezeti egy teszt EST-kiszolgáló üzemeltetésén és egy IoT Edge-eszköz konfigurálásán az x509-tanúsítványok regisztrációjához és megújításához. Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Teszt EST-kiszolgáló létrehozása és üzemeltetéséhez
  • DPS-csoportregisztráció konfigurálása
  • Eszköz konfigurálása

Az oktatóanyag elvégzéséhez szükséges három lépés magas szintű áttekintését bemutató diagram.

Előfeltételek

Feljegyzés

Az EST és az IoT Edge automatikus eszközidentitás-tanúsítvány kiállításához és megújításához, amely éles környezetben ajánlott, az IoT Edge-nek a DPS CA-alapú regisztrációs csoport részeként kell kiépítenie. Az egyéb kiépítési módszerek, köztük az IoT Hub és a DPS egyéni regisztrációval történő manuális X.509-kiépítése nem támogatják az eszközidentitás-tanúsítványok automatikus megújítását.

Mi az a biztonságos átvitelen keresztüli regisztráció?

A biztonságos átvitelen (EST) keresztüli regisztráció egy titkosítási protokoll, amely automatizálja az x.509-tanúsítványok kiállítását. Nyilvános kulcsú infrastruktúra (PKI) ügyfelekhez használatos, például olyan IoT Edge-ügyfelekhez, amelyekhez hitelesítésszolgáltatóhoz (CA) társított ügyféltanúsítványok szükségesek. Az EST felváltja a manuális tanúsítványkezelés szükségességét, ami kockázatos és hibalehetőséget jelenthet.

EST-kiszolgáló

A tanúsítványok kiállításához és megújításához szüksége van egy, az eszközök számára elérhető EST-kiszolgálóra.

Fontos

Nagyvállalati szintű megoldások esetén fontolja meg a GlobalSign IoT Edge-regisztrációt vagy a DigiCert IoT-Eszközkezelő.

Teszteléshez és fejlesztéshez használhat teszt EST-kiszolgálót. Ebben az oktatóanyagban létrehozunk egy teszt EST-kiszolgálót.

EST-kiszolgáló futtatása eszközön

A gyors kezdéshez ez az oktatóanyag bemutatja az egyszerű EST-kiszolgáló helyi tárolóban való üzembe helyezésének lépéseit az IoT Edge-eszközön. Ez a módszer a legegyszerűbb módszer a kipróbálására.

A Dockerfile az Ubuntu 18.04-et, egy Cisco-kódtárat, egy libest, és egy mintakiszolgáló-kódot használ. A következő beállítással van konfigurálva:

  • A legfelső szintű hitelesítésszolgáltató 20 évig érvényes
  • 10 évig érvényes EST-kiszolgálótanúsítvány
  • A tanúsítvány alapértelmezett napjainak beállítása 1-re az EST megújításának teszteléséhez
  • Az EST-kiszolgáló helyileg fut az IoT Edge-eszközön egy tárolóban

Figyelemfelhívás

Ne használja ezt a Dockerfile-t éles környezetben.

  1. Csatlakozzon az eszközhöz, például az SSH használatával, ahol telepítette az IoT Edge-et.

  2. Hozzon létre egy (kis- és nagybetűk megkülönböztetése) nevű Dockerfile fájlt, és adja hozzá a mintatartalmat a kedvenc szövegszerkesztőjével.

    Tipp.

    Ha az EST-kiszolgálót az Azure Container Instance-ben szeretné üzemeltetni, váltson myestserver.westus.azurecontainer.io az EST-kiszolgáló DNS-nevére. A DNS-név kiválasztásakor vegye figyelembe, hogy egy Azure Container-példány DNS-címkéjének legalább öt karakter hosszúságúnak kell lennie.

    # 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. Az Önét Dockerfiletartalmazó könyvtárban hozza létre a rendszerképet a dockerfile-mintafájlból.

    sudo docker build . --tag est
    
  4. Indítsa el a tárolót, és tegye elérhetővé a tároló 8085-ös portját a gazdagép 8085-ös portján.

    sudo docker run -d -p 8085:8085 est
    
  5. Most az EST-kiszolgáló fut, és a 8085-ös porton érhető el localhost . Ellenőrizze, hogy elérhető-e egy parancs futtatásával a kiszolgálótanúsítvány megtekintéséhez.

    openssl s_client -showcerts -connect localhost:8085
    
  6. A kimenet közepén kell megjelennie -----BEGIN CERTIFICATE----- . A tanúsítvány lekérése ellenőrzi, hogy a kiszolgáló elérhető-e, és be tudja-e mutatni a tanúsítványát.

Tipp.

A tároló felhőben való futtatásához hozza létre a lemezképet, és küldje el a rendszerképet az Azure Container Registrybe. Ezután kövesse a rövid útmutatót az Azure Container Instance-ben való üzembe helyezéshez.

Ca-tanúsítvány letöltése

Minden eszközhöz szükség van az eszközidentitás-tanúsítványhoz társított hitelesítésszolgáltatói (CA-) tanúsítványra.

  1. Az IoT Edge-eszközön hozza létre a /var/aziot/certs könyvtárat, ha nem létezik, majd módosítsa a könyvtárat.

    # If the certificate directory doesn'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. Kérje le a hitelesítésszolgáltatói tanúsítványt az EST-kiszolgálóról a /var/aziot/certs címtárba, és nevezze el.cacert.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. A tanúsítványoknak az aziotcs kulcsszolgáltatás-felhasználónak kell lenniük. Állítsa be a tulajdonjogot aziotcs értékre az összes tanúsítványfájlhoz, és állítsa be az engedélyeket. A tanúsítvány tulajdonjogával és engedélyekkel kapcsolatos további információkért tekintse meg az engedélykövetelményeket.

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

IoT Edge-eszköz kiépítése a DPS használatával

A Device Provisioning Service használatával automatikusan kibocsáthatja és megújíthatja a tanúsítványokat egy EST-kiszolgálóról az IoT Edge-ben. Az oktatóanyag EST-kiszolgáló használatakor az identitástanúsítványok egy napon belül lejárnak, így az IoT Hub manuális kiépítése nem praktikus, mivel minden alkalommal, amikor a tanúsítvány lejár, az ujjlenyomatot manuálisan kell frissíteni az IoT Hubban. A dps ca-hitelesítés a regisztrációs csoporttal lehetővé teszi az eszköz identitástanúsítványainak manuális lépések nélküli megújítását.

Ca-tanúsítvány feltöltése a DPS-be

  1. Ha nem rendelkezik IoT Hubhoz társított eszközkiépítési szolgáltatással, olvassa el a rövid útmutatót: Az IoT Hub eszközkiépítési szolgáltatásának beállítása az Azure Portalon.

  2. A fájl átvitele az cacert.crt.pem eszközről egy olyan számítógépre, amely hozzáfér az Azure Portalhoz, például a fejlesztői számítógéphez. A tanúsítvány átvitelének egyszerű módja, ha távolról csatlakozik az eszközhöz, megjeleníti a tanúsítványt a paranccsal cat /var/aziot/certs/cacert.crt.pem, másolja ki a teljes kimenetet, és illessze be a tartalmat egy új fájlba a fejlesztői számítógépen.

  3. Az Azure Portalon keresse meg az IoT Hub Device Provisioning Service-példányt.

  4. A Beállítások területen válassza a Tanúsítványok, majd a +Hozzáadás lehetőséget.

    Képernyőkép, amely ca-tanúsítványt ad hozzá a Device Provisioning Service-hez az Azure Portal használatával.

    Beállítás Érték
    Tanúsítvány neve Adjon meg egy rövid nevet a hitelesítésszolgáltatói tanúsítványnak
    Tanúsítvány .pem vagy .cer fájlja Tallózás az cacert.crt.pem EST-kiszolgálóról
    Tanúsítvány állapotának beállítása a feltöltés során ellenőrzött állapotra Jelölje be a jelölőnégyzetet
  5. Válassza a Mentés lehetőséget.

Regisztrációs csoport létrehozása

  1. Az Azure Portalon keresse meg az IoT Hub Device Provisioning Service-példányt.

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

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

  4. A Regisztráció + kiépítés lapon válassza a következő beállításokat:

    Képernyőkép a DPS regisztrációs csoport azure portalon való hozzáadásáról.

    Beállítás Érték
    Igazolási mechanizmus Válassza ki a Device Provisioning Service-példányra feltöltött X.509-tanúsítványokat
    Elsődleges tanúsítvány A tanúsítvány kiválasztása a legördülő listából
    Csoport neve Adjon meg egy rövid nevet ennek a csoportregisztrációnak
    Kiépítés állapota Jelölje be A regisztráció engedélyezése jelölőnégyzetet
  5. Az IoT Hubs lapon válassza ki az IoT Hubot a listából.

  6. Az Eszközbeállítások lapon jelölje be az IoT Edge engedélyezése kiépített eszközökön jelölőnégyzetet.

    A többi beállítás nem releváns az oktatóanyag szempontjából. Elfogadhatja az alapértelmezett beállításokat.

  7. Válassza az Áttekintés + létrehozás lehetőséget.

Most, hogy már létezik regisztráció az eszközhöz, az IoT Edge-futtatókörnyezet automatikusan kezelheti a csatolt IoT Hub eszköztanúsítványait.

IoT Edge-eszköz konfigurálása

Az IoT Edge-eszközön frissítse az IoT Edge konfigurációs fájlt az EST-kiszolgáló eszköztanúsítványainak használatára.

  1. Nyissa meg az IoT Edge konfigurációs fájlját egy szerkesztő használatával. A fájl megnyitásához használja például a nano szerkesztőt /etc/aziot/config.toml .

    sudo nano /etc/aziot/config.toml
    
  2. Adja hozzá vagy cserélje le a következő szakaszokat a konfigurációs fájlban. Ezek a konfigurációs beállítások kezdetben felhasználónév- és jelszó-hitelesítést használnak az eszköztanúsítvány lekéréséhez az EST-kiszolgálóról. Az eszköztanúsítvány az EST-kiszolgálón való hitelesítésre szolgál a későbbi tanúsítványmegújításokhoz.

    Cserélje le a következő helyőrző szöveget: <DPS-ID-SCOPE> a regisztrált eszközt tartalmazó IoT Hubhoz csatolt DPS azonosító hatókörére , valamint myiotedgedevice az Azure IoT Hubban regisztrált eszközazonosítóra. Az azonosító hatókörének értékét a DPS áttekintési oldalán találja.

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

    Feljegyzés

    Ebben a példában az IoT Edge felhasználónévvel és jelszóval hitelesíti az EST-kiszolgálót minden alkalommal, amikor tanúsítványt kell beszereznie. Ez a módszer éles környezetben nem ajánlott, mert 1) titkos kód egyszerű szövegben való tárolását igényli, 2) Az IoT Edge-nek identitástanúsítványt kell használnia az EST-kiszolgálón való hitelesítéshez is. Éles környezet módosítása:

    1. Érdemes lehet olyan hosszú élettartamú bootstrap-tanúsítványokat használni, amelyek a DPS-hez javasolt módszerhez hasonlóan tárolhatók az eszközön a gyártás során. A bootstrap-tanúsítvány EST-kiszolgálóhoz való konfigurálásához lásd : Eszköz hitelesítése dinamikusan kibocsátott tanúsítványokkal az EST-en keresztül.
    2. Konfigurálja [cert_issuance.est.identity_auto_renew] ugyanazt a szintaxist , mint a fenti kiépítési tanúsítvány automatikus megújítási konfigurációja.

    IoT Edge-tanúsítványszolgáltatás így a bootstrap-tanúsítványt használja az EST-kiszolgálóval való kezdeti hitelesítéshez, és identitástanúsítványt kér a jövőbeli EST-kérelmekhez ugyanahhoz a kiszolgálóhoz. Ha valamilyen okból az EST identitástanúsítvány a megújítás előtt lejár, az IoT Edge visszatér a rendszerindító tanúsítvány használatára.

  3. Futtassa sudo iotedge config apply az új beállításokat.

  4. Futtassa sudo iotedge check az IoT Edge-eszköz konfigurációjának ellenőrzéséhez. Minden konfigurációs ellenőrzésnek sikeresnek kell lennie. Ebben az oktatóanyagban figyelmen kívül hagyhatja az éles üzemkészségi hibákat és figyelmeztetéseket, a DNS-kiszolgáló figyelmeztetéseit és a kapcsolati ellenőrzéseket.

  5. Lépjen az eszközére az IoT Hubon. A tanúsítvány ujjlenyomatait a DPS és az EST-kiszolgáló használatával automatikusan hozzáadtuk az eszközhöz.

    Képernyőkép az IoT Hub eszközbeállításairól az Azure Portalon. A tanúsítvány ujjlenyomatának mezői értékeket mutatnak.

    Feljegyzés

    Új IoT Edge-eszköz létrehozásakor megjelenik az állapotkód 417 -- The device's deployment configuration is not set in the Azure portal. Ez az állapot normál, és azt jelenti, hogy az eszköz készen áll a modul üzembe helyezésére.

Tanúsítvány megújításának tesztelése

Az eszköz identitástanúsítványait azonnal újra kiadhatja úgy, hogy eltávolítja a meglévő tanúsítványokat és kulcsokat az eszközről, majd alkalmazza az IoT Edge-konfigurációt. Az IoT Edge észleli a hiányzó fájlokat, és új tanúsítványokat kér.

  1. Az IoT Edge-eszközön állítsa le az IoT Edge-futtatókörnyezetet.

    sudo iotedge system stop
    
  2. Törölje a meglévő tanúsítványokat és kulcsokat.

    sudo sh -c "rm /var/lib/aziot/certd/certs/*"
    sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
    
  3. A tanúsítványok megújításához alkalmazza az IoT Edge-konfigurációt.

    sudo iotedge config apply
    

    Előfordulhat, hogy várnia kell néhány percet, amíg a futtatókörnyezet elindul.

  4. Lépjen az eszközére az IoT Hubon. A tanúsítvány ujjlenyomatai frissültek.

    Képernyőkép az IoT Hub eszközbeállításairól az Azure Portalon. A tanúsítvány ujjlenyomatmezői új értékeket mutatnak.

  5. A parancs sudo ls -l /var/lib/aziot/certd/certshasználatával listázhatja a tanúsítványfájlokat. Látnia kell az eszköztanúsítvány-fájlok legutóbbi létrehozási dátumát.

  6. openssl A parancs használatával ellenőrizze az új tanúsítvány tartalmát. Példa:

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

    Cserélje le az eszköztanúsítvány fájlnevét (.cer) az eszköz tanúsítványfájljára.

    Figyelje meg, hogy a tanúsítvány érvényességi dátumtartománya megváltozott.

Az alábbiakban a tanúsítványmegújítás tesztelésének egyéb módjai is választhatók. Ezek az ellenőrzések bemutatják, hogyan újítja meg az IoT Edge a tanúsítványokat az EST-kiszolgálóról, amikor lejárnak vagy hiányoznak. Minden teszt után ellenőrizheti az új ujjlenyomatokat az Azure Portalon, és openssl a paranccsal ellenőrizheti az új tanúsítványt.

  1. Várjon egy napot a tanúsítvány lejáratára. A teszt EST-kiszolgáló úgy van konfigurálva, hogy olyan tanúsítványokat hozzon létre, amelyek egy nap múlva lejárnak. Az IoT Edge automatikusan megújítja a tanúsítványt.
  2. Próbálja meg beállítani az automatikus megújítás config.toml százalékos értékét threshold (jelenleg 80%-ra van beállítva a példakonfigurációban). Állítsa be például a tanúsítvány megújítását 10% ~ 2 óránként, és figyelje meg.
  3. Próbálja meg beállítani a threshold számot egész számra, majd (perc) értékre m . Állítsa be például a tanúsítvány megújítását 60m 1 órával a lejárat előtt, és figyelje meg.

Az erőforrások eltávolítása

Az oktatóanyagban létrehozott erőforrásokat és konfigurációkat megtarthatja, és újra felhasználhatja őket. Ellenkező esetben törölheti a cikkben használt helyi konfigurációkat és Azure-erőforrásokat a díjak elkerülése érdekében.

Azure-erőforrások törlése

Az Azure-erőforrások és -erőforráscsoportok törlése visszafordíthatatlan. Figyeljen, nehogy véletlenül rossz erőforráscsoportot vagy erőforrásokat töröljön. Ha egy meglévő erőforráscsoporton belül hozta létre az IoT Hubot, amelynek erőforrásait meg szeretné tartani, csak magát az IoT Hub-erőforrást törölje, nem pedig az erőforráscsoportot.

Az erőforrások törlése:

  1. Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.

  2. Válassza ki az IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.

  3. Tekintse át az erőforráscsoport által tartalmazott erőforrások listáját. Ha mindet törölni szeretné, válassza az Erőforráscsoport törlése lehetőséget. Ha csak néhányat szeretne törölni, az egyes erőforrásokat egyenként is törölheti.

Következő lépések