Een downstream-apparaat verifiëren voor Azure IoT Hub
Van toepassing op:
IoT Edge 1,1
IOT Edge 1,2
In een transparant gatewayscenario hebben downstreamapparaten (ook wel leaf-apparaten of onderliggende apparaten genoemd) identiteiten nodig in IoT Hub zoals elk ander apparaat. In dit artikel worden de opties voor het authenticeren van een downstreamapparaat bij IoT Hub beschreven en wordt vervolgens gedemonstreerd hoe u de gatewayverbinding declareren.
Er zijn drie algemene stappen voor het instellen van een geslaagde transparante gatewayverbinding. In dit artikel wordt de tweede stap beschreven:
- Configureer het gatewayapparaat als een server, zodat downstreamapparaten er veilig verbinding mee kunnen maken. Stel de gateway in voor het ontvangen van berichten van downstreamapparaten en routeer deze naar de juiste bestemming. Zie Configure an IoT Edge device to act as a transparent gateway (Eentransparant gateway configureren) voor deze stappen.
- Maak een apparaat-id voor het downstreamapparaat zodat het kan worden geverifieerd met IoT Hub. Configureer het downstreamapparaat voor het verzenden van berichten via het gatewayapparaat.
- Verbinding maken downstreamapparaat naar het gatewayapparaat en begin met het verzenden van berichten. Zie een downstreamapparaat Verbinding maken naar een Azure IoT Edge gatewayvoor deze stappen.
Downstreamapparaten kunnen worden geverifieerd met IoT Hub met behulp van een van de volgende drie methoden: symmetrische sleutels (ook wel gedeelde toegangssleutels genoemd), zelf-ondertekende X.509-certificaten of ondertekende certificaten van de X.509-certificeringsinstantie (CA). De verificatiestappen zijn vergelijkbaar met de stappen voor het instellen van een niet-IoT Edge-apparaat met IoT Hub, met kleine verschillen om de gatewayrelatie te declareeren.
Het automatisch inrichten van downstreamapparaten met Azure IoT Hub Device Provisioning Service (DPS) wordt niet ondersteund.
Vereisten
Voltooi de stappen in Configure an IoT Edge device to act as a transparent gateway (Een transparant gatewayapparaat configureren om te fungeren als een transparante gateway).
Als u X.509-verificatie gebruikt, genereert u certificaten voor uw downstreamapparaat. U hebt hetzelfde basis-CA-certificaat en het certificaat dat het script genereert dat u hebt gebruikt voor het transparante gatewayartikel dat u opnieuw kunt gebruiken.
In dit artikel wordt op verschillende punten naar de hostnaam van de gateway verwezen. De hostnaam van de gateway wordt gedeclareerd in de hostnaamparameter van het configuratiebestand op IoT Edge gatewayapparaat. Er wordt naar verwezen in de connection string van het downstreamapparaat. De hostnaam van de gateway moet kunnen worden omgeslagen in een IP-adres, met behulp van DNS of een hostbestandsinvoer op het downstreamapparaat.
Apparaat registreren bij IoT Hub
Kies hoe u wilt dat uw downstreamapparaat wordt geverifieerd met IoT Hub:
Verificatie met symmetrische sleutel:IoT Hub maakt u een sleutel die u op het downstreamapparaat zet. Wanneer het apparaat wordt geverifieerd, controleert IoT Hub of de twee sleutels overeenkomen. U hoeft geen extra certificaten te maken om symmetrische-sleutelverificatie te gebruiken.
Deze methode is sneller om aan de slag te gaan als u gateways test in een ontwikkelings- of testscenario.
Zelf-ondertekende X.509-verificatie:dit wordt ook wel vingerafdrukverificatie genoemd, omdat u de vingerafdruk van het X.509-certificaat van het apparaat deelt met IoT Hub.
Certificaatverificatie wordt aanbevolen voor apparaten in productiescenario's.
X.509 CA-ondertekende verificatie:Upload basis-CA-certificaat toe aan IoT Hub. Wanneer apparaten hun X.509-certificaat voor verificatie presenteren, controleert IoT Hub of het hoort bij een vertrouwensketen die is ondertekend door hetzelfde basis-CA-certificaat.
Certificaatverificatie wordt aanbevolen voor apparaten in productiescenario's.
Verificatie met symmetrische sleutel
Verificatie met een symmetrische sleutel of verificatie met een gedeelde toegangssleutel is de eenvoudigste manier om te verifiëren met IoT Hub. Bij verificatie met een symmetrische sleutel wordt een base64-sleutel gekoppeld aan uw IoT-apparaat-id in IoT Hub. U kunt deze sleutel opnemen in uw IoT-toepassingen, zodat uw apparaat deze kan presenteren wanneer het verbinding maakt met IoT Hub.
Voeg een nieuw IoT-apparaat toe aan uw IoT-hub met behulp van de Azure Portal, Azure CLI of de IoT-extensie voor Visual Studio Code. Houd er wel voor dat downstreamapparaten in een IoT Hub worden geïdentificeerd als gewone IoT-apparaten, niet IoT Edge apparaten.
Wanneer u de nieuwe apparaat-id maakt, geeft u de volgende informatie op:
Maak een id voor uw apparaat.
Selecteer Symmetrische sleutel als verificatietype.
Selecteer Een bovenliggend apparaat instellen en selecteer IoT Edge gatewayapparaat dat door dit downstreamapparaat wordt verbonden. U kunt het bovenliggende later altijd wijzigen.

Notitie
Het bovenliggende apparaat instellen was vroeger een optionele stap voor downstreamapparaten die gebruikmaken van symmetrische-sleutelverificatie. Vanaf versie IoT Edge versie 1.1.0 moet elk downstreamapparaat echter worden toegewezen aan een bovenliggend apparaat.
U kunt de hub IoT Edge om terug te gaan naar het vorige gedrag door de omgevingsvariabele AuthenticationMode in te stellen op de waarde CloudAndScope.
U kunt ook de IoT-extensie voor Azure CLI gebruiken om dezelfde bewerking te voltooien. In het volgende voorbeeld wordt de opdracht az iot hub device-identity gebruikt om een nieuw IoT-apparaat met symmetrische sleutelverificatie te maken en een bovenliggend apparaat toe te wijzen:
az iot hub device-identity create -n {iothub name} -d {new device ID} --pd {existing gateway device ID}
Vervolgens kunt u de gegevens ophalen en connection string zodat uw apparaat weet dat er verbinding moet worden via de gateway.
Zelf-ondertekende X.509-verificatie
Voor zelf-ondertekende X.509-verificatie, ook wel vingerafdrukverificatie genoemd, moet u certificaten maken die u op uw downstreamapparaat wilt plaatsen. Deze certificaten hebben een vingerafdruk die u deelt met IoT Hub voor verificatie.
Maak met behulp van uw CA-certificaat twee apparaatcertificaten (primair en secundair) voor het downstreamapparaat.
Als u geen certificeringsinstantie hebt om X.509-certificaten te maken, kunt u de democertificaatscripts van IoT Edge gebruiken om downstreamapparaatcertificaten te maken. Volg de stappen voor het maken van zelf-ondertekende certificaten. Gebruik hetzelfde basis-CA-certificaat dat de certificaten voor uw gatewayapparaat heeft gegenereerd.
Als u uw eigen certificaten maakt, moet u ervoor zorgen dat de onderwerpnaam van het apparaatcertificaat is ingesteld op de apparaat-id die u gebruikt bij het registreren van het IoT-apparaat in de Azure IoT Hub. Deze instelling is vereist voor verificatie.
Haal de SHA1-vingerafdruk (een vingerafdruk genoemd in de IoT Hub-interface) op uit elk certificaat. Dit is een tekenreeks van 40 hexadecimale tekens. Gebruik de volgende openssl-opdracht om het certificaat weer te geven en de vingerafdruk te zoeken:
Windows:
openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprintLinux:
openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
Voer deze opdracht twee keer uit, één keer voor het primaire certificaat en één keer voor het secundaire certificaat. U geeft vingerafdrukken op voor beide certificaten wanneer u een nieuw IoT-apparaat registreert met behulp van zelf-ondertekende X.509-certificaten.
Navigeer naar uw IoT-hub in Azure Portal en maak een nieuwe IoT-apparaat-id met de volgende waarden:
- Geef de apparaat-id op die overeenkomt met de onderwerpnaam van uw apparaatcertificaten.
- Selecteer X.509 Self-Signed als verificatietype.
- Plak de hexadecimale tekenreeksen die u hebt gekopieerd uit de primaire en secundaire certificaten van uw apparaat.
- Selecteer Een bovenliggend apparaat instellen en kies het IoT Edge gatewayapparaat dat door dit downstreamapparaat wordt verbonden. U kunt het bovenliggende later altijd wijzigen.

Kopieer zowel de certificaten van het primaire als het secundaire apparaat en hun sleutels naar een locatie op het downstreamapparaat. Verplaats ook een kopie van het gedeelde basis-CA-certificaat dat zowel het gatewayapparaatcertificaat als de downstreamapparaatcertificaten heeft gegenereerd.
U verwijst naar deze certificaatbestanden in alle toepassingen op het downstreamapparaat die verbinding maken met IoT Hub. U kunt een service zoals een Azure Key Vault of een functie zoals secure copy protocol gebruiken om de certificaatbestanden te verplaatsen.
Bekijk, afhankelijk van de taal van uw voorkeur, voorbeelden van hoe naar X.509-certificaten kan worden verwezen in IoT-toepassingen:
U kunt ook de IoT-extensie voor Azure CLI gebruiken om dezelfde bewerking voor het maken van apparaten te voltooien. In het volgende voorbeeld wordt de opdracht az iot hub device-identity gebruikt om een nieuw IoT-apparaat te maken met zelf-ondertekende X.509-verificatie en wordt een bovenliggend apparaat toegewezen:
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}
Vervolgens kunt u de gegevens ophalen en connection string zodat uw apparaat weet dat er verbinding moet worden via de gateway.
X.509 CA-ondertekende verificatie
Voor ondertekende verificatie van de X.509-certificeringsinstantie (CA) hebt u een basis-CA-certificaat nodig dat is geregistreerd in IoT Hub dat u gebruikt om certificaten voor uw downstreamapparaat te ondertekenen. Elk apparaat dat gebruik maakt van een certificaat dat is problemen met het basis-CA-certificaat of een van de tussenliggende certificaten, mag worden geverifieerd.
Deze sectie is gebaseerd op de reeks zelfstudies IoT Hub X.509-certificaat. Zie Understanding Public Key Cryptography and X.509 Public Key Infrastructure (Openbare-sleutelcryptografie en X.509 Public Key Infrastructure) voor de introductie van deze reeks.
Maak met behulp van uw CA-certificaat twee apparaatcertificaten (primair en secundair) voor het downstreamapparaat.
Als u geen certificeringsinstantie hebt om X.509-certificaten te maken, kunt u de democertificaatscripts van IoT Edge gebruiken om downstreamapparaatcertificaten te maken. Volg de stappen voor het maken van ca-ondertekende certificaten. Gebruik hetzelfde basis-CA-certificaat dat de certificaten voor uw gatewayapparaat heeft gegenereerd.
Volg de instructies in de sectie Bewijs van eigendom demonstreren van X.509-beveiliging instellen in uw Azure IoT-hub. In deze sectie voert u de volgende stappen uit:
Upload basis-CA-certificaat. Als u de democertificaten gebruikt, is de basis-CA <path> /certs/azure-iot-test-only.root.ca.cert.pem.
Controleer of u de eigenaar bent van dat basis-CA-certificaat.
Volg de instructies in de sectie Een apparaat maken in uw IoT Hub van X.509-beveiliging instellen in uw Azure IoT-hub. In deze sectie voert u de volgende stappen uit:
Voeg een nieuw apparaat toe. Geef een kleine naam op voor de apparaat-id en kies het verificatietype X.509 CA ondertekend.
Stel een bovenliggend apparaat in. Selecteer Een bovenliggend apparaat instellen en kies IoT Edge gatewayapparaat dat de verbinding met de IoT Hub.
Maak een certificaatketen voor uw downstreamapparaat. Gebruik hetzelfde basis-CA-certificaat dat u hebt geüpload naar IoT Hub om deze keten te maken. Gebruik dezelfde apparaat-id in kleine letters die u in de portal aan uw apparaat-id hebt gegeven.
Kopieer het apparaatcertificaat en de sleutels naar een locatie op het downstreamapparaat. Verplaats ook een kopie van het gedeelde basis-CA-certificaat dat zowel het gatewayapparaatcertificaat als de downstreamapparaatcertificaten heeft gegenereerd.
U verwijst naar deze bestanden in alle toepassingen op het downstreamapparaat die verbinding maken met IoT Hub. U kunt een service zoals een Azure Key Vault of een functie zoals secure copy protocol gebruiken om de certificaatbestanden te verplaatsen.
Bekijk, afhankelijk van de taal van uw voorkeur, voorbeelden van hoe naar X.509-certificaten kan worden verwezen in IoT-toepassingen:
U kunt ook de IoT-extensie voor Azure CLI gebruiken om dezelfde bewerking voor het maken van apparaten te voltooien. In het volgende voorbeeld wordt de opdracht az iot hub device-identity gebruikt om een nieuw IoT-apparaat te maken met X.509 CA-ondertekende verificatie en wordt een bovenliggend apparaat toegewezen:
az iot hub device-identity create -n {iothub name} -d {device ID} --pd {gateway device ID} --am x509_ca
Vervolgens kunt u de gegevens ophalen en connection string zodat uw apparaat weet dat er verbinding moet worden via de gateway.
Gegevens ophalen en connection string
Nadat u een IoT-apparaat-id in de portal hebt aanmaken, kunt u de primaire of secundaire sleutels ophalen. Een van deze sleutels moet worden opgenomen in de connection string toepassingen gebruiken om te communiceren met IoT Hub. Voor symmetrische sleutelverificatie biedt IoT Hub voor uw gemak de volledige connection string in de apparaatdetails. U moet extra informatie over het gatewayapparaat toevoegen aan de connection string.
Verbindingsreeksen voor downstreamapparaten hebben de volgende onderdelen nodig:
- De IoT-hub waar het apparaat verbinding mee maakt:
Hostname={iothub name}.azure-devices.net - De apparaat-id die is geregistreerd bij de hub:
DeviceID={device ID} - De verificatiemethode, ongeacht of het gaat om symmetrische sleutels of X.509-certificaten
- Als u verificatie met een symmetrische sleutel gebruikt, geeft u de primaire of secundaire sleutel op:
SharedAccessKey={key} - Als u X.509-certificaatverificatie gebruikt, geeft u een vlag op:
x509=true
- Als u verificatie met een symmetrische sleutel gebruikt, geeft u de primaire of secundaire sleutel op:
- Het gatewayapparaat dat het apparaat gebruikt om verbinding mee te maken. Geef de hostnaamwaarde op uit IoT Edge configuratiebestand van het gatewayapparaat:
GatewayHostName={gateway hostname}
Bij elkaar ziet een volledige connection string er als volgende uit:
HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz;GatewayHostName=myGatewayDevice
Of:
HostName=myiothub.azure-devices.net;DeviceId=myDownstreamDevice;x509=true;GatewayHostName=myGatewayDevice
Dankzij de bovenliggende/onderliggende relatie kunt u de verbindingsrelatie connection string door de gateway rechtstreeks aan te roepen als de verbindingshost. Bijvoorbeeld:
HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz
U gebruikt deze gewijzigde connection string in het volgende artikel van de transparante gatewayreeks.
Volgende stappen
Op dit moment hebt u een IoT Edge dat is geregistreerd bij uw IoT-hub en is geconfigureerd als een transparante gateway. U hebt ook een downstreamapparaat dat is geregistreerd bij uw IoT-hub en verwijst naar het gatewayapparaat.
Vervolgens moet u uw downstreamapparaat configureren om het gatewayapparaat te vertrouwen en er veilig verbinding mee te maken. Ga verder met het volgende artikel in de transparante gatewayreeks, Verbinding maken downstreamapparaat naar een Azure IoT Edge gateway.