Udostępnij przez


Łączenie urządzenia podrzędnego z bramą usługi Azure IoT Edge

Dotyczy:Znacznik wyboru usługi IoT Edge 1.5 IoT Edge 1.5

Ważne

Obsługiwana wersja usługi IoT Edge 1.5 LTS. Usługa IoT Edge 1.4 LTS kończy się od 12 listopada 2024 r. Jeśli korzystasz z wcześniejszej wersji, zobacz aktualizację Azure IoT Edge.

Ten artykuł zawiera instrukcje dotyczące konfigurowania zaufanego połączenia między urządzeniami podrzędnymi i przezroczystymi bramami usługi IoT Edge. W scenariuszu przezroczystej bramy co najmniej jedno urządzenie wysyła komunikaty za pośrednictwem jednego urządzenia bramy, które utrzymuje połączenie z usługą IoT Hub. W tym artykule terminy gateway i gateway IoT Edge oznaczają urządzenie IoT Edge skonfigurowane jako transparentny gateway.

Uwaga

Urządzenie końcowe wysyła dane bezpośrednio do Internetu lub do urządzeń bramkowych (z włączoną obsługą IoT Edge lub bez). Urządzenie podrzędne może być urządzeniem podrzędnym lub urządzeniem bramy w topologii zagnieżdżonej.

Skonfiguruj przezroczyste połączenie bramy w trzech krokach. W tym artykule wyjaśniono trzeci krok.

  1. Skonfiguruj urządzenie bramy jako serwer, aby urządzenia podrzędne mogły się z nim bezpiecznie łączyć. Skonfiguruj bramę w celu odbierania komunikatów z urządzeń podrzędnych i kierowania ich do odpowiedniego miejsca docelowego. Aby zapoznać się z tymi krokami, zobacz Konfigurowanie urządzenia usługi IoT Edge w celu działania jako przezroczystej bramy.

  2. Utwórz tożsamość urządzenia dla urządzenia podrzędnego, aby umożliwić jego uwierzytelnianie za pomocą usługi IoT Hub. Skonfiguruj urządzenie podrzędne do wysyłania komunikatów za pośrednictwem urządzenia bramy. Aby uzyskać te kroki, zobacz Uwierzytelnianie urządzenia podrzędnego w usłudze Azure IoT Hub.

  3. Połącz urządzenie podrzędne z urządzeniem bramy i rozpocznij wysyłanie komunikatów.

W tym artykule opisano składniki połączenia urządzeń podrzędnych, takie jak:

  • Zabezpieczenia warstwy transportu (TLS) i podstawy certyfikatów
  • Biblioteki TLS, które działają w różnych systemach operacyjnych i obsługują certyfikaty inaczej

Przejdź przez przykłady usługi Azure IoT w preferowanym języku, aby Twoje urządzenie mogło wysyłać komunikaty do bramy.

Wymagania wstępne

Uzyskaj następujące informacje, aby przygotować urządzenie podrzędne:

Uwaga

Urządzenia IoT zarejestrowane w usłudze IoT Hub mogą używać bliźniaczych reprezentacji modułów do izolowania różnych procesów, sprzętu lub funkcji na jednym urządzeniu. Bramy usługi IoT Edge obsługują połączenia modułów podrzędnych przy użyciu uwierzytelniania klucza symetrycznego, ale nie uwierzytelniania certyfikatu X.509.

Informacje o protokole TLS i podstawach certyfikatów

Bezpieczne łączenie urządzeń podrzędnych z usługą IoT Edge przypomina inną bezpieczną komunikację klienta i serwera przez Internet. Klient i serwer bezpiecznie komunikują się przez Internet przy użyciu zabezpieczeń warstwy transportu (TLS). Protokół TLS używa standardowych konstrukcji infrastruktury kluczy publicznych (PKI) nazywanych certyfikatami. Protokół TLS to szczegółowa specyfikacja obejmująca wiele tematów związanych z zabezpieczaniem dwóch punktów końcowych. W tej sekcji przedstawiono podsumowanie pojęć potrzebnych do bezpiecznego połączenia urządzeń z bramą IoT Edge.

Gdy klient łączy się z serwerem, serwer przedstawia łańcuch certyfikatów nazywany łańcuchem certyfikatów serwera. Łańcuch certyfikatów zazwyczaj ma certyfikat głównego urzędu certyfikacji, co najmniej jeden certyfikat pośredniego urzędu certyfikacji i certyfikat serwera. Klient ufa serwerowi, weryfikując kryptograficznie cały łańcuch certyfikatów serwera. Ten proces jest nazywany walidacją łańcucha serwerów. Klient również prosi serwer o udowodnienie, że posiada klucz prywatny certyfikatu serwera, nazywany dowodem posiadania. Razem walidacja łańcucha serwerów i dowód posiadania są nazywane uwierzytelnianiem serwera. Aby zweryfikować łańcuch certyfikatów serwera, klient potrzebuje kopii certyfikatu głównego urzędu certyfikacji używanego do wystawiania certyfikatu serwera. Podczas nawiązywania połączenia z witrynami internetowymi przeglądarki są wstępnie skonfigurowane z typowymi certyfikatami urzędu certyfikacji, dzięki czemu proces klienta jest bezproblemowy.

Gdy urządzenie łączy się z usługą Azure IoT Hub, urządzenie jest klientem, a usługa w chmurze usługi IoT Hub jest serwerem. Usługa chmurowa IoT Hub używa certyfikatu urzędu certyfikacji o nazwie Baltimore CyberTrust Root, który jest publicznie dostępny i powszechnie używany. Ponieważ certyfikat urzędu certyfikacji usługi IoT Hub jest już zainstalowany na większości urządzeń, wiele implementacji protokołu TLS (OpenSSL, Schannel, LibreSSL) jest automatycznie używanych podczas walidacji certyfikatu serwera. Jednak urządzenie łączące się z usługą IoT Hub może mieć problemy podczas nawiązywania połączenia z bramą usługi IoT Edge.

Gdy urządzenie łączy się z bramą usługi IoT Edge, urządzenie podrzędne jest klientem, a urządzenie bramy jest serwerem. Usługa Azure IoT Edge umożliwia tworzenie łańcuchów certyfikatów bramy zgodnie z potrzebami. Możesz użyć certyfikatu publicznego CA, takiego jak Baltimore, lub certyfikatu głównego CA z podpisem własnym (lub wewnętrznego). Certyfikaty publicznego urzędu certyfikacji często wiązane są z opłatami, więc są zwykle używane w środowiskach produkcyjnych. Certyfikaty urzędu certyfikacji z podpisem własnym są preferowane do programowania i testowania. Certyfikaty demonstracyjne to certyfikaty z podpisem własnym głównego urzędu certyfikacji.

Jeśli używasz samopodpisanego certyfikatu głównego urzędu certyfikacji dla bramy usługi IoT Edge, musisz go zainstalować lub udostępnić wszystkim urządzeniom podrzędnym, które łączą się z bramą.

Zrzut ekranu przedstawiający konfigurację certyfikatu bramy.

Aby dowiedzieć się więcej o certyfikatach usługi IoT Edge i implikacjach produkcyjnych, zobacz Szczegóły użycia certyfikatu usługi IoT Edge.

Podaj certyfikat głównego urzędu certyfikacji

Aby zweryfikować certyfikaty urządzenia bramy, urządzenie podrzędne potrzebuje własnej kopii certyfikatu głównego urzędu certyfikacji. Jeśli używasz skryptów w repozytorium git usługi IoT Edge do tworzenia certyfikatów testowych, certyfikat głównego urzędu certyfikacji nosi nazwę azure-iot-test-only.root.ca.cert.pem.

Jeśli jeszcze tego nie zrobiono, przenieś ten plik certyfikatu do dowolnego katalogu na urządzeniu podrzędnym. Przenieś plik, instalując certyfikat urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego lub odwołując się do certyfikatu w aplikacjach korzystających z zestawów SDK usługi Azure IoT.

Aby przenieść plik certyfikatu, użyj usługi, takiej jak Azure Key Vault lub narzędzia, takiego jak Protokół Secure copy .

Instalowanie certyfikatów w systemie operacyjnym

Po skopiowaniu certyfikatu głównego urzędu certyfikacji do urządzenia podrzędnego upewnij się, że aplikacje łączące się z bramą mogą uzyskiwać dostęp do certyfikatu.

Zainstaluj certyfikat głównego urzędu certyfikacji w magazynie certyfikatów systemu operacyjnego, aby większość aplikacji mogła z niego korzystać. Niektóre aplikacje, takie jak Node.js, nie używają magazynu certyfikatów systemu operacyjnego i zamiast tego używają wewnętrznego magazynu certyfikatów środowiska uruchomieniowego node. Jeśli nie możesz zainstalować certyfikatu na poziomie systemu operacyjnego, przejdź do sekcji Używanie certyfikatów z zestawami SDK usługi Azure IoT .

Zainstaluj certyfikat głównego urzędu certyfikacji w systemie Ubuntu lub Windows.

Użyj następujących poleceń, aby zainstalować certyfikat urzędu certyfikacji na hoście z systemem Ubuntu. W tym przykładzie użyto certyfikatu azure-iot-test-only.root.ca.cert.pem z artykułów dotyczących wymagań wstępnych i przyjęto założenie, że certyfikat został skopiowany do lokalizacji na urządzeniu podrzędnym.

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

Po zakończeniu zobaczysz wiadomość: Aktualizowanie certyfikatów w /etc/ssl/certs... 1 dodany, 0 usunięte; gotowe.

Używanie certyfikatów z zestawami SDK usługi Azure IoT

Zestawy SDK usługi Azure IoT łączą się z urządzeniem usługi IoT Edge przy użyciu prostych przykładowych aplikacji. Celem próbek jest połączenie klienta urządzenia, wysłanie komunikatów telemetrycznych urządzenia do bramy, zamknięcie połączenia oraz zakończenie pracy.

Przed rozpoczęciem korzystania z przykładów na poziomie aplikacji uzyskaj następujące elementy:

  • Usługa IoT Hub parametry połączenia z urządzenia podrzędnego została zmodyfikowana tak, aby wskazywała urządzenie bramy.

  • Wszystkie certyfikaty wymagane do uwierzytelniania urządzenia podrzędnego w usłudze IoT Hub. Aby uzyskać więcej informacji, zobacz Uwierzytelnianie urządzenia podrzędnego w usłudze Azure IoT Hub.

  • Pełna ścieżka do certyfikatu głównego urzędu certyfikacji skopiowanego i zapisanego gdzieś na urządzeniu podrzędnym.

    Na przykład: <file path>/azure-iot-test-only.root.ca.cert.pem.

Teraz możesz używać certyfikatów z przykładem w wybranym języku:

Ta sekcja zawiera przykładową aplikację do łączenia klienta urządzenia usługi Azure IoT Node.js z bramą usługi IoT Edge. W przypadku aplikacji Node.js należy zainstalować certyfikat głównego urzędu certyfikacji na poziomie aplikacji, jak pokazano tutaj. Node.js aplikacje nie korzystają z magazynu certyfikatów systemu.

  1. Pobierz przykład dla edge_downstream_device.js z repozytorium przykładów zestawu SDK urządzeń usługi Azure IoT dla Node.js przykładów.
  2. Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając plik readme.md .
  3. W pliku edge_downstream_device.js zaktualizuj zmienne connectionString i edge_ca_cert_path .
  4. Zapoznaj się z dokumentacją zestawu SDK, aby uzyskać instrukcje dotyczące uruchamiania przykładu na urządzeniu.

Aby zrozumieć przykład, który jest uruchomiony, poniższy fragment kodu to sposób, w jaki zestaw SDK klienta odczytuje plik certyfikatu i używa go do ustanowienia bezpiecznego połączenia TLS:

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

Testowanie połączenia bramy

Uruchom to przykładowe polecenie na urządzeniu podrzędnym, aby przetestować, czy może nawiązać połączenie z urządzeniem bramy:

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

To polecenie sprawdza połączenie za pośrednictwem protokołu MQTTS (port 8883). Jeśli używasz innego protokołu, dostosuj polecenie dla protokołu AMQPS (5671) lub HTTPS (443).

Dane wyjściowe tego polecenia mogą być długie i zawierają informacje o wszystkich certyfikatach w łańcuchu. Jeśli połączenie zakończy się pomyślnie, zostanie wyświetlony wiersz podobny do Verification: OK lub Verify return code: 0 (ok).

Zrzut ekranu przedstawiający weryfikację połączenia bramy.

Rozwiązywanie problemów z połączeniem bramy

Jeśli połączenie urządzenia podrzędnego z urządzeniem bramy jest niestabilne, rozważ poniższe pytania dla rozwiązania problemu.

  • Czy nazwa hosta bramy w parametry połączenia taka sama jak wartość nazwy hosta w pliku konfiguracji usługi IoT Edge na urządzeniu bramy?
  • Czy nazwa hosta bramy może zostać przekształcona na adres IP? Napraw przerywane połączenia, używając DNS lub dodając wpis do pliku hosts na urządzeniu klienckim.
  • Czy porty komunikacyjne są otwarte w zaporze? Upewnij się, że wymagane porty protokołu (MQTTS:8883, AMQPS:5671, HTTPS:433) są otwarte między urządzeniem podrzędnym a przezroczystym urządzeniem usługi IoT Edge.

Następne kroki

Dowiedz się, jak usługa IoT Edge rozszerza możliwości trybu offline na urządzenia podrzędne .