Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
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.
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.
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.
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:
Urządzenie podrzędne.
To urządzenie może być dowolną aplikacją lub platformą z tożsamością utworzoną w usłudze Azure IoT Hub. W wielu przypadkach aplikacje używają zestawu SDK urządzenia Azure IoT. Urządzenie podrzędne może być również aplikacją działającą na urządzeniu bramy IoT Edge.
W dalszej części tego artykułu pokazano, jak połączyć urządzenie IoT jako urządzenie podrzędne. Jeśli chcesz użyć urządzenia usługi IoT Edge jako urządzenia podrzędnego, zobacz Łączenie urządzeń usługi Azure IoT Edge w celu utworzenia hierarchii (zagnieżdżonej krawędzi).
Plik certyfikatu głównego urzędu certyfikacji.
Ten plik służy do generowania certyfikatu CA Edge w Konfigurowanie urządzenia IoT Edge jako przezroczysta brama i jest dostępny na urządzeniu poniższym.
Urządzenie podrzędne używa tego certyfikatu do sprawdzania tożsamości bramy sieciowej. Ten zaufany certyfikat łączy zabezpieczenia warstwy transportu (TLS) z urządzeniem bramy. Aby uzyskać szczegółowe informacje o użyciu, zobacz Dostarcz certyfikat głównego urzędu certyfikacji.
Zmodyfikowany parametry połączenia wskazujący urządzenie bramy.
Aby dowiedzieć się, jak zmienić parametry połączenia, zobacz Uwierzytelnianie urządzenia podrzędnego w usłudze Azure IoT Hub.
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ą.
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.
- 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.
- Upewnij się, że masz wszystkie wymagania wstępne dotyczące uruchamiania przykładu, przeglądając plik readme.md .
- W pliku edge_downstream_device.js zaktualizuj zmienne connectionString i edge_ca_cert_path .
- 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).
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 .