Ověření podřízeného zařízení pro Azure IoT HubAuthenticate a downstream device to Azure IoT Hub

V případě transparentní brány mají podřízená zařízení (někdy označovaná jako listová zařízení nebo podřízená zařízení) identity v IoT Hub jako jakékoli jiné zařízení.In a transparent gateway scenario, downstream devices (sometimes called leaf devices or child devices) need identities in IoT Hub like any other device. Tento článek vás provede možnostmi ověřování zařízení pro příjem dat IoT Hub a pak ukazuje, jak deklarovat připojení brány.This article walks through the options for authenticating a downstream device to IoT Hub, and then demonstrates how to declare the gateway connection.

Existují tři obecné kroky k nastavení úspěšného transparentního připojení brány.There are three general steps to set up a successful transparent gateway connection. Tento článek popisuje druhý krok:This article covers the second step:

  1. Zařízení brány musí být schopné bezpečně připojit se k zařízením pro příjem dat, přijímat komunikaci ze zařízení pro příjem dat a směrovat zprávy do správného umístění.The gateway device needs to be able to securely connect to downstream devices, receive communications from downstream devices, and route messages to the proper destination. Další informace najdete v tématu Konfigurace zařízení IoT Edge pro fungování jako transparentní brány.For more information, see Configure an IoT Edge device to act as a transparent gateway.
  2. Aby se zařízení mohla ověřit pomocí IoT Hub, musí mít k dispozici identitu zařízení, která může komunikovat prostřednictvím zařízení brány.The downstream device needs to have a device identity to be able to authenticate with IoT Hub, and know to communicate through its gateway device.
  3. Zařízení pro příjem dat musí být schopné se bezpečně připojit k zařízení brány.The downstream device needs to be able to securely connect to its gateway device. Další informace najdete v tématu připojení zařízení pro příjem dat k bráně Azure IoT Edge.For more information, see Connect a downstream device to an Azure IoT Edge gateway.

Zařízení pro příjem dat se můžou pomocí IoT Hub ověřit pomocí jedné ze tří metod: symetrických klíčů (někdy označovaných jako sdílené přístupové klíče), certifikátů podepsaných držitelem X. 509 nebo certifikátů podepsaných certifikační autoritou (CA) X. 509.Downstream devices can authenticate with IoT Hub using one of three methods: symmetric keys (sometimes referred to as shared access keys), X.509 self-signed certificates, or X.509 certificate authority (CA) signed certificates. Postup ověřování se podobá postupům, které se používají k nastavení zařízení bez IoT Edge s IoT Hub, s malým rozdílem na deklaraci vztahu brány.The authentication steps are similar to the steps used to set up any non-IoT-Edge device with IoT Hub, with small differences to declare the gateway relationship.

Kroky v tomto článku ukazují ruční zřizování zařízení, ne Automatické zřizování pomocí Azure IoT Hub Device Provisioning Service.The steps in this article show manual device provisioning, not automatic provisioning with the Azure IoT Hub Device Provisioning Service.

PožadavkyPrerequisites

Proveďte kroky v části konfigurace IoT Edge zařízení, které bude fungovat jako transparentní brána.Complete the steps in Configure an IoT Edge device to act as a transparent gateway. Pokud pro vaše zařízení pro příjem dat používáte ověřování X. 509, musíte použít stejný skript pro generování certifikátů, který jste nastavili v článku transparentní brány.If you're using X.509 authentication for your downstream device, you need to use the same certificate generating script that you set up in the transparent gateway article.

Tento článek odkazuje na název hostitele brány na několika místech.This article refers to the gateway hostname at several points. Název hostitele brány je deklarovaný v parametru hostname souboru config. yaml na zařízení IoT Edge brány.The gateway hostname is declared in the hostname parameter of the config.yaml file on the IoT Edge gateway device. Používá se k vytvoření certifikátů v tomto článku a odkazuje se na připojovací řetězec zařízení pro příjem dat.It's used to create the certificates in this article, and is referred to in the connection string of the downstream devices. Název hostitele brány musí být přeložitelný na IP adresu, a to buď pomocí DNS, nebo zadáním souboru hostitele.The gateway hostname needs to be resolvable to an IP Address, either using DNS or a host file entry.

Ověřování symetrického klíčeSymmetric key authentication

Ověřování pomocí symetrického klíče nebo ověřování pomocí sdíleného přístupového klíče je nejjednodušší způsob, jak ověřit IoT Hub.Symmetric key authentication, or shared access key authentication, is the simplest way to authenticate with IoT Hub. Při ověřování pomocí symetrického klíče je klíč Base64 přidružený k vašemu ID zařízení IoT v IoT Hub.With symmetric key authentication, a base64 key is associated with your IoT device ID in IoT Hub. Tento klíč zahrnete do svých aplikací IoT, aby ho zařízení mohl prezentovat při připojení k IoT Hub.You include that key in your IoT applications so that your device can present it when it connects to IoT Hub.

Vytvoření identity zařízeníCreate the device identity

Do služby IoT Hub přidejte nové zařízení IoT pomocí Azure Portal, rozhraní příkazového řádku Azure nebo rozšíření IoT pro Visual Studio Code.Add a new IoT device in your IoT hub, using either the Azure portal, Azure CLI, or the IoT extension for Visual Studio Code. Mějte na paměti, že zařízení se musí identifikovat v IoT Hub jako běžné zařízení IoT, ne IoT Edge zařízení.Remember that downstream devices need to be identified in IoT Hub as regular IoT device, not IoT Edge devices.

Když vytváříte novou identitu zařízení, zadejte následující informace:When you create the new device identity, provide the following information:

  • Vytvořte ID pro vaše zařízení.Create an ID for your device.

  • Jako typ ověřování vyberte symetrický klíč .Select Symmetric key as the authentication type.

  • Volitelně můžete zvolit Nastavení nadřazeného zařízení a vybrat zařízení IoT Edge brány, ke kterému se toto zařízení pro příjem dat připojí.Optionally, choose to Set a parent device and select the IoT Edge gateway device that this downstream device will connect through. Tento krok je volitelný pro ověřování pomocí symetrického klíče, ale doporučuje se, protože nastavení nadřazeného zařízení umožňuje offline funkce pro vaše zařízení pro příjem dat.This step is optional for symmetric key authentication, but it's recommended because setting a parent device enables offline capabilities for your downstream device. Můžete vždy aktualizovat podrobnosti o zařízení a přidat nebo změnit nadřazený objekt později.You can always update the device details to add or change the parent later.

    Vytvoření ID zařízení s symetrickým ověřováním pomocí klíče na portálu

K provedení stejné operace můžete použít rozšíření IoT pro Azure CLI .You can use the IoT extension for Azure CLI to complete the same operation. Následující příklad vytvoří nové zařízení IoT s ověřováním pomocí symetrického klíče a přiřadí nadřazené zařízení:The following example creates a new IoT device with symmetric key authentication and assigns a parent device:

az iot hub device-identity create -n {iothub name} -d {device ID} --pd {gateway device ID}

Další informace o příkazech rozhraní příkazového řádku Azure pro vytváření zařízení a správě nadřazených a podřízených objektů najdete v referenčním obsahu pro příkaz AZ IoT Hub Device-identity .For more information about Azure CLI commands for device creation and parent/child management, see the reference content for az iot hub device-identity commands.

Připojení k IoT Hub přes bránuConnect to IoT Hub through a gateway

Stejný postup se používá k ověřování běžných zařízení IoT pro IoT Hub se symetrickými klíči platí i pro zařízení s podřízenou platností.The same process is used to authenticate regular IoT devices to IoT Hub with symmetric keys also applies to downstream devices. Jediným rozdílem je, že je potřeba přidat ukazatel na zařízení brány, abyste mohli směrovat připojení nebo v offline scénářích zpracovávat ověřování jménem IoT Hub.The only difference is that you need to add a pointer to the gateway device to route the connection or, in offline scenarios, to handle the authentication on behalf of IoT Hub.

Pro ověřování pomocí symetrického klíče se v zařízení nemusíte provádět žádné další kroky, které by bylo možné v IoT Hub ověřit.For symmetric key authentication, there's no additional steps that you need to take on your device for it to authenticate with IoT Hub. Pořád budete potřebovat certifikáty, aby se vaše zařízení pro příjem dat mohl připojit k zařízení brány, jak je popsáno v tématu připojení zařízení pro příjem dat k bráně Azure IoT Edge.You still need the certificates in place so that your downstream device can connect to its gateway device, as described in Connect a downstream device to an Azure IoT Edge gateway.

Po vytvoření identity zařízení IoT na portálu můžete načíst primární nebo sekundární klíč.After creating an IoT device identity in the portal, you can retrieve its primary or secondary keys. Jeden z těchto klíčů je nutné zahrnout do připojovacího řetězce, který zahrnete do jakékoli aplikace, která komunikuje s IoT Hub.One of these keys needs to be included in the connection string that you include in any application that communicates with IoT Hub. Pro ověřování symetrických klíčů IoT Hub poskytuje plně vytvořený připojovací řetězec v podrobnostech o zařízení pro vaše pohodlí.For symmetric key authentication, IoT Hub provides the fully formed connection string in the device details for your convenience. Do připojovacího řetězce je třeba přidat další informace o zařízení brány.You need to add extra information about the gateway device to the connection string.

Připojovací řetězce symetrického klíče pro podřízená zařízení vyžadují následující komponenty:Symmetric key connection strings for downstream devices need the following components:

  • Centrum IoT, ke kterému se zařízení připojuje: Hostname={iothub name}.azure-devices.netThe IoT hub that the device connects to: Hostname={iothub name}.azure-devices.net
  • ID zařízení zaregistrované u centra: DeviceID={device ID}The device ID registered with the hub: DeviceID={device ID}
  • Buď primární, nebo sekundární klíč: SharedAccessKey={key}Either the primary or secondary key: SharedAccessKey={key}
  • Zařízení brány, ke kterému se zařízení připojujeThe gateway device that the device connects through. Zadejte hodnotu názvu hostitele ze souboru config. yaml zařízení IoT Edge brány: GatewayHostName={gateway hostname}Provide the hostname value from the IoT Edge gateway device's config.yaml file: GatewayHostName={gateway hostname}

Celý připojovací řetězec se všemi dohromady vypadá takto:All together, a complete connection string looks like:

HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice

Pokud jste pro toto zařízení pro příjem dat vytvořili vztah nadřazenosti/podřízenosti, můžete připojovací řetězec zjednodušit voláním brány přímo jako hostitele připojení.If you established a parent/child relationship for this downstream device, then you can simplify the connection string by calling the gateway directly as the connection host. Příklad:For example:

HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz

Ověřování X. 509X.509 authentication

Existují dva způsoby, jak ověřit zařízení IoT pomocí certifikátů X. 509.There are two ways to authenticate an IoT device using X.509 certificates. Podle toho, jak se rozhodnete k ověřování, jsou kroky pro připojení zařízení k IoT Hub stejné.Whichever way you choose to authenticate, the steps to connect your device to IoT Hub are the same. Zvolte pro ověřování certifikáty podepsané svým držitelem nebo CA podepsané certifikační autoritou a potom se Naučte, jak se připojit k IoT Hub.Choose either self-signed or CA-signed certs for authentication, then continue to learn how to connect to IoT Hub.

Další informace o tom, jak IoT Hub používá ověřování X. 509, najdete v následujících článcích:For more information about how IoT Hub uses X.509 authentication, see the following articles:

Vytvoření identity zařízení s certifikáty podepsanými svými držiteli X. 509Create the device identity with X.509 self-signed certificates

Pro ověřování X. 509 podepsané svým držitelem, které se někdy označuje jako ověřování kryptografickým otiskem, je potřeba vytvořit nové certifikáty, které se mají na zařízení IoT umístit.For X.509 self-signed authentication, sometimes referred to as thumbprint authentication, you need to create new certificates to place on your IoT device. Tyto certifikáty obsahují kryptografický otisk, který sdílíte s IoT Hub pro ověřování.These certificates have a thumbprint in them that you share with IoT Hub for authentication.

Nejjednodušší způsob, jak tento scénář otestovat, je použít stejný počítač, který jste použili k vytvoření certifikátů v části konfigurace IoT Edge zařízení pro fungování jako transparentní brány.The easiest way to test this scenario is to use the same machine that you used to create certificates in Configure an IoT Edge device to act as a transparent gateway. Tento počítač by už měl být nastavený pomocí správného nástroje, certifikátu kořenové certifikační autority a zprostředkující certifikační autority, aby se vytvořily certifikáty zařízení IoT.That machine should already be set up with the right tool, root CA certificate, and intermediate CA certificate to create the IoT device certificates. Konečné certifikáty a jejich privátní klíče můžete později zkopírovat do svého zařízení po telefonu.You can copy the final certificates and their private keys over to your downstream device afterwards. Podle postupu v článku o bráně nastavíte OpenSSL na svém počítači a pak jste naklonoval úložiště IoT Edge pro přístup ke skriptům pro vytváření certifikátů.Following the steps in the gateway article, you set up openssl on your machine, then cloned the IoT Edge repo to access certificate creation scripts. Pak jste vytvořili pracovní adresář, který zavolá <WRKDIR > pro uložení certifikátů.Then, you made a working directory that we call <WRKDIR> to hold the certificates. Výchozí certifikáty jsou určeny pro vývoj a testování, takže pouze v posledních 30 dnech.The default certificates are meant for developing and testing, so only last 30 days. Měli byste vytvořit certifikát kořenové certifikační autority a zprostředkující certifikát.You should have created a root CA certificate and an intermediate certificate.

  1. Přejděte do pracovního adresáře v okně bash nebo PowerShellu.Navigate to your working directory in either a bash or PowerShell window.

  2. Pro zařízení pro příjem dat vytvořte dva certifikáty (primární a sekundární).Create two certificates (primary and secondary) for the downstream device. Zadejte název zařízení a pak primární nebo sekundární popisek.Provide your device name and then the primary or secondary label. Tyto informace slouží k pojmenování souborů, abyste mohli sledovat certifikáty pro více zařízení.This information is used to name the files so that you can keep track of certificates for multiple devices.

    New-CACertsDevice "<device name>-primary"
    New-CACertsDevice "<device name>-secondary"
    
    ./certGen.sh create_device_certificate "<device name>-primary"
    ./certGen.sh create_device_certificate "<device name>-secondary"
    
  3. Načte otisk prstu SHA1 (nazývaný kryptografický otisk v rozhraní IoT Hub) z každého certifikátu, což je 40 šestnáctkový řetězec znaků.Retrieve the SHA1 fingerprint (called a thumbprint in the IoT Hub interface) from each certificate, which is a 40 hexadecimal character string. K zobrazení certifikátu a nalezení otisku prstu použijte následující příkaz OpenSSL:Use the following openssl command to view the certificate and find the fingerprint:

    openssl x509 -in <WORKDIR>/certs/iot-device-<device name>-primary.cert.pem -text -fingerprint | sed 's/[:]//g'
    
  4. V Azure Portal přejděte do služby IoT Hub a vytvořte novou identitu zařízení IoT s následujícími hodnotami:Navigate to your IoT hub in the Azure portal and create a new IoT device identity with the following values:

    • Jako typ ověřování vyberte X. 509 podepsaný svým držitelem .Select X.509 Self-Signed as the authentication type.
    • Vložte šestnáctkové řetězce, které jste zkopírovali z primárního a sekundárního certifikátu vašeho zařízení.Paste the hexadecimal strings that you copied from your device's primary and secondary certificates.
    • Vyberte možnost nastavit nadřazené zařízení a zvolte zařízení IoT Edge brány, ke kterému se bude toto zařízení s podřízenou položkou připojovat.Select Set a parent device and choose the IoT Edge gateway device that this downstream device will connect through. Pro ověřování X. 509 zařízení pro příjem dat se vyžaduje nadřazené zařízení.A parent device is required for X.509 authentication of a downstream device.

    Vytvoření ID zařízení pomocí ověřování X. 509 podepsaného svým držitelem na portálu

  5. Zkopírujte následující soubory do libovolného adresáře v zařízení pro příjem dat:Copy the following files to any directory on your downstream device:

    • <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
    • <WRKDIR>\certs\iot-device-<device name>*.cert.pem
    • <WRKDIR>\certs\iot-device-<device id>*.cert.pfx
    • <WRKDIR>\certs\iot-device-<device name>*-full-chain.cert.pem
    • <WRKDIR>\private\iot-device-<device name>*.key.pem

    Na tyto soubory se budete odkazovat v aplikacích na listovém zařízení, které se připojují k IoT Hub.You'll reference these files in the leaf device applications that connect to IoT Hub. K přesunutí souborů certifikátů můžete použít službu, jako je Azure Key Vault , nebo funkci, jako je protokol Secure Copy .You can use a service like Azure Key Vault or a function like Secure copy protocol to move the certificate files.

K dokončení stejné operace vytváření zařízení můžete použít rozšíření IoT pro Azure CLI .You can use the IoT extension for Azure CLI to complete the same device creation operation. Následující příklad vytvoří nové zařízení IoT s ověřováním X. 509 podepsaným svým držitelem a přiřadí nadřazené zařízení:The following example creates a new IoT device with X.509 self-signed authentication and assigns a parent device:

az iot hub device-identity create -n {iothub name} -d {device ID} --pd {gateway device ID} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}

Další informace o příkazech rozhraní příkazového řádku Azure pro vytváření zařízení, generování certifikátů a nadřazené a podřízené správě najdete v referenčním obsahu pro příkaz AZ IoT Hub Device-identity .For more information about Azure CLI commands for device creation, certificate generation, and parent and child management, see the reference content for az iot hub device-identity commands.

Vytvoření identity zařízení s certifikátem podepsaným certifikační autoritou X. 509Create the device identity with X.509 CA signed certificates

Pro ověřování podepsané certifikační autoritou (CA) X. 509 potřebujete certifikát od kořenové certifikační autority zaregistrovaný v IoT Hub, který používáte k podepisování certifikátů pro vaše zařízení IoT.For X.509 certificate authority (CA) signed authentication, you need a root CA certificate registered in IoT Hub that you use to sign certificates for your IoT device. Jakékoli zařízení, které vyvolalo certifikát od kořenové certifikační autority nebo jakýkoli z jeho zprostředkujících certifikátů, bude povoleno ověřování.Any device using a certificate that was issues by the root CA certificate or any of its intermediate certificates will be permitted to authenticate.

Tato část je založená na pokynech, které jsou popsané v IoT Hub článku nastavení zabezpečení X. 509 ve službě Azure IoT Hub.This section is based on the instructions detailed in the IoT Hub article Set up X.509 security in your Azure IoT hub. Podle kroků v této části Zjistěte, které hodnoty se mají použít k nastavení zařízení pro příjem dat, která se připojují přes bránu.Follow the steps in this section to know which values to use to set up a downstream device that connects through a gateway.

Nejjednodušší způsob, jak tento scénář otestovat, je použít stejný počítač, který jste použili k vytvoření certifikátů v části konfigurace IoT Edge zařízení pro fungování jako transparentní brány.The easiest way to test this scenario is to use the same machine that you used to create certificates in Configure an IoT Edge device to act as a transparent gateway. Tento počítač by už měl být nastavený pomocí správného nástroje, certifikátu kořenové certifikační autority a zprostředkující certifikační autority, aby se vytvořily certifikáty zařízení IoT.That machine should already be set up with the right tool, root CA certificate, and intermediate CA certificate to create the IoT device certificates. Konečné certifikáty a jejich privátní klíče můžete později zkopírovat do svého zařízení po telefonu.You can copy the final certificates and their private keys over to your downstream device afterwards. Podle postupu v článku o bráně nastavíte OpenSSL na svém počítači a pak jste naklonoval úložiště IoT Edge pro přístup ke skriptům pro vytváření certifikátů.Following the steps in the gateway article, you set up openssl on your machine, then cloned the IoT Edge repo to access certificate creation scripts. Pak jste vytvořili pracovní adresář, který zavolá <WRKDIR > pro uložení certifikátů.Then, you made a working directory that we call <WRKDIR> to hold the certificates. Výchozí certifikáty jsou určeny pro vývoj a testování, takže pouze v posledních 30 dnech.The default certificates are meant for developing and testing, so only last 30 days. Měli byste vytvořit certifikát kořenové certifikační autority a zprostředkující certifikát.You should have created a root CA certificate and an intermediate certificate.

  1. Postupujte podle pokynů v části Registrace certifikátů certifikační autority x. 509 do centra IoT Hub v tématu Nastavení zabezpečení X. 509 ve službě Azure IoT Hub.Follow the instructions in the Register X.509 CA certificates to your IoT hub section of Set up X.509 security in your Azure IoT hub. V této části provedete následující kroky:In that section, you perform the following steps:

    1. Nahrajte certifikát kořenové certifikační autority.Upload a root CA certificate. Pokud používáte certifikáty, které jste vytvořili v článku transparentní brány, nahrajte jako soubor kořenového certifikátu <WRKDIR >/certs/Azure-IoT-test-Only.root.ca.CERT.pem .If you're using the certificates that you created in the transparent gateway article, upload <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem as the root certificate file.

    2. Ověřte, že vlastníte certifikát kořenové certifikační autority.Verify that you own that root CA certificate. Můžete si ověřit, jestli máte k dispozici nástroje pro certifikace v <WRKDIR >.You can verify possession with the cert tools in <WRKDIR>.

      New-CACertsVerificationCert "<verification code from Azure portal>"
      
      ./certGen.sh create_verification_certificate <verification code from Azure portal>"
      
  2. Postupujte podle pokynů v části Vytvoření zařízení x. 509 pro službu IoT Hub v tématu Nastavení zabezpečení x. 509 ve službě Azure IoT Hub.Follow the instructions in the Create an X.509 device for your IoT hub section of Set up X.509 security in your Azure IoT hub. V této části provedete následující kroky:In that section, you perform the following steps:

    1. Přidejte nové zařízení.Add a new device. Zadejte malý název ID zařízenía vyberte typ ověřování, který je podepsaný certifikační autoritou X. 509.Provide a lowercase name for device ID, and choose the authentication type X.509 CA Signed.
    2. Nastavte nadřazené zařízení.Set a parent device. V části zařízení pro příjem dat vyberte možnost nastavit nadřazené zařízení a zvolte zařízení IoT Edge brány, které bude poskytovat připojení k IoT Hub.For downstream devices, select Set a parent device and choose the IoT Edge gateway device that will provide the connection to IoT Hub.
  3. Vytvořte řetěz certifikátů pro vaše zařízení pro příjem dat.Create a certificate chain for your downstream device. K provedení tohoto řetězce použijte stejný certifikát od kořenové certifikační autority, který jste nahráli do IoT Hub.Use the same root CA certificate that you uploaded to IoT Hub to make this chain. Použijte stejné ID zařízení s malým písmenem, které jste přiřadili identitě zařízení na portálu.Use the same lowercase device ID that you gave to your device identity in the portal.

    New-CACertsDevice "<device id>"
    
    ./certGen.sh create_device_certificate "<device id>"
    
  4. Zkopírujte následující soubory do libovolného adresáře v zařízení pro příjem dat:Copy the following files to any directory on your downstream device:

    • <WRKDIR>\certs\azure-iot-test-only.root.ca.cert.pem
    • <WRKDIR>\certs\iot-device-<device id>*.cert.pem
    • <WRKDIR>\certs\iot-device-<device id>*.cert.pfx
    • <WRKDIR>\certs\iot-device-<device id>*-full-chain.cert.pem
    • <WRKDIR>\private\iot-device-<device id>*.key.pem

    Na tyto soubory se budete odkazovat v aplikacích na listovém zařízení, které se připojují k IoT Hub.You'll reference these files in the leaf device applications that connect to IoT Hub. K přesunutí souborů certifikátů můžete použít službu, jako je Azure Key Vault , nebo funkci, jako je protokol Secure Copy .You can use a service like Azure Key Vault or a function like Secure copy protocol to move the certificate files.

K dokončení stejné operace vytváření zařízení můžete použít rozšíření IoT pro Azure CLI .You can use the IoT extension for Azure CLI to complete the same device creation operation. Následující příklad vytvoří nové zařízení IoT s podpisem certifikační autority X. 509 podepsané ověřováním a přiřadí nadřazené zařízení:The following example creates a new IoT device with X.509 CA signed authentication and assigns a parent device:

az iot hub device-identity create -n {iothub name} -d {device ID} --pd {gateway device ID} --am x509_ca

Další informace o příkazech rozhraní příkazového řádku Azure pro vytváření zařízení a správě nadřazených a podřízených objektů najdete v referenčním obsahu pro příkaz AZ IoT Hub Device-identity .For more information about Azure CLI commands for device creation and parent/child management, see the reference content for az iot hub device-identity commands.

Připojení k IoT Hub přes bránuConnect to IoT Hub through a gateway

Každá sada Azure IoT SDK zpracovává ověřování X. 509 trochu jinak.Each Azure IoT SDK handles X.509 authentication a little differently. Stejný postup se ale používá k ověřování běžných zařízení IoT, aby se IoT Hub s certifikáty X. 509, které platí i pro podřízená zařízení.However, the same process is used to authenticate regular IoT devices to IoT Hub with X.509 certificates also applies to downstream devices. Jediným rozdílem je, že je potřeba přidat ukazatel na zařízení brány, abyste mohli směrovat připojení nebo v offline scénářích zpracovávat ověřování jménem IoT Hub.The only difference is that you need to add a pointer to the gateway device to route the connection or, in offline scenarios, to handle the authentication on behalf of IoT Hub. Obecně platí, že můžete použít stejné kroky ověřování X. 509 pro všechna IoT Hub zařízení a pak jednoduše nahradit hodnotu názvu hostitele v připojovacím řetězci, aby to byl název hostitele vašeho zařízení brány.In general, you can follow the same X.509 authentication steps for all IoT Hub devices, then simply replace the value of Hostname in the connection string to be the hostname of your gateway device.

V následujících částech jsou uvedeny některé příklady pro různé jazyky sady SDK.The following sections show some examples for different SDK languages.

Důležité

Následující ukázky ukazují, jak IoT Hub sady SDK používají certifikáty k ověřování zařízení.The following samples demonstrate how the IoT Hub SDKs use certificates to authenticate devices. V produkčním nasazení byste měli v modulu hardwarového zabezpečení (HSM) ukládat všechny tajné kódy, jako jsou privátní nebo SAS klíče.In a production deployment, you should store all secrets like private or SAS keys in a hardware secure module (HSM).

.NET.NET

Příklad C# programu ověřujícího IoT Hub s certifikáty X. 509 najdete v tématu nastavení zabezpečení x. 509 ve službě Azure IoT Hub.For an example of a C# program authenticating to IoT Hub with X.509 certificates, see Set up X.509 security in your Azure IoT hub. Tady jsou uvedené některé klíčové řádky této ukázky, které demonstrují proces ověřování.Some of the key lines of that sample are included here to demonstrate the authentication process.

Při deklaraci názvu hostitele pro instanci DeviceClient použijte název hostitele zařízení IoT Edge brány.When declaring the hostname for your DeviceClient instance, use the IoT Edge gateway device's hostname. Název hostitele najdete v souboru config. yaml zařízení brány.The hostname can be found in the gateway device's config.yaml file.

Pokud používáte testovací certifikáty, které poskytuje IoT Edge úložiště Git, klíč k certifikátům je 1234.If you're using the test certificates provided by the IoT Edge git repository, the key to the certificates is 1234.

try
{
    var cert = new X509Certificate2(@"<absolute-path-to-your-device-pfx-file>", "1234");
    var auth = new DeviceAuthenticationWithX509Certificate("<device-id>", cert);
    var deviceClient = DeviceClient.Create("<gateway hostname>", auth, TransportType.Amqp_Tcp_Only);

    if (deviceClient == null)
    {
        Console.WriteLine("Failed to create DeviceClient!");
    }
    else
    {
        Console.WriteLine("Successfully created DeviceClient!");
        SendEvent(deviceClient).Wait();
    }

    Console.WriteLine("Exiting...\n");
}
catch (Exception ex)
{
    Console.WriteLine("Error in sample: {0}", ex.Message);
}

CC

Příklad programu v jazyce C ověřování pro IoT Hub s certifikáty X. 509 najdete v tématu Ukázka iotedge_downstream_device_sample sady SDK pro sadu c IoT.For an example of a C program authenticating to IoT Hub with X.509 certificates, see the C IoT SDK's iotedge_downstream_device_sample sample. Tady jsou uvedené některé klíčové řádky této ukázky, které demonstrují proces ověřování.Some of the key lines of that sample are included here to demonstrate the authentication process.

Při definování připojovacího řetězce pro vaše zařízení pro příjem dat použijte název hostitele zařízení IoT Edge brány pro parametr názvu hostitele .When defining the connection string for your downstream device, use the IoT Edge gateway device's hostname for the HostName parameter. Název hostitele najdete v souboru config. yaml zařízení brány.The hostname can be found in the gateway device's config.yaml file.

// If your downstream device uses X.509 authentication (self signed or X.509 CA) then
// resulting connection string should look like the following:
// "HostName=<gateway device hostname>;DeviceId=<device_id>;x509=true"
static const char* connectionString = "[Downstream device IoT Edge connection string]";

// Path to the Edge "owner" root CA certificate
static const char* edge_ca_cert_path = "[Path to root CA certificate]";

// When the downstream device uses X.509 authentication, a certificate and key 
// in PRM format must be provided.
static const char * x509_device_cert_path = "[Path to primary or secondary device cert]";
static const char * x509_device_key_path = "[Path to primary or secondary device key]";

int main(void)
{
    // Create the iothub handle here
    device_handle = IoTHubDeviceClient_CreateFromConnectionString(connectionString, protocol);

    // Provide the Azure IoT device client with the same root
    // X509 CA certificate that was used to set up the IoT Edge gateway runtime
    if (edge_ca_cert_path != NULL)
    {
        cert_string = obtain_edge_ca_certificate();
        (void)IoTHubDeviceClient_SetOption(device_handle, OPTION_TRUSTED_CERT, cert_string);
    }

    if ((x509_device_cert_path != NULL) && (x509_device_key_path != NULL))
    {
        const char *x509certificate = obtain_file_contents(x509_device_cert_path);
        const char *x509privatekey = obtain_file_contents(x509_device_key_path);
        if ((IoTHubDeviceClient_SetOption(device_handle, OPTION_X509_CERT, x509certificate) != IOTHUB_CLIENT_OK) ||
            (IoTHubDeviceClient_SetOption(device_handle, OPTION_X509_PRIVATE_KEY, x509privatekey) != IOTHUB_CLIENT_OK)
            )
        {
            printf("failure to set options for x509, aborting\r\n");
            exit(1);
        }
    }
}

Node.jsNode.js

Příklad programu Node. js ověřování, aby IoT Hub pomocí certifikátů X. 509, najdete v ukázce simple_sample_device_x509. js sady Node. js IoT SDK.For an example of a Node.js program authenticating to IoT Hub with X.509 certificates, see the Node.js IoT SDK's simple_sample_device_x509.js sample. Tady jsou uvedené některé klíčové řádky této ukázky, které demonstrují proces ověřování.Some of the key lines of that sample are included here to demonstrate the authentication process.

Při definování připojovacího řetězce pro vaše zařízení pro příjem dat použijte název hostitele zařízení IoT Edge brány pro parametr názvu hostitele .When defining the connection string for your downstream device, use the IoT Edge gateway device's hostname for the HostName parameter. Název hostitele najdete v souboru config. yaml zařízení brány.The hostname can be found in the gateway device's config.yaml file.

Pokud používáte testovací certifikáty, které poskytuje IoT Edge úložiště Git, klíč k certifikátům je 1234.If you're using the test certificates provided by the IoT Edge git repository, the key to the certificates is 1234.

// String containing Hostname and Device Id in the following format:
//  "HostName=<gateway device hostname>;DeviceId=<device_id>;x509=true"
var connectionString = '<DEVICE CONNECTION STRING WITH x509=true>';
var certFile = '<PATH-TO-CERTIFICATE-FILE>';
var keyFile = '<PATH-TO-KEY-FILE>';
var passphrase = '<KEY PASSPHRASE IF ANY>';

// fromConnectionString must specify a transport constructor, coming from any transport package.
var client = Client.fromConnectionString(connectionString, Protocol);

var options = {
   cert : fs.readFileSync(certFile, 'utf-8').toString(),
   key : fs.readFileSync(keyFile, 'utf-8').toString(),
   passphrase: passphrase
 };

// Calling setOptions with the x509 certificate and key (and optionally, passphrase) will configure the client transport to use x509 when connecting to IoT Hub
client.setOptions(options);

PythonPython

Sada Python SDK aktuálně podporuje jenom certifikáty x509 a klíče ze souborů, ne ty, které jsou definované jako vložené.The Python SDK currently only supports using X509 certificates and and keys from files, not ones which are defined inline. V následujícím příkladu jsou relevantní cesty k příponám uloženy v proměnných prostředí.In the following example, relevant filepaths are stored in environment variables.

Při definování názvu hostitele pro vaše zařízení pro příjem dat použijte název hostitele zařízení IoT Edge brány pro parametr názvu hostitele .When defining the hostname for your downstream device, use the IoT Edge gateway device's hostname for the HostName parameter. Název hostitele najdete v souboru config. yaml zařízení brány.The hostname can be found in the gateway device's config.yaml file.

import os
from azure.iot.device import IoTHubDeviceClient, X509

HOSTNAME = "[IoT Edge Gateway Hostname]"
DEVICE_ID = "[Device ID]"

def iothub_client_init():
    x509 = X509(
        cert_file=os.getenv("X509_CERT_FILE"),
        key_file=os.getenv("X509_KEY_FILE")
    )

    client = IoTHubDeviceClient.create_from_x509_certificate(
        x509=x509,
        hostname=HOSTNAME,
        device_id=DEVICE_ID
    )
)

if __name__ == '__main__':
    iothub_client_init()

JavaJava

Příklad programu Java ověřujícího IoT Hub s certifikáty X. 509 naleznete v ukázce Java IoT SDK SendEventX509. Java .For an example of a Java program authenticating to IoT Hub with X.509 certificates, see the Java IoT SDK's SendEventX509.java sample. Tady jsou uvedené některé klíčové řádky této ukázky, které demonstrují proces ověřování.Some of the key lines of that sample are included here to demonstrate the authentication process.

Při definování připojovacího řetězce pro vaše zařízení pro příjem dat použijte název hostitele zařízení IoT Edge brány pro parametr názvu hostitele .When defining the connection string for your downstream device, use the IoT Edge gateway device's hostname for the HostName parameter. Název hostitele najdete v souboru config. yaml zařízení brány.The hostname can be found in the gateway device's config.yaml file.

//PEM encoded representation of the public key certificate
private static String publicKeyCertificateString =
    "-----BEGIN CERTIFICATE-----\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "-----END CERTIFICATE-----\n";

//PEM encoded representation of the private key
private static String privateKeyString =
    "-----BEGIN EC PRIVATE KEY-----\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX\n" +
    "-----END EC PRIVATE KEY-----\n";

DeviceClient client = new DeviceClient(connectionString, protocol, publicKeyCertificateString, false, privateKeyString, false);

Další krokyNext steps

Po dokončení tohoto článku byste měli mít zařízení IoT Edge fungující jako transparentní bránu a pro zařízení zaregistrovaná ve službě IoT Hub.By completing this article, you should have an IoT Edge device working as a transparent gateway and a downstream device registered with an IoT hub. Dále je potřeba nakonfigurovat zařízení pro příjem dat tak, aby důvěřovala zařízení brány a odesílala do ní zprávy.Next, you need to configure your downstream devices to trust the gateway device and send messages to it. Další informace najdete v tématu připojení zařízení pro příjem dat k bráně Azure IoT Edge.For more information, see Connect a downstream device to an Azure IoT Edge gateway.