Een downstreamapparaat verbinden met een Azure IoT Edge-gateway

Van toepassing op:IoT Edge 1.5-vinkje IoT Edge 1.5 Vinkje voor IoT Edge 1.4 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.

Hier vindt u instructies voor het tot stand brengen van een vertrouwde verbinding tussen downstreamapparaten en transparante IoT Edge-gateways. In een transparant gatewayscenario kunnen een of meer apparaten hun berichten doorgeven via één gatewayapparaat dat de verbinding met IoT Hub onderhoudt. Hier verwijzen de termen gateway en IoT Edge-gateway naar een IoT Edge-apparaat dat is geconfigureerd als een transparante gateway.

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 derde stap uitgelegd.

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

  2. 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. Zie Een downstreamapparaat verifiëren bij Azure IoT Hub voor deze stappen.

  3. Verbinding maken het downstreamapparaat naar het gatewayapparaat en begin berichten te verzenden.

Dit artikel helpt u inzicht te hebben in de onderdelen van de downstreamapparaatverbinding, zoals:

  • Basisbeginselen van transportlaagbeveiliging (TLS) en certificaten.
  • TLS-bibliotheken die werken in verschillende besturingssystemen die certificaten op een andere manier verwerken.

Vervolgens doorloopt u Azure IoT-voorbeelden in uw voorkeurstaal om uw apparaat te laten berichten verzenden naar de gateway.

Vereisten

Verkrijg het volgende om uw downstreamapparaat voor te bereiden:

Notitie

IoT-apparaten die zijn geregistreerd bij IoT Hub kunnen moduledubbels gebruiken om verschillende processen, hardware of functies op één apparaat te isoleren. IoT Edge-gateways ondersteunen downstreammoduleverbindingen met behulp van symmetrische sleutelverificatie, maar niet X.509-certificaatverificatie.

Basisbeginselen van TLS en certificaten begrijpen

De uitdaging van het veilig verbinden van downstreamapparaten met IoT Edge is net als elke andere beveiligde client-/servercommunicatie die via internet plaatsvindt. Een client en een server communiceren veilig via internet via TLS (Transport Layer Security). TLS wordt gebouwd met behulp van standaard PKI-constructies (Public Key Infrastructure) die certificaten worden genoemd. TLS is een redelijk betrokken specificatie en behandelt een breed scala aan onderwerpen met betrekking tot het beveiligen van twee eindpunten. In deze sectie vindt u een overzicht van de concepten die relevant zijn voor het veilig verbinden van apparaten met een IoT Edge-gateway.

Wanneer een client verbinding maakt met een server, geeft de server een keten van certificaten weer, de zogenaamde servercertificaatketen. Een certificaatketen bestaat doorgaans uit een ca-certificaat (root certificate authority), een of meer tussenliggende CA-certificaten en ten slotte het certificaat van de server zelf. Een client brengt een vertrouwensrelatie tot stand met een server door de volledige certificaatketen van de server cryptografisch te verifiëren. Deze clientvalidatie van de servercertificaatketen wordt serverketenvalidatie genoemd. De client daagt de server uit om het bezit te bewijzen van de persoonlijke sleutel die is gekoppeld aan het servercertificaat in een proces dat bewijs van bezit wordt genoemd. De combinatie van serverketenvalidatie en bewijs van bezit wordt serververificatie genoemd. Om een servercertificaatketen te valideren, heeft een client een kopie nodig van het basis-CA-certificaat dat is gebruikt om het certificaat van de server te maken (of uit te geven). Normaal gesproken wordt een browser vooraf geconfigureerd met veelgebruikte CA-certificaten, zodat de client een naadloos proces heeft.

Wanneer een apparaat verbinding maakt met Azure IoT Hub, is het apparaat de client en is de IoT Hub-cloudservice de server. De IoT Hub-cloudservice wordt ondersteund door een basis-CA-certificaat met de naam Baltimore CyberTrust Root, dat openbaar beschikbaar is en veel wordt gebruikt. Omdat het Ca-certificaat van IoT Hub al op de meeste apparaten is geïnstalleerd, gebruiken veel TLS-implementaties (OpenSSL, Schannel, LibreSSL) dit automatisch tijdens de validatie van servercertificaten. Een apparaat dat verbinding maakt met IoT Hub kan echter problemen hebben met het maken van verbinding met een IoT Edge-gateway.

Wanneer een apparaat verbinding maakt met een IoT Edge-gateway, is het downstreamapparaat de client en het gatewayapparaat de server. Met Azure IoT Edge kunt u gatewaycertificaatketens bouwen, maar deze zien er goed uit. U kunt ervoor kiezen om een openbaar CA-certificaat, zoals Baltimore, te gebruiken of een zelfondertekend (of intern) basis-CA-certificaat te gebruiken. Openbare CA-certificaten hebben vaak een kosten verbonden, dus worden meestal gebruikt in productiescenario's. Zelfondertekende CA-certificaten hebben de voorkeur voor ontwikkeling en testen. De democertificaten zijn zelfondertekende basis-CA-certificaten.

Wanneer u een zelfondertekend basis-CA-certificaat gebruikt voor een IoT Edge-gateway, moet het worden geïnstalleerd op of verstrekt aan alle downstreamapparaten die verbinding proberen te maken met de gateway.

Schermopname van de installatie van het gatewaycertificaat.

Zie de gebruiksgegevens van ioT Edge-certificaten voor meer informatie over IoT Edge-certificaten en een aantal gevolgen voor de productie.

Geef het basis-CA-certificaat op

Om de certificaten van het gatewayapparaat te controleren, heeft het downstreamapparaat een eigen kopie van het basis-CA-certificaat nodig. Als u de scripts in de Git-opslagplaats van IoT Edge hebt gebruikt om testcertificaten te maken, wordt het basis-CA-certificaat azure-iot-test-only.root.ca.cert.pem genoemd.

Als u dit nog niet hebt gedaan, verplaatst u dit certificaatbestand naar een map op uw downstreamapparaat. U kunt het bestand verplaatsen door het CA-certificaat te installeren in het certificaatarchief van het besturingssysteem of (voor bepaalde talen) door te verwijzen naar het certificaat in toepassingen met behulp van de Azure IoT SDK's.

U kunt een service zoals Azure Key Vault of een functie zoals secure copy protocol gebruiken om het certificaatbestand te verplaatsen.

Certificaten installeren in het besturingssysteem

Zodra het basis-CA-certificaat zich op het downstreamapparaat bevindt, moet u ervoor zorgen dat de toepassingen die verbinding maken met de gateway toegang hebben tot het certificaat.

Als u het basis-CA-certificaat installeert in het certificaatarchief van het besturingssysteem, kunnen de meeste toepassingen het basis-CA-certificaat gebruiken. Er zijn enkele uitzonderingen, zoals NodeJS-toepassingen die niet gebruikmaken van het certificaatarchief van het besturingssysteem, maar eerder het interne certificaatarchief van de Node Runtime gebruiken. Als u het certificaat niet op besturingssysteemniveau kunt installeren, gaat u verder met Certificaten gebruiken met Azure IoT SDK's.

Installeer het basis-CA-certificaat op Ubuntu of Windows.

De volgende opdrachten zijn een voorbeeld van het installeren van een CA-certificaat op een Ubuntu-host. In dit voorbeeld wordt ervan uitgegaan dat u het certificaat azure-iot-test-only.root.ca.cert.pem gebruikt uit de artikelen met vereisten en dat u het certificaat hebt gekopieerd naar een locatie op het downstreamapparaat.

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

U ziet een bericht met de tekst 'Certificaten bijwerken in /etc/ssl/certs... 1 toegevoegd, 0 verwijderd; klaar."

Certificaten gebruiken met Azure IoT SDK's

Azure IoT SDK's maken verbinding met een IoT Edge-apparaat met behulp van eenvoudige voorbeeldtoepassingen. Het doel van de voorbeelden is om de apparaatclient te verbinden en telemetrieberichten naar de gateway te verzenden, vervolgens de verbinding te sluiten en af te sluiten.

Voordat u de voorbeelden op toepassingsniveau gebruikt, moet u de volgende items verkrijgen:

  • Uw IoT Hub-verbindingsreeks, van uw downstreamapparaat, gewijzigd zodat deze verwijst naar het gatewayapparaat.

  • Certificaten die nodig zijn om uw downstreamapparaat te verifiëren bij IoT Hub. Zie Een downstreamapparaat verifiëren bij Azure IoT Hub voor meer informatie.

  • Het volledige pad naar het basis-CA-certificaat dat u hebt gekopieerd en ergens op uw downstreamapparaat hebt opgeslagen.

    Voorbeeld: <file path>/azure-iot-test-only.root.ca.cert.pem.

Nu bent u klaar om certificaten te gebruiken met een voorbeeld in de taal van uw keuze:

Deze sectie bevat een voorbeeldtoepassing om een Azure IoT NodeJS-apparaatclient te verbinden met een IoT Edge-gateway. Voor NodeJS-toepassingen moet u het basis-CA-certificaat installeren op toepassingsniveau, zoals hier wordt weergegeven. NodeJS-toepassingen maken geen gebruik van het certificaatarchief van het systeem.

  1. Haal het voorbeeld voor edge_downstream_device.js op uit de Azure IoT Device SDK voor Node.js opslagplaats met voorbeelden.
  2. Zorg ervoor dat u aan alle vereisten voldoet om het voorbeeld uit te voeren door het readme.md bestand te controleren.
  3. Werk in het edge_downstream_device.js-bestand de variabelen connectionString en edge_ca_cert_path bij.
  4. Raadpleeg de SDK-documentatie voor instructies over het uitvoeren van het voorbeeld op uw apparaat.

Om inzicht te hebben in het voorbeeld dat u uitvoert, is het volgende codefragment hoe de client-SDK het certificaatbestand leest en gebruikt om een beveiligde TLS-verbinding tot stand te brengen:

// 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'),
};

De gatewayverbinding testen

Gebruik deze voorbeeldopdracht op het downstreamapparaat om te testen of het verbinding kan maken met het gatewayapparaat:

openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts

Met deze opdracht wordt de verbinding via MQTTS (poort 8883) getest. Als u een ander protocol gebruikt, past u de opdracht aan indien nodig voor AMQPS (5671) of HTTPS (443).

De uitvoer van deze opdracht kan lang zijn, inclusief informatie over alle certificaten in de keten. Als de verbinding is geslaagd, ziet u een lijn zoals Verification: OK of Verify return code: 0 (ok).

Schermopname van het verifiëren van een gatewayverbinding.

Problemen met de gatewayverbinding oplossen

Als uw downstreamapparaatverbinding met het gatewayapparaat instabiel is, kunt u deze vragen voor een oplossing overwegen.

  • Is de hostnaam van de gateway in de verbindingsreeks hetzelfde als de hostnaamwaarde in het configuratiebestand van IoT Edge op het gatewayapparaat?
  • Kan de hostnaam van de gateway worden omgezet in een IP-adres? U kunt onregelmatige verbindingen oplossen met behulp van DNS of door een vermelding van een hostbestand toe te voegen op het downstreamapparaat.
  • Zijn communicatiepoorten geopend in uw firewall? Communicatie op basis van het gebruikte protocol (MQTTS:8883/AMQPS:5671/HTTPS:433) moet mogelijk zijn tussen downstreamapparaten en de transparante IoT Edge.

Volgende stappen

Meer informatie over hoe IoT Edge offlinemogelijkheden kan uitbreiden naar downstreamapparaten.