Připojení podřízeného zařízení k bráně služby Azure IoT Edge
Platí pro:
IoT Edge 1,1
IoT Edge 1,2
Tento článek obsahuje pokyny pro vytvoření důvěryhodného připojení mezi zařízeními podřízeného serveru a IoT Edge transparentními bránami. 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í k IoT Hub.
Úspěšné transparentní připojení brány můžete nastavit ve třech obecných krocích. Tento článek popisuje třetí krok:
- Nakonfigurujte zařízení brány jako server tak, aby se k ní podřízené zařízení mohli bezpečně připojit. Nastavte bránu tak, aby přijímala zprávy z podřízeného zařízení a směruje je do správného cíle. Tyto kroky najdete v tématu Konfigurace IoT Edge zařízení tak, aby se chovalo jako transparentní brána.
- Vytvořte identitu zařízení pro podřízené zařízení, aby se bylo možné ověřit pomocí IoT Hub. Nakonfigurujte podřízené zařízení tak, aby odesílal zprávy přes zařízení brány. Tyto kroky najdete v tématu Ověření podřízeného zařízení pro Azure IoT Hub.
- Připojení podřízené zařízení do zařízení brány a začněte odesílat zprávy.
Tento článek popisuje základní koncepty pro připojení podřízeného zařízení a provede vás nastavením podřízeného zařízení pomocí:
- Vysvětlení základů protokolu TLS (Transport Layer Security) a certifikátů
- Vysvětlení toho, jak fungují knihovny TLS v různých operačních systémech a jak každý operační systém pracuje s certifikáty
- Projdete si ukázky Azure IoT v několika jazycích, které vám pomůžou začít.
V tomto článku se termíny brána a IoT Edge odkazují na IoT Edge zařízení nakonfigurované jako transparentní brána.
Požadavky
- Mít soubor certifikátu kořenové certifikační autority, který se použil k vygenerování certifikátu ca zařízení v tématu Konfigurace zařízení IoT Edge tak, aby se chovalo jako transparentní brána dostupná na podřízeném zařízení. Vaše 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.
- Mít upravený připojovací řetězec, který odkazuje na zařízení brány, jak je vysvětleno v tématu Ověření podřízenéhozařízení pro Azure IoT Hub .
Příprava podřízeného zařízení
Podřízené zařízení může být libovolná aplikace nebo platforma, která má vytvořenou identitu s Azure IoT Hub službou. V mnoha případech tyto aplikace používají sadu SDK pro zařízení Azure IoT. Podřízené zařízení může být dokonce aplikace spuštěná v samotném IoT Edge brány. Jiný jiný IoT Edge ale nemůže být podřízené bráně IoT Edge brány.
Podřízené zařízení může být libovolná aplikace nebo platforma, která má vytvořenou identitu s Azure IoT Hub službou. V mnoha případech tyto aplikace používají sadu SDK pro zařízení Azure IoT. Podřízené zařízení může být dokonce aplikace spuštěná v samotném IoT Edge brány.
Tento článek obsahuje postup připojení zařízení IoT jako podřízeného zařízení. Pokud máte zařízení IoT Edge jako podřízené zařízení, podívejte se Připojení připojení podřízeného IoT Edge k Azure IoT Edge bráně.
Poznámka
Zařízení IoT zaregistrovaná IoT Hub izolovat různé procesy, hardware nebo funkce na jednom zařízení pomocí dvojčat modulů. IoT Edge brány podporují připojení podřízeného modulu pomocí ověřování pomocí symetrického klíče, ale ne ověřování certifikátů X.509.
Pokud chcete připojit podřízené zařízení k IoT Edge bráně, potřebujete dvě věci:
Zařízení nebo aplikace s nakonfigurovanou IoT Hub připojovacím řetězcem zařízení připojeným k informacím pro připojení k bráně.
Tento krok byl dokončen v předchozím článku Ověření podřízeného zařízenípro Azure IoT Hub .
Zařízení nebo aplikace musí důvěřovat certifikátu kořenové certifikační autority brány, aby ověřily 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 lze 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 (v určitých jazycích) odkazováním na certifikát v rámci aplikací pomocí sady SDK Azure IoT.
Základy tls a certifikátů
Výzva zabezpečeného připojování podřízeného zařízení k 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 zabezpečeně komunikují přes internet pomocí protokolu TLS (Transport Layer Security). Protokol TLS je sestaven pomocí standardních konstruktorů infrastruktury veřejných klíčů (PKI) nazývaných 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 pro vás relevantní pro bezpečné připojení zařízení k IoT Edge bráně.
Když se klient připojí k serveru, server prezentuje řetězec certifikátů, který se nazývá řetěz certifikátů serveru. Řetěz certifikátů obvykle zahrnuje certifikát kořenové certifikační autority (CA), jeden nebo více certifikátů zprostředkující certifikační autority a nakonec samotný certifikát serveru. Klient navádá vztah důvěryhodnosti se serverem prostřednictvím kryptografického ověření celého řetězu certifikátů serveru. Toto ověření klienta řetězu certifikátů serveru se nazývá ověření řetězu serverů. Klient zpochybní server, aby prokázal vlastnictví privátního klíče přidruženého k certifikátu serveru v procesu nazývaném doklad o vlastnictví. Kombinace ověření řetězu serverů a ověření vlastnictví se nazývá ověření serveru. K ověření řetězu certifikátů serveru potřebuje klient kopii certifikátu kořenové certifikační autority, který byl použit k vytvoření (nebo vydání) certifikátu serveru. Při připojování k webům se obvykle v prohlížeči předem konfigurují běžně používané certifikáty certifikační autority, aby klient měl bezproblémový proces.
Když se zařízení připojí k Azure IoT Hub, je zařízení klientem a IoT Hub je cloudová služba serverem. Cloudová IoT Hub je zálohovaná kořenovým certifikátem ca s názvem Baltimore CyberTrust Root, který je veřejně dostupný a široce používaný. Vzhledem k tomu, IoT Hub certifikát certifikační autority už je nainstalovaný na většině zařízení, mnoho implementací TLS (OpenSSL, Schannel,SSL) ho automaticky používá při ověřování certifikátu serveru. Zařízení, které se úspěšně připojí k IoT Hub, ale může mít problémy s pokusem o připojení k IoT Edge bráně.
Když se zařízení připojí k IoT Edge, podřízené zařízení je klient a zařízení brány je server. Azure IoT Edge vám umožňuje vytvářet řetězy certifikátů brány, ale ty jsou podle vás vhodné. 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 vlastní certifikát). S veřejnými certifikáty certifikační autority se často spojují 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 se upřednostní pro vývoj a testování. Pokud používáte ukázkové certifikáty, jsou to certifikáty kořenové certifikační autority podepsané svým držitelem.
Když pro bránu služby IoT Edge použijete certifikát kořenové certifikační autority podepsaný svým držitelem, musí být nainstalovaný na všech zařízeních podřízeného serveru, která se pokoušejí připojit k bráně, nebo musí být poskytnutá všem zařízením, která se k ní pokoušejí připojit.

Další informace o certifikátech IoT Edge a některých dopadech na produkční prostředí najdete v IoT Edge o používání certifikátů.
Zadejte certifikát kořenové 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 gitu IoT Edge, pak se certifikát kořenové certifikační autority nazývá azure-iot-test-only.root.ca.cert.pem. Pokud jste ještě nebyli součástí dalších kroků přípravy podřízeného zařízení, přesuňte tento soubor certifikátu do libovolného adresáře na podřízeném zařízení. K přesunutí souboru certifikátu můžete Azure Key Vault, 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ém zařízení, musíte zajistit, aby aplikace, které se připojují k bráně, k certifikátu přistupovat.
Instalace certifikátu kořenové certifikační autority do úložiště certifikátů operačního systému obecně umožňuje většině aplikací používat certifikát kořenové certifikační autority. Existují některé výjimky, například aplikace NodeJS, které nevyužovájí úložiště certifikátů operačního systému, ale používají interní úložiště certifikátů modulu runtime Node. Pokud certifikát nemůžete nainstalovat na úrovni operačního systému, přeskočte k použití certifikátů se sadymi SDK Azure IoT.
Ubuntu
Následující příkazy jsou příkladem instalace certifikátu certifikační autority na hostitele Ubuntu. Tento příklad předpokládá, že z článků požadavků používáte certifikát azure-iot-test-only.root.ca.cert.pem a že jste certifikát zkopíroval 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, odebráno 0; Done (Hotovo).
Windows
Následující kroky jsou příkladem instalace certifikátu certifikační autority na Windows hostiteli. Tento příklad předpokládá, že z článků požadavků používáte certifikát azure-iot-test-only.root.ca.cert.pem a že jste certifikát zkopíroval do umístění na podřízeném zařízení.
Certifikáty můžete nainstalovat pomocí rutiny Import-Certificate PowerShellu jako správce:
import-certificate <file path>\azure-iot-test-only.root.ca.cert.pem -certstorelocation cert:\LocalMachine\root
Certifikáty můžete nainstalovat také 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 – místní počítač > důvěryhodné kořenové certifikační autority.
- Klikněte pravým tlačítkem na Certifikáty a vyberte Importovat všechny > úlohy. Měl by se spustit průvodce importem certifikátu.
- Postupujte podle pokynů a naimportujte soubor certifikátu
<path>/azure-iot-test-only.root.ca.cert.pem. Po dokončení by se měla zobrazit zpráva o úspěšném importu.
Certifikáty můžete také nainstalovat programově pomocí rozhraní .NET API, jak je znázorněno v ukázce rozhraní .NET dále v tomto článku.
K zabezpečenému připojení přes Windows tls obvykle používají aplikace zásobník TLS s názvem Schannel. Zprostředkovatel Schannel před pokusem o navázání připojení TLS Windows certifikáty nainstalované v Windows úložiště certifikátů.
Použití certifikátů se službami Azure IoT SDK
Tato část popisuje, jak se azure IoT SDK připojují k IoT Edge zařízení pomocí jednoduchých ukázkových aplikací. Cílem všech ukázek je připojení klienta zařízení a odeslání zpráv telemetrie do brány, následné ukončení připojení a ukončení.
Před použitím ukázek na úrovni aplikace jsou připravené dvě věci:
IoT Hub připojovacího řetězce pro vaše zařízení, který se změnil tak, aby odkazoval na zařízení brány, a všechny certifikáty potřebné k ověření vašeho zařízení pro příjem dat IoT Hub. Další informace najdete v tématu ověření zařízení pro příjem dat do Azure IoT Hub.
Úplná cesta k certifikátu kořenové certifikační autority, kterou jste zkopírovali a uložili někde na vašem zařízení pro příjem dat.
Například,
<path>/azure-iot-test-only.root.ca.cert.pem.
NodeJS
V této části najdete ukázkovou aplikaci pro připojení klienta zařízení Azure IoT NodeJS k bráně IoT Edge. V případě aplikací NodeJS je nutné na úrovni aplikace nainstalovat certifikát kořenové certifikační autority, jak je znázorněno zde. NodeJS aplikace 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 ukázkové úložiště.
- Ujistěte se, že máte všechny požadavky na spuštění ukázky, a to kontrolou souboru Readme.MD .
- V souboru edge_downstream_device.js aktualizujte proměnné ConnectionString a edge_ca_cert_path .
- Pokyny, jak spustit ukázku na vašem zařízení, najdete v dokumentaci k sadě SDK.
Pro pochopení ukázky, kterou používáte, je následující fragment kódu způsob, jakým klientská sada SDK č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
V této části se seznámíte s ukázkovou aplikací pro připojení klienta zařízení Azure IoT .NET k bráně IoT Edge. aplikace .net ale v úložišti certifikátů systému v hostitelích se systémem Linux i Windows automaticky mohou používat všechny nainstalované certifikáty.
- Získejte ukázku pro EdgeDownstreamDevice ze složky ukázek rozhraní .NET IoT Edge.
- Ujistěte se, že máte všechny požadavky na spuštění ukázky, a to kontrolou souboru Readme.MD .
- V souboru Properties/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, jak spustit ukázku na vašem zařízení, najdete v dokumentaci k sadě SDK.
Chcete-li programově 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 ji můžete spustit vícekrát se stejnými hodnotami, a to bez dalšího efektu.
C
V této části se seznámíte s ukázkovou aplikací 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 tématu sada SDK pro Azure IoT C.
- Získejte aplikaci iotedge_downstream_device_sample ze sady SDK pro zařízení Azure IoT pro C Samples.
- Ujistěte se, že máte všechny požadavky na spuštění ukázky, a to kontrolou souboru Readme.MD .
- V souboru iotedge_downstream_device_sample. c aktualizujte proměnné ConnectionString a edge_ca_cert_path .
- Pokyny, jak spustit ukázku na vašem zařízení, najdete v dokumentaci k sadě SDK.
Sada SDK pro zařízení Azure IoT pro jazyk C poskytuje možnost Registrovat certifikát certifikační autority při nastavování klienta. Tato operace neinstaluje certifikát kdekoli, ale místo toho používá formát řetězce certifikátu v paměti. Při navazování připojení se uložený certifikát poskytne základnímu zásobníku TLS.
(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 se používá spravovaný balíček nebo knihovna. Například knihovna založená na IDE Arduino bude vyžadovat přidání certifikátu certifikační autority do pole certifikátů definovaného v souboru Global certs . c namísto použití IoTHubDeviceClient_LL_SetOption operace.
pokud v Windows hostitelích nepoužíváte OpenSSL nebo jinou knihovnu TLS, sada SDK standardně použije zprostředkovatele Schannel. aby mohla zprostředkovatel Schannel fungovat, musí se certifikát IoT Edge root CA nainstalovat do úložiště certifikátů Windows, který není nastaven pomocí této IoTHubDeviceClient_SetOption operace.
Java
V této části se seznámíte s ukázkovou aplikací pro připojení klienta zařízení s Azure IoT Java k bráně IoT Edge.
- Ukázka pro odeslání události ze sady SDK pro zařízení Azure IoT pro Java Samples
- Ujistěte se, že máte všechny požadavky na spuštění ukázky, a to kontrolou souboru Readme.MD .
- Pokyny, jak spustit ukázku na vašem zařízení, najdete v dokumentaci k sadě SDK.
Python
Tato část zavádí 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 Azure IoT SDK pro zařízení pro Python Samples.
- Nastavte
IOTHUB_DEVICE_CONNECTION_STRINGIOTEDGE_ROOT_CA_CERT_PATHproměnné prostředí a, jak je uvedeno v komentářích ke skriptům Pythonu. - Další pokyny ke spuštění ukázky na zařízení najdete v dokumentaci k sadě SDK.
Test připojení brány
Pomocí tohoto ukázkového příkazu na zařízení pro příjem dat otestujte, jestli 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 (433).
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, například Verification: OK nebo Verify return code: 0 (ok) .

Řešení potíží s připojením brány
Pokud má vaše listové zařízení přerušované připojení k zařízení brány, zkuste k řešení použít následující postup.
- Je název hostitele brány v připojovacím řetězci stejný jako hodnota názvu hostitele v souboru IoT Edge konfigurace 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 na listovém zařízení.
- Jsou v bráně firewall otevřené komunikační porty? Komunikace založená na použitém protokolu (MQTTS: 8883/AMQPS: 5671/HTTPS: 433) musí být mezi podřízenými zařízeními a transparentním IoT Edge.
Další kroky
Přečtěte si, jak IoT Edge můžou do zařízení pro příjem dat nastavovat Možnosti offline .