Een downstream-apparaat verifiëren voor Azure IoT Hub
Van toepassing op: IoT Edge 1.5 IoT Edge 1.4
Belangrijk
IoT Edge 1.5 LTS en IoT Edge 1.4 LTS worden ondersteund releases. IoT Edge 1.4 LTS eindigt op 12 november 2024. Raadpleeg IoT Edge bijwerken als u een eerdere versie hebt.
In een transparant gatewayscenario hebben downstreamapparaten (ook wel onderliggende apparaten genoemd) identiteiten nodig in IoT Hub, net als elk ander apparaat. In dit artikel worden de opties beschreven voor het verifiëren van een downstreamapparaat naar IoT Hub en ziet u vervolgens hoe u de gatewayverbinding declareert.
Notitie
Een downstreamapparaat verzendt gegevens rechtstreeks naar internet of naar gatewayapparaten (ioT Edge ingeschakeld of niet). Een onderliggend apparaat kan een downstreamapparaat of een gatewayapparaat in een geneste topologie zijn.
Er zijn drie algemene stappen voor het instellen van een geslaagde transparante gatewayverbinding. In dit artikel wordt de tweede stap behandeld:
- Configureer het gatewayapparaat als een server, zodat downstreamapparaten er veilig verbinding mee kunnen maken. Stel de gateway in om berichten van downstreamapparaten te ontvangen en door te sturen naar de juiste bestemming. Zie Een IoT Edge-apparaat configureren als een transparante gateway voor deze stappen.
- Maak een apparaat-id voor het downstreamapparaat, zodat het kan worden geverifieerd met IoT Hub. Configureer het downstreamapparaat om berichten via het gatewayapparaat te verzenden.
- Verbind het downstreamapparaat met het gatewayapparaat en begin berichten te verzenden. Zie Een downstreamapparaat verbinden met een Azure IoT Edge-gateway voor deze stappen.
Downstreamapparaten kunnen worden geverifieerd met IoT Hub met behulp van een van de drie methoden: symmetrische sleutels (ook wel gedeelde toegangssleutels genoemd), zelfondertekende X.509-certificaten of X.509-certificeringsinstantie (CA) ondertekende certificaten. De verificatiestappen zijn vergelijkbaar met de stappen die worden gebruikt voor het instellen van een niet-IoT Edge-apparaat met IoT Hub, met kleine verschillen om de gatewayrelatie te declareren.
Automatisch inrichten van downstreamapparaten met de Azure IoT Hub Device Provisioning Service (DPS) wordt niet ondersteund.
Vereisten
Voer de stappen in Een IoT Edge-apparaat configureren uit om te fungeren als een transparante gateway.
Als u X.509-verificatie gebruikt, genereert u certificaten voor uw downstreamapparaat. Hetzelfde basis-CA-certificaat en het certificaat dat script genereert dat u hebt gebruikt voor het transparante gatewayartikel dat u opnieuw kunt gebruiken.
Dit artikel verwijst naar de hostnaam van de gateway op verschillende punten. De hostnaam van de gateway wordt gedeclareerd in de hostnaamparameter van het configuratiebestand op het IoT Edge-gatewayapparaat. Dit wordt genoemd in de verbindingsreeks van het downstreamapparaat. De hostnaam van de gateway moet kunnen worden omgezet in een IP-adres, hetzij met behulp van DNS of een vermelding van een hostbestand op het downstreamapparaat.
Apparaat registreren bij IoT Hub
Kies hoe u uw downstreamapparaat wilt verifiëren met IoT Hub:
Verificatie met symmetrische sleutels: IoT Hub maakt een sleutel die u op het downstreamapparaat plaatst. 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 ontwikkel- of testscenario.
X.509 zelfondertekende verificatie: ook wel vingerafdrukverificatie genoemd, omdat u de vingerafdruk deelt van het X.509-certificaat van het apparaat met IoT Hub.
Certificaatverificatie wordt aanbevolen voor apparaten in productiescenario's.
X.509 CA-ondertekende verificatie: upload het basis-CA-certificaat naar IoT Hub. Wanneer apparaten hun X.509-certificaat voor verificatie presenteren, controleert IoT Hub of het behoort tot een vertrouwensketen die is ondertekend door hetzelfde basis-CA-certificaat.
Certificaatverificatie wordt aanbevolen voor apparaten in productiescenario's.
Verificatie met symmetrische sleutel
Verificatie met symmetrische sleutels of verificatie van gedeelde toegangssleutels is de eenvoudigste manier om te verifiëren met IoT Hub. Met symmetrische sleutelverificatie wordt een base64-sleutel gekoppeld aan uw IoT-apparaat-id in IoT Hub. U neemt deze sleutel op 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 Azure Portal, Azure CLI of de IoT-extensie voor Visual Studio Code. Houd er rekening mee dat downstreamapparaten moeten worden geïdentificeerd in IoT Hub als gewone IoT-apparaten, niet als 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 het IoT Edge-gatewayapparaat waarmee dit downstreamapparaat verbinding maakt. U kunt het bovenliggende item altijd later wijzigen.
Notitie
Het bovenliggende apparaat instellen als een optionele stap voor downstreamapparaten die gebruikmaken van symmetrische sleutelverificatie. Vanaf IoT Edge versie 1.1.0 moet elk downstreamapparaat echter worden toegewezen aan een bovenliggend apparaat.
U kunt de IoT Edge-hub configureren 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 te maken met symmetrische sleutelverificatie en een bovenliggend apparaat toe te wijzen:
az iot hub device-identity create -n {iothub name} -d {new device ID} --device-scope {deviceScope of parent device}
Tip
U kunt apparaateigenschappen, inclusief apparaatbereik, weergeven met behulp van az iot hub device-identity list --hub-name {iothub name}
.
Haal vervolgens de verbindingsreeks op en wijzig deze zodat uw apparaat verbinding kan maken via de gateway.
Zelfondertekende X.509-verificatie
Voor zelfondertekende X.509-verificatie, ook wel vingerafdrukverificatie genoemd, moet u certificaten maken om op uw downstreamapparaat te 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 zelfondertekende 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 vinden:
Windows:
openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint
Linux:
openssl x509 -in <path to primary device certificate>.cert.pem -text -fingerprint | sed 's/[:]//g'
Voer deze opdracht twee keer uit, eenmaal voor het primaire certificaat en eenmaal voor het secundaire certificaat. U geeft vingerafdrukken op voor beide certificaten wanneer u een nieuw IoT-apparaat registreert met zelfondertekende 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 Zelfondertekend 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 waarmee dit downstreamapparaat verbinding maakt. U kunt het bovenliggende item altijd later wijzigen.
Kopieer zowel de primaire als de secundaire apparaatcertificaten en de bijbehorende 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 dat verbinding maakt met IoT Hub. U kunt een service zoals Azure Key Vault of een functie zoals secure copy protocol gebruiken om de certificaatbestanden te verplaatsen.
Bekijk voorbeelden van hoe X.509-certificaten kunnen worden verwezen in IoT-toepassingen, afhankelijk van uw voorkeurstaal:
U kunt ook de IoT-extensie voor Azure CLI gebruiken om dezelfde bewerking voor het maken van het apparaat te voltooien. In het volgende voorbeeld wordt de opdracht az iot hub device-identity gebruikt om een nieuw IoT-apparaat met zelfondertekende X.509-verificatie te maken en een bovenliggend apparaat toe te wijzen:
az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_thumbprint --ptp {primary thumbprint} --stp {secondary thumbprint}
Tip
U kunt apparaateigenschappen, inclusief apparaatbereik, weergeven met behulp van az iot hub device-identity list --hub-name {iothub name}
.
Haal vervolgens de verbindingsreeks op en wijzig deze zodat uw apparaat verbinding kan maken via de gateway.
X.509 CA-ondertekende verificatie
Voor verificatie met X.509-certificeringsinstantie (CA) hebt u een basis-CA-certificaat nodig dat is geregistreerd in IoT Hub waarmee u certificaten voor uw downstreamapparaat ondertekent. Elk apparaat dat gebruikmaakt van een certificaat dat is uitgegeven door het basis-CA-certificaat of een van de tussenliggende certificaten, kan worden geverifieerd.
Deze sectie is gebaseerd op de zelfstudiereeks voor IoT Hub X.509-certificaten. Zie Informatie over 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 door ca ondertekende certificaten. Gebruik hetzelfde basis-CA-certificaat dat de certificaten voor uw gatewayapparaat heeft gegenereerd.
Volg de instructies in de sectie Bewijs van bezit van X.509-beveiliging instellen in uw Azure IoT-hub. In deze sectie voert u de volgende stappen uit:
Upload een 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 eigenaar bent van dat basis-CA-certificaat.
Volg de instructies in de sectie Een apparaat maken in de sectie 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 het IoT Edge-gatewayapparaat dat de verbinding met IoT Hub biedt.
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 dat verbinding maakt met IoT Hub. U kunt een service zoals Azure Key Vault of een functie zoals secure copy protocol gebruiken om de certificaatbestanden te verplaatsen.
Bekijk voorbeelden van hoe X.509-certificaten kunnen worden verwezen in IoT-toepassingen, afhankelijk van uw voorkeurstaal:
U kunt ook de IoT-extensie voor Azure CLI gebruiken om dezelfde bewerking voor het maken van het apparaat 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 een bovenliggend apparaat toe te wijzen:
az iot hub device-identity create -n {iothub name} -d {device ID} --device-scope {deviceScope of gateway device} --am x509_ca
Tip
U kunt apparaateigenschappen, inclusief apparaatbereik, weergeven met behulp van az iot hub device-identity list --hub-name {iothub name}
.
Haal vervolgens de verbindingsreeks op en wijzig deze zodat uw apparaat verbinding kan maken via de gateway.
Verbindingsreeks ophalen en wijzigen
Nadat u een IoT-apparaat-id in de portal hebt gemaakt, kunt u de primaire of secundaire sleutels ophalen. Een van deze sleutels moet worden opgenomen in de verbindingsreeks die toepassingen gebruiken om te communiceren met IoT Hub. Voor symmetrische sleutelverificatie biedt IoT Hub de volledig gevormde verbindingsreeks in de apparaatdetails voor uw gemak. U moet extra informatie over het gatewayapparaat toevoegen aan de verbindingsreeks.
Verbindingsreeksen voor downstreamapparaten hebben de volgende onderdelen nodig:
- De IoT-hub waarmee het apparaat verbinding maakt:
Hostname={iothub name}.azure-devices.net
- De apparaat-id die is geregistreerd bij de hub:
DeviceID={device ID}
- De verificatiemethode, zowel symmetrische sleutel als X.509-certificaten
- Als u symmetrische sleutelverificatie 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 symmetrische sleutelverificatie gebruikt, geeft u de primaire of secundaire sleutel op:
- Het gatewayapparaat waarmee het apparaat verbinding maakt. Geef de hostnaamwaarde op uit het configuratiebestand van het IoT Edge-gatewayapparaat:
GatewayHostName={gateway hostname}
Samen ziet een volledige verbindingsreeks er als volgt 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 verbindingsreeks vereenvoudigen door de gateway rechtstreeks aan te roepen als de verbindingshost. Voorbeeld:
HostName=myGatewayDevice;DeviceId=myDownstreamDevice;SharedAccessKey=xxxyyyzzz
U gebruikt deze gewijzigde verbindingsreeks in het volgende artikel van de transparante gatewayreeks.
Volgende stappen
Op dit moment hebt u een IoT Edge-apparaat geregistreerd bij uw IoT-hub en geconfigureerd als een transparante gateway. U hebt ook een downstreamapparaat 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 reeks transparante gateways. Verbind een downstreamapparaat met een Azure IoT Edge-gateway.