Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
              Gäller för: IoT Edge 1.5
 IoT Edge 1.5
Viktigt!
IoT Edge 1.5 LTS är den version som stöds. IoT Edge 1.4 LTS upphör från och med den 12 november 2024. Om du har en tidigare version läser du Uppdatera IoT Edge.
Den här artikeln innehåller instruktioner för hur du konfigurerar en betrodd anslutning mellan underordnade enheter och transparenta IoT Edge-gatewayer. I ett transparent gatewayscenario skickar en eller flera enheter meddelanden via en enda gatewayenhet som underhåller anslutningen till IoT Hub. I den här artikeln innebär termerna gateway och IoT Edge-gateway en IoT Edge-enhet som konfigurerats som en transparent gateway.
Kommentar
En nedströmsenhet skickar data direkt till Internet eller till gatewayenheter (IoT Edge-aktiverade eller inte). En underordnad enhet kan vara en underordnad enhet eller en gatewayenhet i en kapslad topologi.
Du konfigurerar en transparent gatewayanslutning i tre steg. Den här artikeln förklarar det tredje steget.
- Konfigurera gatewayenheten som en server så att underordnade enheter kan ansluta till den på ett säkert sätt. Konfigurera gatewayen för att ta emot meddelanden från underordnade enheter och dirigera dem till rätt mål. De här stegen finns i Konfigurera en IoT Edge-enhet så att den fungerar som en transparent gateway. 
- Skapa en enhetsidentitet för den underordnade enheten så att den kan autentisera med IoT Hub. Konfigurera den underordnade enheten så att den skickar meddelanden via gatewayenheten. De här stegen finns i Autentisera en underordnad enhet till Azure IoT Hub. 
- Anslut den underordnade enheten till gatewayenheten och börja skicka meddelanden. 
I den här artikeln beskrivs underordnade enhetsanslutningskomponenter, till exempel:
- Grunderna för transportlagersäkerhet (TLS) och certifikat
- TLS-bibliotek som fungerar i olika operativsystem och hanterar certifikat på olika sätt
Du går igenom Azure IoT-exempel på önskat språk för att få enheten att skicka meddelanden till gatewayen.
Förutsättningar
Hämta följande för att förbereda din underordnade enhet:
- En underordnad enhet. - Den här enheten kan vara valfritt program eller plattform med en identitet som skapats i Azure IoT Hub. I många fall använder program Azure IoT-enhetens SDK. En nedströmsenhet kan också vara ett program som körs på IoT Edge-gatewayenheten. - Senare visar den här artikeln hur du ansluter en IoT-enhet som en nedströmsenhet. Om du vill använda en IoT Edge-enhet som en nedströmsenhet kan du läsa Ansluta Azure IoT Edge-enheter tillsammans för att skapa en hierarki (kapslad kant). 
- En rotcertifikatutfärdarcertifikatfil. - Den här filen används för att generera Edge CA-certifikatet i Konfigurera en IoT Edge-enhet för att fungera som en transparent gateway och är tillgänglig på din underordnade enhet. - Din underordnade enhet använder det här certifikatet för att kontrollera gatewayenhetens identitet. Det här betrodda certifikatet säkrar TLS-anslutningar (Transport Layer Security) till gateway-enheten. För användningsinformation, se Tillhandahålla rotintyg för CA. 
- En ändrad anslutningssträng som pekar på gatewayenheten. - Information om hur du ändrar anslutningssträngen finns i Autentisera en nedströmsenhet till Azure IoT Hub. 
Kommentar
IoT-enheter som registrerats med IoT Hub kan använda modultvillingar för att isolera olika processer, maskinvara eller funktioner på en enda enhet. IoT Edge-gatewayer stöder underordnade modulanslutningar med symmetrisk nyckelautentisering, men inte X.509-certifikatautentisering.
Förstå grunderna för TLS och certifikat
Säker anslutning av underordnade enheter till IoT Edge liknar annan säker klient- och serverkommunikation via Internet. En klient och en server kommunicerar säkert via Internet med hjälp av TLS (Transport Layer Security). TLS använder standardkonstruktioner i form av certifikat inom PKI (Public Key Infrastructure). TLS är en detaljerad specifikation som omfattar många ämnen som rör skydd av två slutpunkter. Det här avsnittet sammanfattar de begrepp som du behöver för att på ett säkert sätt ansluta enheter till en IoT Edge-gateway.
När en klient ansluter till en server visar servern en kedja med certifikat som kallas för servercertifikatkedjan. En certifikatkedja har vanligtvis ett certifikat för rotcertifikatutfärdare (CA), ett eller flera mellanliggande CA-certifikat och serverns certifikat. Klienten litar på servern genom att kryptografiskt verifiera hela servercertifikatkedjan. Den här processen kallas serverkedjeverifiering. Klienten utmanar också servern att bevisa att den har den privata nyckeln för servercertifikatet, som kallas innehavsbevis. Tillsammans kallas serverkedjeverifiering och bevis på innehav serverautentisering. För att verifiera en servercertifikatkedja behöver klienten en kopia av det rot-CA-certifikat som används för att utfärda serverns certifikat. När du ansluter till webbplatser är webbläsare förkonfigurerade med vanliga CA-certifikat, så klientprocessen är sömlös.
När en enhet ansluter till Azure IoT Hub är enheten klienten och IoT Hub-molntjänsten är servern. IoT Hub-molntjänsten använder ett rotcertifikat som heter Baltimore CyberTrust Root, vilket är offentligt tillgängligt och används i stor utsträckning. Eftersom CA-certifikatet för IoT Hub redan är installerat på de flesta enheter använder många TLS-implementeringar (OpenSSL, Schannel, LibreSSL) automatiskt det under verifieringen av servercertifikatet. En enhet som ansluter till IoT Hub kan dock ha problem vid anslutning till en IoT Edge-gateway.
När en enhet ansluter till en IoT Edge-gateway är den underordnade enheten klienten och gatewayenheten är servern. Med Azure IoT Edge kan du skapa gatewaycertifikatkedjor efter behov. Du kan använda ett offentligt CA-certifikat, till exempel från Baltimore, eller ett självsignerat (eller internt) rot-CA-certifikat. Offentliga CA-certifikat har ofta en kostnad, så de används vanligtvis i produktionsscenarier. Självsignerade CA-certifikat rekommenderas för utveckling och testning. Democertifikaten är självsignerade rotcertifikatutfärdarcertifikat.
När du använder ett självsignerat CA-rotcertifikat för en IoT Edge-gateway måste du installera det eller tillhandahålla det till alla nedströmsenheter som ansluter till gateway.
Mer information om IoT Edge-certifikat och produktionskonsekvenser finns i information om IoT Edge-certifikatanvändning.
Ange rotcertifikatutfärdarcertifikatet
För att verifiera gatewayenhetens certifikat behöver den underordnade enheten en egen kopia av rotcertifikatutfärdarcertifikatet. Om du använder skripten i IoT Edge Git-arkivet för att skapa testcertifikat kallas rotcertifikatet azure-iot-test-only.root.ca.cert.pem.
Om du inte redan har gjort det flyttar du certifikatfilen till valfri katalog på din underordnade enhet. Flytta filen genom att installera CA-certifikatet i operativsystemets certifikatarkiv eller genom att referera till certifikatet i program som använder Azure IoT SDK:er.
Använd en tjänst som Azure Key Vault eller ett verktyg som Secure copy protocol för att flytta certifikatfilen.
Installera certifikat i operativsystemet
När du har kopierat rotcertifikatet för certifikatutfärdaren till den underordnade enheten, kontrollera att program som ansluter till gatewayen kan komma åt certifikatet.
Installera root CA-certifikatet i operativsystemets certifikatarkiv så att de flesta applikationer kan använda det. Vissa program, till exempel Node.js, använder inte OS-certifikatarkivet och använder i stället Node-körningens interna certifikatarkiv. Om du inte kan installera certifikatet på operativsystemnivå går du till avsnittet använda certifikat med Azure IoT SDK:er .
Installera rot-CA-certifikatet på Ubuntu eller Windows.
Använd följande kommandon för att installera ett CA-certifikat på en Ubuntu-värd. I det här exemplet används certifikatet azure-iot-test-only.root.ca.cert.pem från förutsättningarnas artiklar och förutsätter att du har kopierat certifikatet till en plats på den underordnade enheten.
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
När du är klar visas ett Uppdatera certifikat i /etc/ssl/certs... 1 tillagd, 0 borttagen; meddelandet har slutförts .
Använda certifikat med Azure IoT SDK:er
Azure IoT SDK:er ansluter till en IoT Edge-enhet med enkla exempelprogram. Exempelmålet är att ansluta enhetsklienten och skicka telemetrimeddelanden till gatewayen och sedan stänga anslutningen och avsluta.
Hämta följande objekt innan du använder exemplen på programnivå:
- Din IoT Hub-anslutningssträng, från din nedströmsenhet, ändrad till att peka på gatewayenheten. 
- Alla certifikat som krävs för att autentisera din underordnade enhet till IoT Hub. Mer information finns i Autentisera en nedströmsenhet till Azure IoT Hub. 
- Den fullständiga sökvägen till rotcertifikatutfärdarcertifikatet som du kopierade och sparade någonstans på din underordnade enhet. - Exempel: - <file path>/azure-iot-test-only.root.ca.cert.pem.
Nu är du redo att använda certifikat med ett exempel på valfritt språk:
Det här avsnittet innehåller ett exempelprogram för att ansluta en Azure IoT-Node.js enhetsklient till en IoT Edge-gateway. För Node.js program måste du installera rotcertifikatutfärdarcertifikatet på programnivå som du ser här. Node.js program använder inte systemets certifikatarkiv.
- Hämta exemplet för edge_downstream_device.js från Azure IoT-enhetens SDK för Node.js exempel på lagringsplatsen.
- Kontrollera att du har alla förutsättningar för att köra exemplet genom att granska readme.md-filen .
- I filen edge_downstream_device.js uppdaterar du variablerna connectionString och edge_ca_cert_path .
- I SDK-dokumentationen finns instruktioner om hur du kör exemplet på enheten.
För att förstå exemplet som du kör är följande kodfragment hur klient-SDK läser certifikatfilen och använder den för att upprätta en säker TLS-anslutning:
// 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'),
};
Testa gatewayanslutningen
Kör det här exempelkommandot på den underordnade enheten för att testa att den kan ansluta till gatewayenheten:
openssl s_client -connect mygateway.contoso.com:8883 -CAfile <CERTDIR>/certs/azure-iot-test-only.root.ca.cert.pem -showcerts
Det här kommandot kontrollerar anslutningen via MQTTS (port 8883). Om du använder ett annat protokoll justerar du kommandot för AMQPS (5671) eller HTTPS (443).
Utdata från det här kommandot kan vara långa och innehåller information om alla certifikat i kedjan. Om anslutningen lyckas visas en rad som Verification: OK eller Verify return code: 0 (ok).
              
               
              
              
            
Felsöka gatewayanslutningen
Om din underordnade enhetsanslutning till dess gatewayenhet är instabil kan du överväga de här frågorna för att åtgärda problemet.
- Är gatewayens värdnamn i anslutningssträng samma som värdnamnsvärdet i IoT Edge-konfigurationsfilen på gatewayenheten?
- Kan gatewayens värdnamn matchas mot en IP-adress? Åtgärda tillfälliga anslutningar med hjälp av DNS eller lägga till en värdfilpost på den underordnade enheten.
- Är kommunikationsportarna öppna i brandväggen? Kontrollera att de protokollportar som krävs (MQTTS:8883, AMQPS:5671, HTTPS:433) är öppna mellan den underordnade enheten och den transparenta IoT Edge-enheten.
Nästa steg
Lär dig hur IoT Edge utökar offlinefunktioner till underordnade enheter.
