Připojení podřízeného zařízení k bráně služby Azure IoT Edge
Platí pro: 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 pokyny k vytvoření důvěryhodného připojení mezi podřízenými zařízeními a transparentními bránami IoT Edge. Ve scénáři transparentní brány může jedno nebo více zařízení předávat zprávy prostřednictvím jednoho zařízení brány, které udržuje připojení ke službě IoT Hub.
Existují tři obecné kroky k nastavení úspěšného transparentního připojení brány. Tento článek se věnuje třetímu kroku:
Nakonfigurujte zařízení brány jako server, aby se k němu podřízená zařízení mohly bezpečně připojit. Nastavte bránu tak, aby přijímala zprávy z podřízených zařízení a směrovala je do správného cíle. Tyto kroky najdete v tématu Konfigurace zařízení IoT Edge tak, aby fungovalo jako transparentní brána.
Vytvořte identitu zařízení pro podřízené zařízení, aby se mohl ověřit ve službě IoT Hub. Nakonfigurujte podřízené zařízení tak, aby odesílala zprávy přes zařízení brány. Tyto kroky najdete v tématu Ověření podřízeného zařízení ve službě Azure IoT Hub.
Připojte podřízené zařízení k zařízení brány a začněte odesílat zprávy.
Tento článek popisuje základní koncepty připojení podřízených zařízení a provede vás nastavením podřízených zařízení:
- Vysvětlení základů zabezpečení přenosové vrstvy (TLS) a certifikátů
- Vysvětluje, jak knihovny TLS fungují v různých operačních systémech a jak jednotlivé operační systémy pracují s certifikáty.
- Projděte si ukázky Azure IoT v několika jazycích, které vám pomůžou začít.
V tomto článku pojmy brána a brána IoT Edge odkazují na zařízení IoT Edge nakonfigurované jako transparentní brána.
Poznámka:
Podřízené zařízení vysílá data přímo do internetu nebo do zařízení brány (nebo ne). Podřízené zařízení může být podřízené zařízení nebo zařízení brány v vnořené topologii.
Požadavky
- Máte soubor certifikátu kořenové certifikační autority, který se použil k vygenerování certifikátu certifikační autority zařízení v konfiguraci zařízení IoT Edge tak, aby fungovalo jako transparentní brána dostupná na podřízené zařízení. Podřízené zařízení používá tento certifikát k ověření identity zařízení brány. Pokud jste použili ukázkové certifikáty, kořenový certifikát certifikační autority se nazývá azure-iot-test-only.root.ca.cert.pem.
- Upravte připojovací řetězec, který odkazuje na zařízení brány, jak je vysvětleno v tématu Ověření podřízeného zařízení ve službě Azure IoT Hub.
Příprava podřízeného zařízení
Podřízené zařízení může být libovolná aplikace nebo platforma, která má identitu vytvořenou s cloudovou službou Azure IoT Hub. V mnoha případech tyto aplikace používají sadu SDK zařízení Azure IoT. Podřízené zařízení může být dokonce aplikace spuštěná na samotném zařízení brány IoT Edge. Jiné zařízení IoT Edge ale nemůže být podřízené bráně IoT Edge.
Poznámka:
Zařízení IoT zaregistrovaná ve službě IoT Hub můžou pomocí dvojčat modulů izolovat různé procesy, hardware nebo funkce na jednom zařízení. Brány IoT Edge podporují připojení podřízených modulů pomocí ověřování symetrického klíče, ale ne ověřování certifikátů X.509.
Pokud chcete připojit podřízené zařízení k bráně IoT Edge, potřebujete dvě věci:
Zařízení nebo aplikace, která je nakonfigurovaná se zařízením IoT Hubu, připojovací řetězec připojena s informacemi, aby se připojila k bráně.
Tento krok byl dokončen v předchozím článku a ověřil podřízené zařízení ve službě Azure IoT Hub.
Zařízení nebo aplikace musí důvěřovat kořenovému certifikátu certifikační autority brány, aby ověřila připojení TLS (Transport Layer Security) k zařízení brány.
Tento krok je podrobně vysvětlený ve zbývající části tohoto článku. Tento krok je možné provést jedním ze dvou způsobů: instalací certifikátu certifikační autority do úložiště certifikátů operačního systému nebo (pro určité jazyky) odkazováním na certifikát v aplikacích pomocí sad SDK Azure IoT.
Základy tls a certifikátů
Výzvou bezpečného připojení podřízených zařízení ke službě IoT Edge je stejně jako jakákoli jiná zabezpečená komunikace mezi klientem a serverem, ke které dochází přes internet. Klient a server bezpečně komunikují přes internet pomocí protokolu TLS (Transport Layer Security). Protokol TLS se vytváří pomocí standardních konstruktorů infrastruktury veřejných klíčů (PKI), které se nazývají certifikáty. Tls je poměrně zapojená specifikace a řeší širokou škálu témat souvisejících se zabezpečením dvou koncových bodů. Tato část shrnuje koncepty, které jsou relevantní pro bezpečné připojení zařízení k bráně IoT Edge.
Když se klient připojí k serveru, zobrazí server řetěz certifikátů označovaný jako řetěz certifikátů serveru. Řetěz certifikátů obvykle zahrnuje certifikát kořenové certifikační autority (CA), jeden nebo více zprostředkujících certifikátů certifikační autority a nakonec samotný certifikát serveru. Klient naváže vztah důvěryhodnosti se serverem kryptograficky ověřením celého řetězu certifikátů serveru. Ověření tohoto klienta řetězu certifikátů serveru se nazývá ověření řetězu serverů. Klient vyzve server k prokázání vlastnictví privátního klíče přidruženého k certifikátu serveru v procesu označovaného jako důkaz o vlastnictví. Kombinace ověření řetězu serverů a ověření vlastnictví se nazývá ověřování serveru. K ověření řetězu certifikátů serveru potřebuje klient kopii kořenového certifikátu certifikační autority, která byla použita k vytvoření (nebo vystavení) certifikátu serveru. Při připojování k webům je prohlížeč normálně předem nakonfigurovaný s běžně používanými certifikáty certifikační autority, aby klient získal bezproblémový proces.
Když se zařízení připojí k Azure IoT Hubu, jedná se o klienta a cloudová služba IoT Hub je serverem. Cloudová služba IoT Hubu je podporována kořenovým certifikátem certifikační autority s názvem Baltimore CyberTrust Root, který je veřejně dostupný a široce používaný. Vzhledem k tomu, že certifikát CA služby IoT Hub je již nainstalovaný na většině zařízení, mnoho implementací PROTOKOLU TLS (OpenSSL, Schannel, LibreSSL) ho automaticky používá při ověřování certifikátů serveru. Zařízení, které se úspěšně připojí ke službě IoT Hub, ale může mít problémy s pokusem o připojení k bráně IoT Edge.
Když se zařízení připojí k bráně IoT Edge, podřízené zařízení je klient a zařízení brány je serverem. Azure IoT Edge umožňuje vytvářet řetězy certifikátů brány, ale vidí, jak se hodí. Můžete použít veřejný certifikát certifikační autority, jako je Baltimore, nebo použít certifikát kořenové certifikační autority podepsaný svým držitelem (nebo místní) certifikační autority. Certifikáty veřejné certifikační autority často mají spojené náklady, takže se obvykle používají v produkčních scénářích. Certifikáty certifikační autority podepsané svým držitelem jsou upřednostňované pro vývoj a testování. Pokud používáte ukázkové certifikáty, jedná se o certifikáty kořenové certifikační autority podepsané svým držitelem.
Pokud pro bránu IoT Edge používáte certifikát kořenové certifikační autority podepsané svým držitelem, musí se nainstalovat nebo poskytnout všem podřízeným zařízením, která se pokoušejí připojit k bráně.
Další informace o certifikátech IoT Edge a některých dopadech na produkční prostředí najdete v podrobnostech o využití certifikátů IoT Edge.
Zadejte kořenový certifikát certifikační autority.
K ověření certifikátů zařízení brány potřebuje podřízené zařízení vlastní kopii certifikátu kořenové certifikační autority. Pokud jste k vytvoření testovacích certifikátů použili skripty poskytnuté v úložišti Git IoT Edge, nazývá se kořenový certifikát certifikační autority azure-iot-test-only.root.ca.cert.pem. Pokud jste ještě nebyli součástí dalších kroků přípravy podřízených zařízení, přesuňte tento soubor certifikátu do libovolného adresáře na podřízené zařízení. K přesunutí souboru certifikátu můžete použít službu, jako je Azure Key Vault, nebo funkci, jako je protokol zabezpečeného kopírování.
Instalace certifikátů v operačním systému
Jakmile je kořenový certifikát certifikační autority na podřízené zařízení, musíte se ujistit, že aplikace, které se připojují k bráně, mají přístup k certifikátu.
Instalace kořenového certifikátu certifikační autority v úložišti certifikátů operačního systému obecně umožňuje většině aplikací používat kořenový certifikát certifikační autority. Existují některé výjimky, jako jsou aplikace NodeJS, které nepoužívají úložiště certifikátů operačního systému, ale používají interní úložiště certifikátů modulu runtime Node. Pokud nemůžete certifikát nainstalovat na úrovni operačního systému, přeskočte k použití certifikátů se sadami AZURE IoT SDK.
Ubuntu
Následující příkazy představují příklad instalace certifikátu certifikační autority na hostitele Ubuntu. Tento příklad předpokládá, že používáte certifikát azure-iot-test-only.root.ca.cert.pem z článků o požadavcích a že jste certifikát zkopírovali do umístění na podřízeném zařízení.
sudo cp <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
Měla by se zobrazit zpráva "Aktualizace certifikátů v /etc/ssl/certs... 1 přidáno, 0 odebráno; hotovo."
Windows
Následující kroky představují příklad instalace certifikátu certifikační autority na hostitele s Windows. Tento příklad předpokládá, že používáte certifikát azure-iot-test-only.root.ca.cert.pem z článků o požadavcích a že jste certifikát zkopírovali do umístění na podřízeném zařízení.
Certifikáty můžete nainstalovat pomocí importu certifikátu PowerShellu jako správce:
import-certificate <file path>\azure-iot-test-only.root.ca.cert.pem -certstorelocation cert:\LocalMachine\root
Certifikáty můžete také nainstalovat pomocí nástroje certlm :
- V nabídka Start vyhledejte a vyberte Spravovat certifikáty počítače. Otevře se nástroj s názvem certlm .
- Přejděte na Certifikáty – Důvěryhodné kořenové certifikační autority místního počítače>.
- Klikněte pravým tlačítkem na Certifikáty a vyberte Všechny úlohy>Import. Měl by se spustit průvodce importem certifikátu.
- Postupujte podle pokynů a importujte soubor
<path>/azure-iot-test-only.root.ca.cert.pem
certifikátu . Po dokončení by se měla zobrazit zpráva "Úspěšně importováno".
Certifikáty můžete nainstalovat také programově pomocí rozhraní .NET API, jak je znázorněno v ukázce .NET dále v tomto článku.
Aplikace obvykle k zabezpečenému připojení přes protokol TLS používají zásobník TLS poskytovaný systémem Windows s názvem Schannel . Schannel vyžaduje , aby se před pokusem o navázání připojení TLS nainstalovaly všechny certifikáty v úložišti certifikátů Systému Windows.
Použití certifikátů se sadami Azure IoT SDK
Tato část popisuje, jak se sady SDK Azure IoT připojují k zařízení IoT Edge pomocí jednoduchých ukázkových aplikací. Cílem všech ukázek je připojit klienta zařízení a odesílat telemetrické zprávy k bráně a pak připojení zavřít a ukončit.
Před použitím ukázek na úrovni aplikace připravte dvě věci:
IoT Hub podřízeného zařízení připojovací řetězec upraven tak, aby odkazovaly na zařízení brány, a všechny certifikáty potřebné k ověření podřízeného zařízení ve službě IoT Hub. Další informace najdete v tématu Ověření podřízeného zařízení ve službě Azure IoT Hub.
Úplná cesta k kořenovému certifikátu certifikační autority, který jste zkopírovali a uložili někam do podřízeného zařízení.
Například
<path>/azure-iot-test-only.root.ca.cert.pem
.
NodeJS
Tato část obsahuje ukázkovou aplikaci pro připojení klienta zařízení Azure IoT NodeJS k bráně IoT Edge. Pro aplikace NodeJS je nutné nainstalovat kořenový certifikát certifikační autority na úrovni aplikace, jak je znázorněno zde. Aplikace NodeJS nepoužívají úložiště certifikátů systému.
- Získejte ukázku pro edge_downstream_device.js ze sady SDK pro zařízení Azure IoT pro Node.js úložiště ukázek.
- Zkontrolujte soubor readme.md a ujistěte se, že máte všechny požadavky na spuštění ukázky.
- V souboru edge_downstream_device.js aktualizujte proměnné connectionString a edge_ca_cert_path .
- Pokyny ke spuštění ukázky na vašem zařízení najdete v dokumentaci k sadě SDK.
Abyste pochopili ukázku, kterou používáte, je následující fragment kódu, jak klientská sada SDK načte soubor certifikátu a používá ho k navázání zabezpečeného připojení TLS:
// 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'),
};
.NET
Tato část představuje ukázkovou aplikaci pro připojení klienta zařízení Azure IoT .NET k bráně IoT Edge. Aplikace .NET ale můžou automaticky používat všechny nainstalované certifikáty v úložišti certifikátů systému na hostitelích s Linuxem i Windows.
- Získejte ukázku pro EdgeDownstreamDevice ze složky ukázek ioT Edge .NET.
- Zkontrolujte soubor readme.md a ujistěte se, že máte všechny požadavky na spuštění ukázky.
- V souboru Vlastnosti / launchSettings.json aktualizujte proměnné DEVICE_CONNECTION_STRING a CA_CERTIFICATE_PATH. Pokud chcete použít certifikát nainstalovaný v úložišti důvěryhodných certifikátů v hostitelském systému, ponechte tuto proměnnou prázdnou.
- Pokyny ke spuštění ukázky na vašem zařízení najdete v dokumentaci k sadě SDK.
Pokud chcete prostřednictvím kódu programu nainstalovat důvěryhodný certifikát do úložiště certifikátů prostřednictvím aplikace .NET, přečtěte si funkci InstallCACert() v souboru EdgeDownstreamDevice / Program.cs . Tato operace je idempotentní, takže je možné ji spustit vícekrát se stejnými hodnotami bez dalšího efektu.
C
Tato část představuje ukázkovou aplikaci pro připojení klienta zařízení Azure IoT C k bráně IoT Edge. Sada C SDK může pracovat s mnoha knihovnami TLS, včetně OpenSSL, WolfSSL a Schannel. Další informace najdete v sadě Azure IoT C SDK.
- Získejte iotedge_downstream_device_sample aplikaci ze sady SDK pro zařízení Azure IoT pro ukázky jazyka C.
- Zkontrolujte soubor readme.md a ujistěte se, že máte všechny požadavky na spuštění ukázky.
- V souboru iotedge_downstream_device_sample.c aktualizujte proměnné connectionString a edge_ca_cert_path .
- Pokyny ke spuštění ukázky na vašem zařízení najdete v dokumentaci k sadě SDK.
Sada SDK pro zařízení Azure IoT pro C poskytuje možnost při nastavování klienta zaregistrovat certifikát certifikační autority. Tato operace neinstaluje certifikát nikde, ale místo toho používá formát řetězce certifikátu v paměti. Uložený certifikát se poskytne podkladovému zásobníku PROTOKOLU TLS při navazování připojení.
(void)IoTHubDeviceClient_SetOption(device_handle, OPTION_TRUSTED_CERT, cert_string);
Poznámka:
Metoda registrace certifikátu certifikační autority při nastavování klienta se může změnit, pokud používáte spravovaný balíček nebo knihovnu. Například knihovna založená na prostředí Arduino IDE bude vyžadovat přidání certifikátu certifikační autority do pole certifikátů definovaného v globálním souboru certs.c místo použití IoTHubDeviceClient_LL_SetOption
operace.
Pokud na hostitelích s Windows nepoužíváte OpenSSL nebo jinou knihovnu TLS, sada SDK ve výchozím nastavení používá Schannel. Aby Schannel fungoval, měl by být kořenový certifikát certifikační autority IoT Edge nainstalovaný v úložišti certifikátů Windows, a neměl by být IoTHubDeviceClient_SetOption
nastaven pomocí operace.
Java
Tato část představuje ukázkovou aplikaci pro připojení klienta zařízení Azure IoT Java k bráně IoT Edge.
- Získejte ukázku pro odesílání událostí ze sady SDK pro zařízení Azure IoT pro ukázky Java.
- Zkontrolujte soubor readme.md a ujistěte se, že máte všechny požadavky na spuštění ukázky.
- Pokyny ke spuštění ukázky na vašem zařízení najdete v dokumentaci k sadě SDK.
Python
Tato část představuje ukázkovou aplikaci pro připojení klienta zařízení Azure IoT Python k bráně IoT Edge.
- Získejte ukázku pro send_message_downstream ze sady SDK pro zařízení Azure IoT pro ukázky Pythonu.
IOTHUB_DEVICE_CONNECTION_STRING
Nastavte proměnné prostředí aIOTEDGE_ROOT_CA_CERT_PATH
proměnné prostředí, jak je uvedeno v komentářích skriptu Pythonu.- Další pokyny ke spuštění ukázky na vašem zařízení najdete v dokumentaci k sadě SDK.
Otestování připojení brány
Pomocí tohoto ukázkového příkazu na podřízené zařízení otestujte, že se může připojit k zařízení brány:
openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts
Tento příkaz testuje připojení přes MQTTS (port 8883). Pokud používáte jiný protokol, upravte příkaz podle potřeby pro AMQPS (5671) nebo HTTPS (443).
Výstup tohoto příkazu může být dlouhý, včetně informací o všech certifikátech v řetězu. Pokud je připojení úspěšné, zobrazí se řádek like Verification: OK
nebo Verify return code: 0 (ok)
.
Řešení potíží s připojením brány
Pokud má podřízené zařízení přerušované připojení ke svému zařízení brány, zkuste k řešení použít následující kroky.
- Je název hostitele brány v připojovací řetězec stejný jako hodnota názvu hostitele v konfiguračním souboru IoT Edge na zařízení brány?
- Je název hostitele brány přeložitelný na IP adresu? Přerušovaná připojení můžete vyřešit buď pomocí DNS, nebo přidáním položky souboru hostitele do podřízeného zařízení.
- Jsou komunikační porty otevřené v bráně firewall? Komunikace založená na použitém protokolu (MQTTS:8883/AMQPS:5671/HTTPS:433) musí být možná mezi podřízeným zařízením a transparentním IoT Edgem.
Další kroky
Zjistěte, jak může IoT Edge rozšířit možnosti offline na podřízená zařízení.