Lefelé irányuló eszköz csatlakoztatása Azure IoT Edge-átjáróhoz

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

Fontos

Az IoT Edge 1.5 LTS és az IoT Edge 1.4 LTS támogatott kiadások. 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.

Itt talál útmutatást az alsóbb rétegbeli eszközök és az IoT Edge transzparens átjárói közötti megbízható kapcsolat létrehozásához. Transzparens átjáró esetén egy vagy több eszköz egyetlen átjáróeszközön keresztül továbbíthatja üzeneteit, amely fenntartja az IoT Hubhoz való kapcsolatot. Itt az átjáró és az IoT Edge-átjáró kifejezés egy transzparens átjáróként konfigurált IoT Edge-eszközre hivatkozik.

Feljegyzés

Az alsóbb rétegbeli eszközök közvetlenül az internetre vagy átjáróeszközökre bocsátanak ki adatokat (IoT Edge-kompatibilis vagy nem). A gyermekeszköz lehet alsóbb rétegbeli eszköz vagy átjáróeszköz beágyazott topológiában.

A sikeres transzparens átjárókapcsolat beállításának három általános lépése van. Ez a cikk a harmadik lépést ismerteti.

  1. Konfigurálja az átjáróeszközt kiszolgálóként, hogy az alsóbb rétegbeli eszközök biztonságosan csatlakozzanak hozzá. Állítsa be az átjárót az alsóbb rétegbeli eszközöktől érkező üzenetek fogadásához és a megfelelő célhelyre való átirányításához. Ezekről a lépésekről lásd : IoT Edge-eszköz konfigurálása transzparens átjáróként.

  2. Hozzon létre egy eszközidentitást az alsóbb rétegbeli eszközhöz, hogy hitelesíthesse magát az IoT Hubbal. Konfigurálja az alsóbb rétegbeli eszközt, hogy üzeneteket küldjön az átjáróeszközön keresztül. Ezekért a lépésekért lásd : Alsóbb rétegbeli eszköz hitelesítése az Azure IoT Hubon.

  3. Csatlakozás az alsóbb rétegbeli eszközt az átjáróeszközre, és megkezdheti az üzenetek küldését.

Ez a cikk segít megérteni az alsóbb rétegbeli eszközkapcsolat összetevőit, például:

  • A transport layer security (TLS) és a tanúsítvány alapjai.
  • A tanúsítványokat eltérően kezelő különböző operációs rendszereken működő TLS-kódtárak.

Ezután végigvezeti az Azure IoT-mintákat a kívánt nyelven, hogy az eszköz üzeneteket küldjön az átjárónak.

Előfeltételek

Az alsóbb rétegbeli eszköz előkészítéséhez szerezze be a következőket:

Feljegyzés

Az IoT Hubon regisztrált IoT-eszközök modulikrek használatával elkülöníthetik a különböző folyamatokat, hardvereket vagy függvényeket egyetlen eszközön. Az IoT Edge-átjárók támogatják az alsóbb rétegbeli modulkapcsolatokat, szimmetrikus kulcsos hitelesítést használnak, az X.509-tanúsítványhitelesítést azonban nem.

A TLS és a tanúsítvány alapjainak ismertetése

Az alsóbb rétegbeli eszközök IoT Edge-hez való biztonságos csatlakoztatásának kihívása ugyanúgy, mint bármely más biztonságos ügyfél-kiszolgáló kommunikáció, amely az interneten keresztül történik. Az ügyfél és a kiszolgáló biztonságosan kommunikál az interneten a Transport Layer Security (TLS) használatával. A TLS a standard nyilvános kulcsú infrastruktúra (PKI) tanúsítványokkal készült. A TLS egy meglehetősen érintett specifikáció, és a két végpont biztonságossá tételével kapcsolatos témakörök széles skáláját kezeli. Ez a szakasz összefoglalja azokat a fogalmakat, amelyek az eszközök IoT Edge-átjáróhoz való biztonságos csatlakoztatásához fontosak.

Amikor egy ügyfél egy kiszolgálóhoz csatlakozik, a kiszolgáló egy tanúsítványláncot, úgynevezett kiszolgálói tanúsítványláncot mutat be. A tanúsítványlánc általában egy főtanúsítványból (CA) álló tanúsítványt, egy vagy több köztes hitelesítésszolgáltatói tanúsítványt, végül pedig magát a kiszolgáló tanúsítványát foglalja magában. Az ügyfél a teljes kiszolgálótanúsítvány-lánc kriptográfiai ellenőrzésével megbízhatóságot létesít egy kiszolgálóval. A kiszolgálótanúsítvány-lánc ügyfélérvényesítését kiszolgálólánc-ellenőrzésnek nevezzük. Az ügyfél vitatja a kiszolgálót, hogy bizonyítsa a kiszolgálótanúsítványhoz társított titkos kulcs birtoklását a birtoklás igazolásának nevezett eljárásban. A kiszolgálólánc érvényesítésének és a birtoklás igazolásának kombinációját kiszolgálóhitelesítésnek nevezzük. A kiszolgálótanúsítvány-lánc érvényesítéséhez az ügyfélnek szüksége van a kiszolgáló tanúsítványának létrehozásához (vagy kiállításához) használt legfelső szintű hitelesítésszolgáltatói tanúsítvány másolatára. A webhelyekhez való csatlakozáskor általában a böngésző előre konfigurálva van a gyakran használt hitelesítésszolgáltatói tanúsítványokkal, így az ügyfél zökkenőmentes folyamattal rendelkezik.

Amikor egy eszköz csatlakozik az Azure IoT Hubhoz, az eszköz az ügyfél, az IoT Hub felhőszolgáltatás pedig a kiszolgáló. Az IoT Hub felhőszolgáltatást egy Baltimore CyberTrust Root nevű legfelső szintű hitelesítésszolgáltatói tanúsítvány is alátámasztja, amely nyilvánosan elérhető és széles körben használt. Mivel az IoT Hub hitelesítésszolgáltatói tanúsítványa már telepítve van a legtöbb eszközön, számos TLS-implementáció (OpenSSL, Schannel, LibreSSL) automatikusan használja a kiszolgálótanúsítvány érvényesítése során. Előfordulhat azonban, hogy egy IoT Hubhoz sikeresen csatlakozó eszköznek problémái vannak az IoT Edge-átjáróhoz való kapcsolódással.

Amikor egy eszköz IoT Edge-átjáróhoz csatlakozik, az alsóbb rétegbeli eszköz az ügyfél, az átjáróeszköz pedig a kiszolgáló. Az Azure IoT Edge lehetővé teszi, hogy átjárótanúsítvány-láncokat hozzon létre, a megfelelőnek látszó módon. Dönthet úgy, hogy nyilvános hitelesítésszolgáltatói tanúsítványt (például Baltimore) használ, vagy önaláírt (vagy házon belüli) fő hitelesítésszolgáltatói tanúsítványt használ. A nyilvános hitelesítésszolgáltatói tanúsítványok gyakran költségekkel járnak, ezért általában éles helyzetekben használják őket. A fejlesztéshez és teszteléshez előnyben részesítik az önaláírt hitelesítésszolgáltatói tanúsítványokat. A demótanúsítványok önaláírt legfelső szintű hitelesítésszolgáltatói tanúsítványok.

Ha önaláírt legfelső szintű hitelesítésszolgáltatói tanúsítványt használ egy IoT Edge-átjáróhoz, azt telepíteni kell az átjáróhoz csatlakozni próbáló összes alsóbb rétegbeli eszközre, vagy meg kell adni.

Képernyőkép az átjárótanúsítvány beállításáról.

Az IoT Edge-tanúsítványokkal és az éles környezetekkel kapcsolatos további információkért tekintse meg az IoT Edge-tanúsítványok használati adatait.

Adja meg a legfelső szintű hitelesítésszolgáltatói tanúsítványt

Az átjáróeszköz tanúsítványainak ellenőrzéséhez az alsóbb rétegbeli eszköznek szüksége van a legfelső szintű hitelesítésszolgáltató tanúsítványának saját másolatára. Ha az IoT Edge Git-adattárban megadott szkripteket használta teszttanúsítványok létrehozásához, akkor a legfelső szintű hitelesítésszolgáltatói tanúsítvány neve azure-iot-test-only.root.ca.cert.pem.

Ha még nem tette meg, helyezze át ezt a tanúsítványfájlt az alsóbb rétegbeli eszköz bármely könyvtárába. A fájlt áthelyezheti úgy, hogy telepíti a hitelesítésszolgáltatói tanúsítványt az operációs rendszer tanúsítványtárolójába, vagy (bizonyos nyelvek esetén) a tanúsítványra az Azure IoT SDK-kkal rendelkező alkalmazásokban.

A tanúsítványfájl áthelyezéséhez használhat olyan szolgáltatást, mint az Azure Key Vault vagy egy olyan függvény, mint a Biztonságos másolási protokoll .

Tanúsítványok telepítése az operációs rendszerben

Ha a legfelső szintű hitelesítésszolgáltató tanúsítványa az alsóbb rétegbeli eszközön található, győződjön meg arról, hogy az átjáróhoz csatlakozó alkalmazások hozzáférhetnek a tanúsítványhoz.

A legfelső szintű hitelesítésszolgáltatói tanúsítvány telepítése az operációs rendszer tanúsítványtárolójában általában lehetővé teszi a legtöbb alkalmazás számára a legfelső szintű hitelesítésszolgáltatói tanúsítvány használatát. Vannak kivételek, például a NodeJS-alkalmazások, amelyek nem az operációsrendszer-tanúsítványtárolót használják, hanem a Node-futtatókörnyezet belső tanúsítványtárolóját használják. Ha nem tudja telepíteni a tanúsítványt az operációs rendszer szintjén, ugorjon tovább a Tanúsítványok használata Azure IoT SDK-kkal című témakörben.

Telepítse a legfelső szintű hitelesítésszolgáltatói tanúsítványt az Ubuntu vagy a Windows rendszeren.

Az alábbi parancsok egy példa arra, hogyan telepíthet ca-tanúsítványt egy Ubuntu-gazdagépre. Ez a példa feltételezi, hogy az azure-iot-test-only.root.ca.cert.pem tanúsítványt használja az előfeltételekről szóló cikkekből, és hogy a tanúsítványt az alsóbb rétegbeli eszköz egy helyére másolta.

sudo cp <file path>/azure-iot-test-only.root.ca.cert.pem /usr/local/share/ca-certificates/azure-iot-test-only.root.ca.cert.pem.crt
sudo update-ca-certificates

Ekkor megjelenik egy üzenet: "Tanúsítványok frissítése a /etc/ssl/certs fájlban... 1 hozzáadva, 0 eltávolítva; kész."

Tanúsítványok használata Azure IoT SDK-kkal

Az Azure IoT SDK-k egyszerű mintaalkalmazások használatával csatlakoznak egy IoT Edge-eszközhöz. A minták célja az eszközügyfél csatlakoztatása és telemetriai üzenetek küldése az átjáróhoz, majd a kapcsolat bezárása és kilépés.

Az alkalmazásszintű minták használata előtt szerezze be a következő elemeket:

  • Az IoT Hub kapcsolati sztring az alsóbb rétegbeli eszközről, úgy módosítva, hogy az átjáróeszközre mutasson.

  • Az alsóbb rétegbeli eszköznek az IoT Hubon való hitelesítéséhez szükséges tanúsítványok. További információ: Alsóbb rétegbeli eszköz hitelesítése az Azure IoT Hubon.

  • Az alsóbb rétegbeli eszközön másolt és mentett legfelső szintű hitelesítésszolgáltatói tanúsítvány teljes elérési útja.

    Például: <file path>/azure-iot-test-only.root.ca.cert.pem

Most már készen áll arra, hogy a tanúsítványokat egy tetszőleges nyelven mintával használja:

Ez a szakasz egy mintaalkalmazást biztosít egy Azure IoT NodeJS-eszközügyfél IoT Edge-átjáróhoz való csatlakoztatásához. NodeJS-alkalmazások esetén az itt látható módon telepítenie kell a legfelső szintű hitelesítésszolgáltatói tanúsítványt az alkalmazás szintjén. A NodeJS-alkalmazások nem használják a rendszer tanúsítványtárolóját.

  1. Szerezze be edge_downstream_device.js mintáját az Azure IoT-eszköz SDK-jából Node.js-minták adattárából.
  2. A readme.md fájl áttekintésével győződjön meg arról, hogy rendelkezik a minta futtatásának összes előfeltételével.
  3. A edge_downstream_device.js fájlban frissítse a connectionString és edge_ca_cert_path változókat.
  4. A minta eszközön való futtatásával kapcsolatos útmutatásért tekintse meg az SDK dokumentációját.

A futtatott minta megértéséhez az alábbi kódrészlet azt mutatja be, hogy az ügyfél SDK hogyan olvassa be a tanúsítványfájlt, és hogyan használja azt egy biztonságos TLS-kapcsolat létrehozásához:

// Provide the Azure IoT device client via setOptions with the X509
// Edge root CA certificate that was used to setup the Edge runtime
var options = {
    ca : fs.readFileSync(edge_ca_cert_path, 'utf-8'),
};

Az átjárókapcsolat tesztelése

Használja ezt a mintaparancsot az alsóbb rétegbeli eszközön annak teszteléséhez, hogy képes-e csatlakozni az átjáróeszközhöz:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Ez a parancs az MQTTS (8883-es port) kapcsolatát teszteli. Ha másik protokollt használ, módosítsa a parancsot az AMQPS (5671) vagy a HTTPS (443) esetében.

A parancs kimenete hosszú lehet, beleértve a lánc összes tanúsítványára vonatkozó információkat is. Ha a kapcsolat sikeres, megjelenik egy olyan sor, mint Verification: OK vagy Verify return code: 0 (ok).

Képernyőkép az átjárókapcsolat ellenőrzéséről.

Az átjárókapcsolat hibaelhárítása

Ha az alsóbb rétegbeli eszköz és az átjáróeszköz közötti kapcsolat instabil, fontolja meg ezeket a kérdéseket a megoldás érdekében.

  • A kapcsolati sztring az átjáró állomásneve megegyezik az átjáróeszköz IoT Edge konfigurációs fájljának állomásneve értékével?
  • Feloldható az átjáró állomásneve egy IP-címmel? Az időszakos kapcsolatokat a DNS használatával vagy egy gazdagépfájl-bejegyzés hozzáadásával oldhatja meg az alsóbb rétegbeli eszközön.
  • Nyitva vannak a kommunikációs portok a tűzfalon? A használt protokollon (MQTTS:8883/AMQPS:5671/HTTPS:433) alapuló kommunikációnak lehetségesnek kell lennie az alsóbb rétegbeli eszköz és a transzparens IoT Edge között.

Következő lépések

Megtudhatja, hogyan terjesztheti ki az IoT Edge az offline képességeket az alsóbb rétegbeli eszközökre.