Připojení podřízeného zařízení k bráně služby Azure IoT Edge

Platí pro:Značka zaškrtnutí IoT Edge 1.5 IoT Edge 1.5 Značka zaškrtnutí IoT Edge 1.4 IoT Edge 1.4

Důležité

Podporované verze ioT Edge 1.5 LTS a IoT Edge 1.4 LTS. IoT Edge 1.4 LTS je konec životnosti 12. listopadu 2024. Pokud používáte starší verzi, podívejte se na článek Aktualizace IoT Edge.

Tady najdete pokyny pro 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. V tomto článku termíny 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.

Existují tři obecné kroky k nastavení úspěšného transparentního připojení brány. Tento článek vysvětluje třetí krok.

  1. 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.

  2. 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.

  3. Připojení podřízené zařízení do zařízení brány a začněte odesílat zprávy.

Tento článek vám pomůže porozumět komponentám připojení podřízených zařízení, například:

  • Základy zabezpečení přenosové vrstvy (TLS) a certifikátů
  • Knihovny TLS pracující v různých operačních systémech, které zpracovávají certifikáty odlišně.

Pak si projdete ukázky Azure IoT ve vašem upřednostňovaném jazyce, abyste získali zařízení pro odesílání zpráv do brány.

Požadavky

Pokud chcete připravit podřízené zařízení, získejte následující:

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.

Principy šifrování TLS a základů 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 se prohlížeč obvykle předkonfiguruje s běžně používanými certifikáty certifikační autority, takže klient má 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í. Ukázkové certifikáty jsou 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ě.

Snímek obrazovky s nastavením certifikátu brány

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 to ještě neudělali, přesuňte tento soubor certifikátu do libovolného adresáře na podřízené zařízení. Soubor můžete přesunout buď 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.

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í, ujistěte se, ž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.

Nainstalujte kořenový certifikát certifikační autority na Ubuntu nebo Windows.

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

Měla by se zobrazit zpráva "Aktualizace certifikátů v /etc/ssl/certs... 1 přidáno, 0 odebráno; hotovo."

Použití certifikátů se sadami Azure IoT SDK

Sady SDK Azure IoT se připojují k zařízení IoT Edge pomocí jednoduchých ukázkových aplikací. Cílem ukázek je připojit klienta zařízení a odeslat do brány telemetrické zprávy a pak připojení zavřít a ukončit.

Před použitím ukázek na úrovni aplikace získejte následující položky:

  • Vaše služba IoT Hub připojovací řetězec z podřízeného zařízení upravená tak, aby odkazovaly na zařízení brány.

  • Všechny certifikáty potřebné k ověření podřízených 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: <file path>/azure-iot-test-only.root.ca.cert.pem.

Teď jste připraveni používat certifikáty s ukázkou v jazyce podle vašeho výběru:

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.

  1. 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.
  2. Zkontrolujte soubor readme.md a ujistěte se, že máte všechny požadavky na spuštění ukázky.
  3. V souboru edge_downstream_device.js aktualizujte proměnné connectionString a edge_ca_cert_path .
  4. 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'),
};

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).

Snímek obrazovky s ověřením připojení brány

Řešení potíží s připojením brány

Pokud je připojení podřízeného zařízení k zařízení brány nestabilní, zvažte tyto otázky k řešení.

  • 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í.