Łączenie urządzenia podrzędnego z bramą usługi Azure IoT EdgeConnect a downstream device to an Azure IoT Edge gateway

Dotyczy:  ikona tak IoT Edge 1,1  yes IoT Edge 1,2Applies to: yes icon IoT Edge 1.1 yes icon IoT Edge 1.2

Ten artykuł zawiera instrukcje dotyczące nawiązywania zaufanego połączenia między urządzeniami nadrzędnymi i IoT Edge przezroczystymi bramami.This article provides instructions for establishing a trusted connection between downstream devices and IoT Edge transparent gateways. W przezroczystym scenariuszu bramy jedno lub więcej urządzeń może przekazywać komunikaty za pośrednictwem jednego urządzenia bramy, które utrzymuje połączenie z IoT Hub.In a transparent gateway scenario, one or more devices can pass their messages through a single gateway device that maintains the connection to IoT Hub.

Aby pomyślnie skonfigurować przezroczyste połączenie bramy, należy wykonać trzy ogólne kroki.There are three general steps to set up a successful transparent gateway connection. Ten artykuł obejmuje trzeci krok:This article covers the third step:

  1. Skonfiguruj urządzenie bramy jako serwer, aby urządzenia podrzędne łączyły się z nim w bezpieczny sposób.Configure the gateway device as a server so that downstream devices can connect to it securely. Skonfiguruj bramę do odbierania komunikatów z urządzeń nadrzędnych i przekieruj je do odpowiedniego miejsca docelowego.Set up the gateway to receive messages from downstream devices and route them to the proper destination. Aby uzyskać te instrukcje, zobacz Configure an IoT Edge device to act as a transparent gateway (Konfigurowanie urządzenia wirtualnego do działania jako przezroczysta brama).For those steps, see Configure an IoT Edge device to act as a transparent gateway.
  2. Utwórz tożsamość urządzenia dla urządzenia podrzędnego, aby było możliwe uwierzytelnianie za pomocą IoT Hub.Create a device identity for the downstream device so that it can authenticate with IoT Hub. Skonfiguruj urządzenie podrzędne do wysyłania komunikatów za pośrednictwem urządzenia bramy.Configure the downstream device to send messages through the gateway device. Aby uzyskać te instrukcje, zobacz Uwierzytelnianie urządzenia podrzędnego w Azure IoT Hub.For those steps, see Authenticate a downstream device to Azure IoT Hub.
  3. Połącz urządzenie podrzędne z urządzeniem bramy i rozpocznij wysyłanie komunikatów.Connect the downstream device to the gateway device and start sending messages.

W tym artykule omówiono podstawowe pojęcia dotyczące połączeń urządzeń dalszych oraz omówiono sposób konfigurowania urządzeń nadrzędnych przez:This article discusses basic concepts for downstream device connections and guides you in setting up your downstream devices by:

  • Objaśnienie podstawowych informacji o zabezpieczeniach warstwy transportu (TLS) i certyfikatach.Explaining transport layer security (TLS) and certificate fundamentals.
  • Wyjaśnienie, jak biblioteki TLS działają w różnych systemach operacyjnych i jak każdy system operacyjny zajmuje się certyfikatami.Explaining how TLS libraries work across different operating systems and how each operating system deals with certificates.
  • Chodzenie po przykładach usługi Azure IoT w kilku językach, aby ułatwić Ci pracę.Walking through Azure IoT samples in several languages to help get you started.

W tym artykule terminy brama i brama IoT Edge odnoszą się do urządzenia IoT Edge skonfigurowanego jako przezroczysta brama.In this article, the terms gateway and IoT Edge gateway refer to an IoT Edge device configured as a transparent gateway.

Wymagania wstępnePrerequisites

  • Plik certyfikatu głównego urzędu certyfikacji, który został użyty do wygenerowania certyfikatu urzędu certyfikacji urządzenia w teście Configure an IoT Edge device to act as a transparent gateway available on your downstream device (Konfigurowanie urządzenia IoT Edge do działania jako przezroczysta brama dostępna na urządzeniu podrzędnego.Have the root CA certificate file that was used to generate the device CA certificate in Configure an IoT Edge device to act as a transparent gateway available on your downstream device. Urządzenie podrzędne używa tego certyfikatu do weryfikowania tożsamości urządzenia bramy.Your downstream device uses this certificate to validate the identity of the gateway device. Jeśli używasz certyfikatów demonstracyjnych, certyfikat głównego urzędu certyfikacji nosi nazwę azure-iot-test-only.root.ca.cert.pem.If you used the demo certificates, the root CA certificate is called azure-iot-test-only.root.ca.cert.pem.
  • Muszą mieć zmodyfikowane parametrów połączenia, które wskazuje na urządzenie bramy, jak wyjaśniono w uwierzytelnianie urządzeniapodrzędnego w celu Azure IoT Hub .Have the modified connection string that points to the gateway device, as explained in Authenticate a downstream device to Azure IoT Hub.

Przygotowywanie urządzenia podrzędnegoPrepare a downstream device

Urządzenie podrzędne może być dowolną aplikacją lub platformą, która ma tożsamość utworzoną za pomocą Azure IoT Hub w chmurze.A downstream device can be any application or platform that has an identity created with the Azure IoT Hub cloud service. W wielu przypadkach te aplikacje korzystają z zestawu SDK urządzenia usługi Azure IoT.In many cases, these applications use the Azure IoT device SDK. Urządzenie podrzędne może być nawet aplikacją uruchamianą na IoT Edge samym urządzeniu bramy.A downstream device could even be an application running on the IoT Edge gateway device itself. Jednak inne urządzenie IoT Edge nie może być urządzeniem nadrzędnym IoT Edge wirtualnej.However, another IoT Edge device cannot be downstream of an IoT Edge gateway.

Urządzenie podrzędne może być dowolną aplikacją lub platformą, która ma tożsamość utworzoną za pomocą Azure IoT Hub w chmurze.A downstream device can be any application or platform that has an identity created with the Azure IoT Hub cloud service. W wielu przypadkach te aplikacje korzystają z zestawu SDK urządzenia usługi Azure IoT.In many cases, these applications use the Azure IoT device SDK. Urządzenie podrzędne może być nawet aplikacją uruchamianą na IoT Edge samym urządzeniu bramy.A downstream device could even be an application running on the IoT Edge gateway device itself.

Ten artykuł zawiera instrukcje dotyczące łączenia urządzenia IoT jako urządzenia podrzędnego.This article provides the steps for connecting an IoT device as a downstream device. Jeśli masz urządzenie IoT Edge jako urządzenie podrzędne, zobacz Connect a downstream IoT Edge to an Azure IoT Edge gateway (Łączenie urządzenia podrzędnego z bramą Azure IoT Edge podrzędnej).If you have an IoT Edge device as a downstream device, see Connect a downstream IoT Edge device to an Azure IoT Edge gateway.

Uwaga

Urządzenia IoT zarejestrowane w IoT Hub mogą używać bliźniaczych reprezentacji modułów do izolowania różnych procesów, sprzętu lub funkcji na jednym urządzeniu.IoT devices registered with IoT Hub can use module twins to isolate different processes, hardware, or functions on a single device. IoT Edge obsługują połączenia modułu podrzędnego przy użyciu uwierzytelniania za pomocą klucza symetrycznego, ale nie uwierzytelniania certyfikatu X.509.IoT Edge gateways support downstream module connections using symmetric key authentication but not X.509 certificate authentication.

Aby połączyć urządzenie podrzędne z bramą IoT Edge, potrzebne są dwie rzeczy:To connect a downstream device to an IoT Edge gateway, you need two things:

  • Urządzenie lub aplikacja skonfigurowana przy użyciu parametrów połączenia IoT Hub z dołączonymi informacjami w celu połączenia go z bramą.A device or application that's configured with an IoT Hub device connection string appended with information to connect it to the gateway.

    Ten krok został ukończony w poprzednim artykule Authenticate a downstream device to Azure IoT Hub.This step was completed in the previous article, Authenticate a downstream device to Azure IoT Hub.

  • Urządzenie lub aplikacja musi ufać certyfikatowi głównego urzędu certyfikacji bramy, aby zweryfikować połączenia TLS (Transport Layer Security) z urządzeniem bramy.The device or application has to trust the gateway's root CA certificate to validate the transport layer security (TLS) connections to the gateway device.

    Ten krok został szczegółowo wyjaśniony w pozostałej części tego artykułu.This step is explained in detail in the rest of this article. Ten krok można wykonać na jeden z dwóch sposobów: przez zainstalowanie certyfikatu urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego lub (w przypadku niektórych języków) przez odwołanie się do certyfikatu w aplikacjach przy użyciu zestawów SDK usługi Azure IoT.This step can be performed one of two ways: by installing the CA certificate in the operating system's certificate store, or (for certain languages) by referencing the certificate within applications using the Azure IoT SDKs.

TLS i podstawowe zasady certyfikatówTLS and certificate fundamentals

Wyzwaniem bezpiecznego łączenia urządzeń procesów IoT Edge jest tak samo jak każda inna bezpieczna komunikacja klienta/serwera, która odbywa się za pośrednictwem Internetu.The challenge of securely connecting downstream devices to IoT Edge is just like any other secure client/server communication that occurs over the internet. Klient i serwer bezpiecznie komunikują się przez Internet przy użyciu zabezpieczeń warstwy transportu (TLS).A client and a server securely communicate over the internet using Transport layer security (TLS). TLS jest zbudowany przy użyciu standardowych konstrukcji infrastruktury kluczy publicznych (PKI) nazywanych certyfikatami.TLS is built using standard Public key infrastructure (PKI) constructs called certificates. TLS to specyfikacja dość zaangażowanego i obejmuje szeroką gamę tematów związanych z zabezpieczania dwóch punktów końcowych.TLS is a fairly involved specification and addresses a wide range of topics related to securing two endpoints. Ta sekcja zawiera podsumowanie pojęć dotyczących bezpiecznego łączenia urządzeń z bramą IoT Edge sieci.This section summarizes the concepts relevant for you to securely connect devices to an IoT Edge gateway.

Gdy klient łączy się z serwerem, serwer przedstawia łańcuch certyfikatów nazywany łańcuchem certyfikatów serwera.When a client connects to a server, the server presents a chain of certificates, called the server certificate chain. Łańcuch certyfikatów zazwyczaj obejmuje certyfikat głównego urzędu certyfikacji, co najmniej jeden certyfikat pośredniego urzędu certyfikacji, a na koniec certyfikat serwera.A certificate chain typically comprises a root certificate authority (CA) certificate, one or more intermediate CA certificates, and finally the server's certificate itself. Klient ustanawia relację zaufania z serwerem, kryptograficznie weryfikując cały łańcuch certyfikatów serwera.A client establishes trust with a server by cryptographically verifying the entire server certificate chain. Ta weryfikacja klienta łańcucha certyfikatów serwera jest nazywana weryfikacją łańcucha serwerów.This client validation of the server certificate chain is called server chain validation. Klient wywołuje na serwerze potwierdzenie posiadania klucza prywatnego skojarzonego z certyfikatem serwera w procesie nazywanym dowodem posiadania.The client challenges the server to prove possession of the private key associated with the server certificate in a process called proof of possession. Kombinacja weryfikacji łańcucha serwerów i dowodu posiadania jest nazywana uwierzytelnianiem serwera.The combination of server chain validation and proof of possession is called server authentication. Aby zweryfikować łańcuch certyfikatów serwera, klient musi mieć kopię certyfikatu głównego urzędu certyfikacji, który został użyty do utworzenia (lub wystawienia) certyfikatu serwera.To validate a server certificate chain, a client needs a copy of the root CA certificate that was used to create (or issue) the server's certificate. Zwykle podczas nawiązywania połączenia z witrynami sieci Web przeglądarka jest wstępnie skonfigurowana przy użyciu często używanych certyfikatów urzędu certyfikacji, dzięki czemu klient ma bezproblemowy proces.Normally when connecting to websites, a browser comes pre-configured with commonly used CA certificates so the client has a seamless process.

Gdy urządzenie łączy się z Azure IoT Hub, urządzenie jest klientem, a IoT Hub usługą w chmurze jest serwerem.When a device connects to Azure IoT Hub, the device is the client and the IoT Hub cloud service is the server. Usługa IoT Hub w chmurze jest publicznie dostępna i powszechnie używana, dzięki certyfikatowi głównego urzędu certyfikacji o nazwie Baltimore CyberTrust Root.The IoT Hub cloud service is backed by a root CA certificate called Baltimore CyberTrust Root, which is publicly available and widely used. Ponieważ certyfikat IoT Hub certyfikacji jest już zainstalowany na większości urządzeń, wiele implementacji TLS (OpenSSL, Schannel, LibreSSL) automatycznie używa go podczas weryfikacji certyfikatu serwera.Since the IoT Hub CA certificate is already installed on most devices, many TLS implementations (OpenSSL, Schannel, LibreSSL) automatically use it during server certificate validation. Jednak urządzenie, które pomyślnie łączy się z usługą IoT Hub może mieć problemy podczas próby nawiązania połączenia z IoT Edge sieciową.However, a device that successfully connects to IoT Hub may have issues trying to connect to an IoT Edge gateway.

Gdy urządzenie łączy się z bramą IoT Edge, urządzenie podrzędne jest klientem, a urządzenie bramy jest serwerem.When a device connects to an IoT Edge gateway, the downstream device is the client and the gateway device is the server. Azure IoT Edge umożliwia tworzenie łańcuchów certyfikatów bramy bez względu na ich dopasowanie.Azure IoT Edge allows you to build gateway certificate chains however they see fit. Można użyć certyfikatu publicznego urzędu certyfikacji, takiego jak Baltimore, lub certyfikatu głównego urzędu certyfikacji z podpisem własnym (lub certyfikatu urzędu certyfikacji w domu).You may choose to use a public CA certificate, like Baltimore, or use a self-signed (or in-house) root CA certificate. Z certyfikatami publicznego urzędu certyfikacji często wiąże się koszt, dlatego są zwykle używane w scenariuszach produkcyjnych.Public CA certificates often have a cost associated with them, so are typically used in production scenarios. Certyfikaty urzędu certyfikacji z podpisem własnym są preferowane podczas tworzenia i testowania.Self-signed CA certificates are preferred for development and testing. Jeśli używasz certyfikatów demonstracyjnych, są to certyfikaty głównego urzędu certyfikacji z podpisem własnym.If you're using the demo certificates, those are self-signed root CA certificates.

Jeśli używasz certyfikatu głównego urzędu certyfikacji z podpisem własnym dla bramy usługi IoT Edge, musi on zostać zainstalowany lub dostarczony wszystkim urządzeniom nadrzędnym próbującym nawiązać połączenie z bramą.When you use a self-signed root CA certificate for an IoT Edge gateway, it needs to be installed on or provided to all the downstream devices attempting to connect to the gateway.

Konfiguracja certyfikatu bramy

Aby dowiedzieć się więcej na temat IoT Edge certyfikatów i niektórych implikacji produkcyjnych, zobacz IoT Edge szczegóły użycia certyfikatu.To learn more about IoT Edge certificates and some production implications, see IoT Edge certificate usage details.

Podaj certyfikat głównego urzędu certyfikacjiProvide the root CA certificate

Aby zweryfikować certyfikaty urządzenia bramy, urządzenie podrzędne musi mieć własną kopię certyfikatu głównego urzędu certyfikacji.To verify the gateway device's certificates, the downstream device needs its own copy of the root CA certificate. Jeśli do utworzenia certyfikatów testowych używasz skryptów podanych w repozytorium git usługi IoT Edge, certyfikat głównego urzędu certyfikacji ma nazwę azure-iot-test-only.root.ca.cert.pem.If you used the scripts provided in the IoT Edge git repository to create test certificates, then the root CA certificate is called azure-iot-test-only.root.ca.cert.pem. Jeśli nie zostały jeszcze w ramach innych kroków przygotowywania urządzenia podrzędnego, przenieś ten plik certyfikatu do dowolnego katalogu na urządzeniu podrzędnego.If you haven't already as part of the other downstream device preparation steps, move this certificate file to any directory on your downstream device. Aby przenieść plik certyfikatu, można użyć usługi, Azure Key Vault lub funkcji, np. protokołu bezpiecznego kopiowania. You can use a service like Azure Key Vault or a function like Secure copy protocol to move the certificate file.

Instalowanie certyfikatów w systemach operacyjnychInstall certificates in the OS

Gdy certyfikat głównego urzędu certyfikacji znajduje się na urządzeniu podrzędnego, należy upewnić się, że aplikacje łączące się z bramą mogą uzyskać dostęp do certyfikatu.Once the root CA certificate is on the downstream device, you need to make sure the applications that are connecting to the gateway can access the certificate.

Zainstalowanie certyfikatu głównego urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego zwykle umożliwia większości aplikacji korzystanie z certyfikatu głównego urzędu certyfikacji.Installing the root CA certificate in the operating system's certificate store generally allows most applications to use the root CA certificate. Istnieją pewne wyjątki, takie jak aplikacje NodeJS, które nie używają magazynu certyfikatów systemu operacyjnego, ale zamiast tego używają wewnętrznego magazynu certyfikatów środowiska uruchomieniowego środowiska uruchomieniowego node.There are some exceptions, like NodeJS applications that don't use the OS certificate store but rather use the Node runtime's internal certificate store. Jeśli nie możesz zainstalować certyfikatu na poziomie systemu operacyjnego, przejdź do tematu Używanie certyfikatów z zestawami SDK usługi Azure IoT.If you can't install the certificate at the operating system level, skip ahead to Use certificates with Azure IoT SDKs.

UbuntuUbuntu

Poniższe polecenia są przykładem sposobu instalowania certyfikatu urzędu certyfikacji na hoście z systemem Ubuntu.The following commands are an example of how to install a CA certificate on an Ubuntu host. W tym przykładzie założono, że używasz certyfikatu azure-iot-test-only.root.ca.cert.pem z artykułów dotyczących wymagań wstępnych oraz że certyfikat został skopiowany do lokalizacji na urządzeniu nadrzędnym.This example assumes that you're using the azure-iot-test-only.root.ca.cert.pem certificate from the prerequisites articles, and that you've copied the certificate into a location on the downstream device.

sudo cp <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

Powinien zostać wyświetlony komunikat "Aktualizowanie certyfikatów w /etc/ssl/certs... Dodano 1, usunięto 0; gotowe".You should see a message that says, "Updating certificates in /etc/ssl/certs... 1 added, 0 removed; done."

WindowsWindows

Poniższe kroki to przykład instalowania certyfikatu urzędu certyfikacji na hoście z systemem Windows.The following steps are an example of how to install a CA certificate on a Windows host. W tym przykładzie założono, że używasz certyfikatu azure-iot-test-only.root.ca.cert.pem z artykułów dotyczących wymagań wstępnych oraz że certyfikat został skopiowany do lokalizacji na urządzeniu nadrzędnym.This example assumes that you're using the azure-iot-test-only.root.ca.cert.pem certificate from the prerequisites articles, and that you've copied the certificate into a location on the downstream device.

Certyfikaty można zainstalować przy użyciu polecenia Import-Certificate programu PowerShell jako administrator:You can install certificates using PowerShell's Import-Certificate as an administrator:

import-certificate  <file path>\azure-iot-test-only.root.ca.cert.pem -certstorelocation cert:\LocalMachine\root

Certyfikaty można również zainstalować przy użyciu narzędzia certlm:You can also install certificates using the certlm utility:

  1. W menu Start wyszukaj i wybierz pozycję Zarządzaj certyfikatami komputerów.In the Start menu, search for and select Manage computer certificates. Zostanie otwarte narzędzie o nazwie certlm.A utility called certlm opens.
  2. Przejdź do lokalizacji Certyfikaty — komputer > Zaufane główne urzędy certyfikacji.Navigate to Certificates - Local Computer > Trusted Root Certification Authorities.
  3. Kliknij prawym przyciskiem myszy pozycję Certyfikaty i wybierz polecenie Importuj wszystkie > zadania.Right-click Certificates and select All Tasks > Import. Powinien zostać uruchomić kreator importu certyfikatów.The certificate import wizard should launch.
  4. Postępuj zgodnie z instrukcjami i zaimportuj plik certyfikatu <path>/azure-iot-test-only.root.ca.cert.pem .Follow the steps as directed and import certificate file <path>/azure-iot-test-only.root.ca.cert.pem. Po zakończeniu powinien zostać wyświetlony komunikat "Pomyślnie zaimportowano".When completed, you should see a "Successfully imported" message.

Certyfikaty można również instalować programowo przy użyciu interfejsów API .NET, jak pokazano w przykładzie dla programu .NET w dalszej części tego artykułu.You can also install certificates programmatically using .NET APIs, as shown in the .NET sample later in this article.

Zazwyczaj aplikacje używają dostarczonego przez system Windows stosu TLS o nazwie Schannel do bezpiecznego nawiązywania połączeń za pośrednictwem TLS.Typically applications use the Windows provided TLS stack called Schannel to securely connect over TLS. Schannel wymaga, aby wszystkie certyfikaty zostały zainstalowane w magazynie certyfikatów systemu Windows przed próbą nawiązania połączenia TLS.Schannel requires that any certificates be installed in the Windows certificate store before attempting to establish a TLS connection.

Używanie certyfikatów z zestawami SDK usługi Azure IoTUse certificates with Azure IoT SDKs

W tej sekcji opisano, jak zestawy SDK usługi Azure IoT łączą się z urządzeniem IoT Edge przy użyciu prostych przykładowych aplikacji.This section describes how the Azure IoT SDKs connect to an IoT Edge device using simple sample applications. Celem wszystkich przykładów jest połączenie klienta urządzenia i wysłanie komunikatów telemetrycznych do bramy, a następnie zamknięcie połączenia i zamknięcie.The goal of all the samples is to connect the device client and send telemetry messages to the gateway, then close the connection and exit.

Przed użyciem przykładów na poziomie aplikacji przygotuj dwie rzeczy:Have two things ready before using the application-level samples:

  • Dane parametrów połączenia urządzenia podrzędnego IoT Hub tak, aby wskazać urządzenie bramy, oraz wszelkie certyfikaty wymagane do uwierzytelnienia urządzenia podrzędnego w IoT Hub.Your downstream device's IoT Hub connection string modified to point to the gateway device, and any certificates required to authenticate your downstream device to IoT Hub. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie urządzenia podrzędnego w Azure IoT Hub.For more information, see Authenticate a downstream device to Azure IoT Hub.

  • Pełna ścieżka do certyfikatu głównego urzędu certyfikacji, który został skopiowany i zapisany w innym miejscu na urządzeniu podrzędnego.The full path to the root CA certificate that you copied and saved somewhere on your downstream device.

    Na przykład <path>/azure-iot-test-only.root.ca.cert.pem.For example, <path>/azure-iot-test-only.root.ca.cert.pem.

NodeJSNodeJS

Ta sekcja zawiera przykładową aplikację do łączenia klienta urządzenia NodeJS usługi Azure IoT z bramą IoT Edge azure.This section provides a sample application to connect an Azure IoT NodeJS device client to an IoT Edge gateway. W przypadku aplikacji NodeJS należy zainstalować certyfikat głównego urzędu certyfikacji na poziomie aplikacji, jak pokazano poniżej.For NodeJS applications, you must install the root CA certificate at the application level as shown here. Aplikacje NodeJS nie używają magazynu certyfikatów systemu.NodeJS applications don't use the system's certificate store.

  1. Pobierz przykład dla usługi edge_downstream_device.js z zestawu SDK urządzenia Usługi Azure IoT dla Node.js przykładów.Get the sample for edge_downstream_device.js from the Azure IoT device SDK for Node.js samples repo.
  2. Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając readme.md plik.Make sure that you have all the prerequisites to run the sample by reviewing the readme.md file.
  3. W edge_downstream_device.js zaktualizuj zmienne connectionString i edge_ca_cert_path.In the edge_downstream_device.js file, update the connectionString and edge_ca_cert_path variables.
  4. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać instrukcje dotyczące uruchamiania przykładu na urządzeniu.Refer to the SDK documentation for instructions on how to run the sample on your device.

Aby zrozumieć uruchomiony przykład, poniższy fragment kodu przedstawia sposób, w jaki zestaw SDK klienta odczytuje plik certyfikatu i używa go do nawiązania bezpiecznego połączenia TLS:To understand the sample that you're running, the following code snippet is how the client SDK reads the certificate file and uses it to establish a secure TLS connection:

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

.NET.NET

Ta sekcja zawiera wprowadzenie do przykładowej aplikacji służącej do łączenia klienta urządzenia .NET usługi Azure IoT z bramą IoT Edge azure.This section introduces a sample application to connect an Azure IoT .NET device client to an IoT Edge gateway. Jednak aplikacje .NET mogą automatycznie używać wszystkich zainstalowanych certyfikatów w magazynie certyfikatów systemu na hostach z systemami Linux i Windows.However, .NET applications are automatically able to use any installed certificates in the system's certificate store on both Linux and Windows hosts.

  1. Pobierz przykład dla urządzenia EdgeDownstreamDevice z folderu przykładów IoT Edge .NET.Get the sample for EdgeDownstreamDevice from the IoT Edge .NET samples folder.
  2. Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając readme.md plik.Make sure that you have all the prerequisites to run the sample by reviewing the readme.md file.
  3. W oknie właściwości / launchSettings.jspliku zaktualizuj DEVICE_CONNECTION_STRING i CA_CERTIFICATE_PATH zmienne.In the Properties / launchSettings.json file, update the DEVICE_CONNECTION_STRING and CA_CERTIFICATE_PATH variables. Jeśli chcesz użyć certyfikatu zainstalowanego w magazynie zaufanych certyfikatów w systemie hosta, pozostaw tę zmienną pustą.If you want to use the certificate installed in the trusted certificate store on the host system, leave this variable blank.
  4. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać instrukcje dotyczące uruchamiania przykładu na urządzeniu.Refer to the SDK documentation for instructions on how to run the sample on your device.

Aby programowo zainstalować zaufany certyfikat w magazynie certyfikatów za pośrednictwem aplikacji .NET, zapoznaj się z funkcją InstallCACert() w pliku EdgeDownstreamDevice /Program.cs.To programmatically install a trusted certificate in the certificate store via a .NET application, refer to the InstallCACert() function in the EdgeDownstreamDevice / Program.cs file. Ta operacja jest idempotentna, więc można ją uruchomić wiele razy z tą samą wartością bez dodatkowych efektów.This operation is idempotent, so can be run multiple times with the same values with no additional effect.

CC

W tej sekcji wprowadzono przykładową aplikację do łączenia klienta urządzenia usługi Azure IoT C z bramą IoT Edge azure.This section introduces a sample application to connect an Azure IoT C device client to an IoT Edge gateway. Zestaw SDK języka C może działać z wieloma bibliotekami TLS, w tym OpenSSL,LemSSL i Schannel.The C SDK can operate with many TLS libraries, including OpenSSL, WolfSSL, and Schannel. Aby uzyskać więcej informacji, zobacz Zestaw SDK języka C usługi Azure IoT.For more information, see the Azure IoT C SDK.

  1. Pobierz aplikację iotedge_downstream_device_sample z zestawu SDK urządzenia Usługi Azure IoT dla przykładów języka C.Get the iotedge_downstream_device_sample application from the Azure IoT device SDK for C samples.
  2. Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając readme.md plik.Make sure that you have all the prerequisites to run the sample by reviewing the readme.md file.
  3. W pliku iotedge_downstream_device_sample.c zaktualizuj zmienne connectionString i edge_ca_cert_path.In the iotedge_downstream_device_sample.c file, update the connectionString and edge_ca_cert_path variables.
  4. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać instrukcje dotyczące uruchamiania przykładu na urządzeniu.Refer to the SDK documentation for instructions on how to run the sample on your device.

Zestaw SDK urządzenia usługi Azure IoT dla języka C umożliwia zarejestrowanie certyfikatu urzędu certyfikacji podczas konfigurowania klienta.The Azure IoT device SDK for C provides an option to register a CA certificate when setting up the client. Ta operacja nie instaluje certyfikatu w żadnym miejscu, ale używa formatu ciągu certyfikatu w pamięci.This operation doesn't install the certificate anywhere, but rather uses a string format of the certificate in memory. Zapisany certyfikat jest dostarczany do podstawowego stosu TLS podczas nawiązywania połączenia.The saved certificate is provided to the underlying TLS stack when establishing a connection.

(void)IoTHubDeviceClient_SetOption(device_handle, OPTION_TRUSTED_CERT, cert_string);

Uwaga

Metoda rejestrowania certyfikatu urzędu certyfikacji podczas konfigurowania klienta może ulec zmianie w przypadku korzystania z zarządzanego pakietu lub biblioteki.The method to register a CA certificate when setting up the client can change if using a managed package or library. Na przykład biblioteka oparta na środowiskach IDE Arduino będzie wymagać dodania certyfikatu urzędu certyfikacji do tablicy certyfikatów zdefiniowanej w globalnym pliku certs.c, a nie przy użyciu IoTHubDeviceClient_LL_SetOption operacji .For example, the Arduino IDE based library will require adding the CA certificate to a certificates array defined in a global certs.c file, rather than using the IoTHubDeviceClient_LL_SetOption operation.

Na hostach z systemem Windows, jeśli nie używasz biblioteki OpenSSL ani innej biblioteki TLS, zestaw SDK domyślnie używa pakietu Schannel.On Windows hosts, if you're not using OpenSSL or another TLS library, the SDK default to using Schannel. Aby kanał Schannel działał, IoT Edge główny urząd certyfikacji powinien być zainstalowany w magazynie certyfikatów systemu Windows, a nie ustawiony przy użyciu IoTHubDeviceClient_SetOption operacji .For Schannel to work, the IoT Edge root CA certificate should be installed in the Windows certificate store, not set using the IoTHubDeviceClient_SetOption operation.

JavaJava

W tej sekcji wprowadzono przykładową aplikację do łączenia klienta urządzenia Java usługi Azure IoT z bramą IoT Edge wirtualnej.This section introduces a sample application to connect an Azure IoT Java device client to an IoT Edge gateway.

  1. Pobierz przykład wyślij zdarzenie z przykładów zestawu SDK urządzenia usługi Azure IoT dla języka Java.Get the sample for Send-event from the Azure IoT device SDK for Java samples.
  2. Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając readme.md plik.Make sure that you have all the prerequisites to run the sample by reviewing the readme.md file.
  3. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać instrukcje dotyczące uruchamiania przykładu na urządzeniu.Refer to the SDK documentation for instructions on how to run the sample on your device.

PythonPython

W tej sekcji wprowadzono przykładową aplikację do łączenia klienta urządzenia Usługi IoT w języku Python z bramą IoT Edge azure.This section introduces a sample application to connect an Azure IoT Python device client to an IoT Edge gateway.

  1. Pobierz przykładowy kod dla send_message_downstream z zestawu SDK urządzenia usługi Azure IoT dla języka Python.Get the sample for send_message_downstream from the Azure IoT device SDK for Python samples.
  2. Ustaw zmienne IOTHUB_DEVICE_CONNECTION_STRING środowiskowe i w sposób określony w IOTEDGE_ROOT_CA_CERT_PATH komentarzach skryptu języka Python.Set the IOTHUB_DEVICE_CONNECTION_STRING and IOTEDGE_ROOT_CA_CERT_PATH environment variables as specified in the Python script comments.
  3. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać dodatkowe instrukcje dotyczące sposobu uruchamiania przykładu na urządzeniu.Refer to the SDK documentation for any additional instructions on how to run the sample on your device.

Testowanie połączenia bramyTest the gateway connection

Użyj tego przykładowego polecenia na urządzeniu nadrzędnym, aby sprawdzić, czy może nawiązać połączenie z urządzeniem bramy:Use this sample command on the downstream device to test that it can connect to the gateway device:

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

To polecenie testuje połączenia za pośrednictwem portu MQTTS (port 8883).This command tests connections over MQTTS (port 8883). Jeśli używasz innego protokołu, dostosuj polecenie odpowiednio do protokołu AMQPS (5671) lub HTTPS (433)If you're using a different protocol, adjust the command as necessary for AMQPS (5671) or HTTPS (433)

Dane wyjściowe tego polecenia mogą być długie, łącznie z informacjami o wszystkich certyfikatach w łańcuchu.The output of this command may be long, including information about all the certificates in the chain. Jeśli połączenie zostanie pomyślnie nawiązaniu, zostanie wyświetlony wiersz, taki Verification: OK jak lub Verify return code: 0 (ok) .If your connection is successful, you'll see a line like Verification: OK or Verify return code: 0 (ok).

Weryfikowanie połączenia bramy

Rozwiązywanie problemów z połączeniem bramyTroubleshoot the gateway connection

Jeśli urządzenie liścia ma sporadyczne połączenie z urządzeniem bramy, spróbuj wykonać następujące kroki w celu rozwiązania problemu.If your leaf device has intermittent connection to its gateway device, try the following steps for resolution.

  1. Czy nazwa hosta bramy w parametrach połączenia jest taka sama jak wartość nazwy hosta w IoT Edge konfiguracji na urządzeniu bramy?Is the gateway hostname in the connection string the same as the hostname value in the IoT Edge config file on the gateway device?
  2. Czy nazwa hosta bramy jest rozpoznawana jako adres IP?Is the gateway hostname resolvable to an IP Address? Sporadyczne połączenia można rozwiązywać przy użyciu systemu DNS lub dodając wpis pliku hosta na urządzeniu liścia.You can resolve intermittent connections either by using DNS or by adding a host file entry on the leaf device.
  3. Czy porty komunikacyjne są otwarte w zaporze?Are communication ports open in your firewall? Komunikacja oparta na używanym protokole (MQTTS:8883/AMQPS:5671/HTTPS:433) musi być możliwa między urządzeniem nadrzędnym a przezroczystym IoT Edge.Communication based on the protocol used (MQTTS:8883/AMQPS:5671/HTTPS:433) must be possible between downstream device and the transparent IoT Edge.

Następne krokiNext steps

Dowiedz się, IoT Edge rozszerzać możliwości trybu offline na urządzenia podrzędne.Learn how IoT Edge can extend offline capabilities to downstream devices.