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
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
Előfeltételek
- Egy meglévő IoT Edge-eszköz, amelyen telepítve van a legújabb Azure IoT Edge-futtatókörnyezet . Ha teszteszközt kell létrehoznia, végezze el a rövid útmutatót: Telepítse az első IoT Edge-modult egy virtuális Linux-eszközön.
- Az IoT Edge-eszközhöz az EST-támogatáshoz az Azure IoT Edge 1.2-s vagy újabb futtatókörnyezete szükséges. Az Azure IoT Edge 1.3-s vagy újabb futtatókörnyezete szükséges az EST-tanúsítvány megújításához.
- Az IoT Hubhoz társított IoT Hub Device Provisioning Service (DPS) szolgáltatás. A DPS konfigurálásával kapcsolatos információkért tekintse meg a rövid útmutatót: Az IoT Hub Device Provisioning Service beállítása az Azure Portalon.
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.
Csatlakozzon az eszközhöz, például az SSH használatával, ahol telepítette az IoT Edge-et.
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
Az Önét
Dockerfile
tartalmazó könyvtárban hozza létre a rendszerképet a dockerfile-mintafájlból.sudo docker build . --tag est
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
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
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.
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
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
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
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.
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 paranccsalcat /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.Az Azure Portalon keresse meg az IoT Hub Device Provisioning Service-példányt.
A Beállítások területen válassza a Tanúsítványok, majd a +Hozzáadás lehetőséget.
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ólTanú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 Válassza a Mentés lehetőséget.
Regisztrációs csoport létrehozása
Az Azure Portalon keresse meg az IoT Hub Device Provisioning Service-példányt.
A Beállítások területen válassza a Regisztrációk kezelése lehetőséget.
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.
A Regisztráció + kiépítés lapon válassza a következő beállításokat:
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 Az IoT Hubs lapon válassza ki az IoT Hubot a listából.
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.
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.
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
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 , valamintmyiotedgedevice
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:
- É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.
- 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.
Futtassa
sudo iotedge config apply
az új beállításokat.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.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.
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.
Az IoT Edge-eszközön állítsa le az IoT Edge-futtatókörnyezetet.
sudo iotedge system stop
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/*"
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.
Lépjen az eszközére az IoT Hubon. A tanúsítvány ujjlenyomatai frissültek.
A parancs
sudo ls -l /var/lib/aziot/certd/certs
haszná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.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.
- 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.
- Próbálja meg beállítani az automatikus megújítás
config.toml
százalékos értékétthreshold
(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át10%
~ 2 óránként, és figyelje meg. - Próbálja meg beállítani a
threshold
számot egész számra, majd (perc) értékrem
. Állítsa be például a tanúsítvány megújítását60m
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:
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
Válassza ki az IoT Edge teszterőforrásokat tartalmazó erőforráscsoport nevét.
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
- Ha az EST-kiszolgálót szeretné használni az Edge CA-tanúsítványok kiállításához, tekintse meg a példakonfigurációt.
- Éles környezetben nem ajánlott felhasználónevet és jelszót használni az EST-kiszolgálóra történő hitelesítés elindításához. Ehelyett érdemes lehet olyan hosszú élettartamú bootstrap-tanúsítványokat használni, amelyek a DPS által javasolt megközelítéshez 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.
- Az EST-kiszolgáló a hierarchiában lévő összes eszköz tanúsítványainak kiállítására is használható. Attól függően, hogy rendelkezik ISA-95-követelményekkel, szükség lehet egy EST-kiszolgálólánc futtatására minden rétegben, vagy az API-proxymodul használatával továbbítani a kéréseket. További információ: Kevin blogja.
- Nagyvállalati szintű megoldások esetén vegye figyelembe a következőket: GlobalSign IoT Edge Enroll, DigiCert IoT Eszközkezelő és Keytos EZCA.
- A tanúsítványokról további információt az Azure IoT Edge tanúsítványhasználatának ismertetése című témakörben talál.