Udostępnij przez


Tworzenie i aprowizowanie urządzenia usługi IoT Edge w systemie Linux przy użyciu certyfikatów X.509

Dotyczy:ikona potwierdzenia IoT Edge 1.1

Ważne

Data zakończenia wsparcia usługi IoT Edge 1.1 wynosiła 13 grudnia 2022 r.. Zapoznaj się z cyklem życia produktów firmy Microsoft, aby uzyskać informacje na temat sposobu obsługi tego produktu lub interfejsu API albo tej usługi lub technologii. Aby uzyskać więcej informacji na temat aktualizowania do najnowszej wersji usługi IoT Edge, zobacz Update IoT Edge.

Ten artykuł zawiera kompleksowe instrukcje dotyczące rejestrowania i aprowizacji urządzenia usługi IoT Edge z systemem Linux, w tym instalowania usługi IoT Edge.

Każde urządzenie, które łączy się z centrum IoT, ma identyfikator urządzenia używany do śledzenia komunikacji urządzenie-chmura lub chmura-urządzenie. Urządzenie można skonfigurować przy użyciu informacji o połączeniu, w tym nazwy hosta centrum IoT, identyfikatora urządzenia i informacji używanych przez urządzenie do uwierzytelniania w usłudze IoT Hub.

Kroki opisane w tym artykule obejmują proces ręcznej aprowizacji, w którym łączysz jedno urządzenie z centrum IoT Hub. W przypadku aprowizacji ręcznej dostępne są dwie opcje uwierzytelniania urządzeń usługi IoT Edge:

  • Klucze symetryczne: podczas tworzenia nowej tożsamości urządzenia w usłudze IoT Hub usługa tworzy dwa klucze. Umieszczasz jeden z kluczy na urządzeniu, a urządzenie przedstawia klucz do usługi IoT Hub podczas uwierzytelniania.

    Ta metoda uwierzytelniania jest szybsza, aby rozpocząć pracę, ale nie jest tak bezpieczna.

  • X.509 samopodpisany: Tworzysz dwa certyfikaty tożsamości X.509 i umieszczasz je na urządzeniu. Podczas tworzenia nowej tożsamości urządzenia w usłudze IoT Hub podajesz odciski palca z obu certyfikatów. Gdy urządzenie uwierzytelnia się w usłudze IoT Hub, przedstawia jeden certyfikat, a usługa IoT Hub sprawdza, czy certyfikat jest zgodny z jego odciskiem palca.

    Ta metoda uwierzytelniania jest bezpieczniejsza i zalecana w scenariuszach produkcyjnych.

W tym artykule opisano używanie certyfikatów X.509 jako metody uwierzytelniania. Jeśli chcesz użyć kluczy symetrycznych, zobacz Tworzenie i aprowizowanie urządzenia usługi IoT Edge w systemie Linux przy użyciu kluczy symetrycznych.

Uwaga / Notatka

Jeśli masz wiele urządzeń do skonfigurowania i nie chcesz ręcznie aprowizować poszczególnych urządzeń, skorzystaj z jednego z następujących artykułów, aby dowiedzieć się, jak usługa IoT Edge współpracuje z usługą aprowizacji urządzeń usługi IoT Hub:

Wymagania wstępne

W tym artykule opisano rejestrowanie urządzenia usługi IoT Edge i instalowanie na nim usługi IoT Edge. Te zadania mają różne wymagania wstępne i narzędzia używane do ich wykonania. Przed kontynuowaniem upewnij się, że zostały spełnione wszystkie wymagania wstępne.

Narzędzia do zarządzania urządzeniami

Aby wykonać kroki rejestrowania urządzenia, możesz użyć witryny Azure Portal, programu Visual Studio Code lub interfejsu wiersza polecenia platformy Azure. Każde narzędzie ma własne wymagania wstępne:

Bezpłatne lub standardowe centrum IoT w ramach subskrypcji platformy Azure.

Wymagania dotyczące urządzenia

Urządzenie z systemem Linux X64, ARM32 lub ARM64.

Firma Microsoft publikuje pakiety instalacyjne dla różnych systemów operacyjnych.

Aby uzyskać najnowsze informacje o tym, które systemy operacyjne są obecnie obsługiwane w scenariuszach produkcyjnych, zobacz Obsługiwane systemy usługi Azure IoT Edge.

Generowanie certyfikatów tożsamości urządzenia

Ręczna aprowizacja przy użyciu certyfikatów X.509 wymaga usługi IoT Edge w wersji 1.0.10 lub nowszej.

Podczas aprowizowania urządzenia IoT Edge przy użyciu certyfikatów X.509 używasz certyfikatu tożsamości urządzenia . Ten certyfikat jest używany tylko do aprowizowania urządzenia usługi IoT Edge i uwierzytelniania urządzenia za pomocą usługi Azure IoT Hub. To jest certyfikat końcowy, który nie podpisuje innych certyfikatów. Certyfikat tożsamości urządzenia jest oddzielony od certyfikatów urzędu certyfikacji , które urządzenie usługi IoT Edge przedstawia modułom lub urządzeniom podrzędnym na potrzeby weryfikacji.

W przypadku uwierzytelniania certyfikatu X.509 informacje o uwierzytelnianiu każdego urządzenia są udostępniane w postaci odcisków palca pobranych z certyfikatów tożsamości urządzenia. Te odciski palca są przekazywane do usługi IoT Hub w momencie rejestracji urządzenia, aby usługa mogła rozpoznać urządzenie podczas nawiązywania połączenia.

Aby uzyskać więcej informacji na temat sposobu użycia certyfikatów urzędu certyfikacji na urządzeniach usługi IoT Edge, zobacz Omówienie sposobu korzystania z certyfikatów w usłudze Azure IoT Edge.

Do aprowizacji ręcznej w środowisku X.509 potrzebne są następujące pliki:

  • Dwa certyfikaty tożsamości urządzenia z ich zgodnymi certyfikatami klucza prywatnego w formatach .cer lub pem.

    Do środowiska uruchomieniowego usługi IoT Edge jest udostępniany jeden zestaw plików certyfikatów/kluczy. Podczas tworzenia certyfikatów tożsamości urządzenia określ nazwę pospolitą certyfikatu (CN) z identyfikatorem urządzenia, który chcesz przypisać urządzeniu w centrum IoT.

  • Odciski palca pobrane z obu certyfikatów tożsamości urządzenia.

    Wartości odcisku palca to 40-szesnastkowe znaki skrótów SHA-1 lub 64-szesnastkowe znaki skrótów SHA-256. Oba odciski palca są udostępniane usłudze IoT Hub w momencie rejestracji urządzenia.

Jeśli nie masz dostępnych certyfikatów, możesz utworzyć certyfikaty demonstracyjne, aby przetestować funkcje urządzeń usługi IoT Edge. Postępuj zgodnie z instrukcjami w tym artykule, aby skonfigurować skrypty tworzenia certyfikatów, utworzyć certyfikat głównego urzędu certyfikacji, a następnie utworzyć dwa certyfikaty tożsamości urządzeń usługi IoT Edge.

Jednym ze sposobów pobrania odcisku palca z certyfikatu jest następujące polecenie openssl:

openssl x509 -in <certificate filename>.pem -text -fingerprint

Rejestrowanie własnego urządzenia

Aby zarejestrować urządzenie, w zależności od preferencji, możesz użyć witryny Azure Portal, programu Visual Studio Code lub interfejsu wiersza polecenia platformy Azure.

W Twoim centrum IoT w portalu Azure, urządzenia IoT Edge są tworzone i zarządzane oddzielnie od urządzeń IoT, które nie są wyposażone w funkcje brzegowe.

  1. Zaloguj się do portalu Azure i przejdź do swojego centrum IoT.

  2. W okienku po lewej stronie wybierz pozycję Urządzenia z menu, a następnie wybierz pozycję Dodaj urządzenie.

  3. Na stronie Tworzenie urządzenia podaj następujące informacje:

    • Utwórz opisowy identyfikator urządzenia. Zanotuj ten identyfikator urządzenia, ponieważ będzie on używany później.
    • Zaznacz pole wyboru Urządzenie IoT Edge.
    • Wybierz pozycję X.509 Self-Signed jako typ uwierzytelniania.
    • Podaj odciski palca certyfikatu tożsamości podstawowej i pomocniczej. Wartości odcisku palca to 40-szesnastkowe znaki skrótów SHA-1 lub 64-szesnastkowe znaki skrótów SHA-256.
  4. Wybierz Zapisz.

Po zarejestrowaniu urządzenia w usłudze IoT Hub pobierz informacje używane do ukończenia instalacji i aprowizacji środowiska uruchomieniowego usługi IoT Edge.

Wyświetlanie zarejestrowanych urządzeń i pobieranie informacji konfiguracyjnych

Urządzenia korzystające z uwierzytelniania certyfikatu X.509 wymagają nazwy centrum IoT Hub, nazwy urządzenia i plików certyfikatów w celu ukończenia instalacji i aprowizacji środowiska uruchomieniowego usługi IoT Edge.

Urządzenia z technologią edge, które łączą się z węzłem IoT, są wyświetlane na stronie Urządzenia. Listę można filtrować według typu urządzenia IoT Edge .

Zrzut ekranu przedstawiający wyświetlanie wszystkich urządzeń usługi IoT Edge w twoim centrum IoT.

Instalowanie usługi IoT Edge

W tej sekcji przygotujesz maszynę wirtualną z systemem Linux lub urządzenie fizyczne dla usługi IoT Edge. Następnie zainstalujesz przeglądarkę IoT Edge.

Uruchom następujące polecenia, aby dodać repozytorium pakietów, a następnie dodaj klucz podpisywania pakietu firmy Microsoft do listy zaufanych kluczy.

Ważne

30 czerwca 2022 r. urządzenie Raspberry Pi OS Stretch zostało wycofane z listy pomocy technicznej systemu operacyjnego Tier 1. Aby uniknąć potencjalnych luk w zabezpieczeniach, zaktualizuj system operacyjny hosta do Bullseye.

Instalowanie można wykonać za pomocą kilku poleceń. Otwórz terminal i uruchom następujące polecenia:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

Uwaga / Notatka

Pakiety oprogramowania usługi Azure IoT Edge podlegają postanowieniom licencyjnym znajdującym się w każdym pakiecie (usr/share/doc/{package-name} lub LICENSE katalogu). Przeczytaj postanowienia licencyjne przed użyciem pakietu. Instalacja i użycie pakietu stanowi akceptację niniejszych warunków. Jeśli nie zgadzasz się z postanowieniami licencyjnymi, nie używaj tego pakietu.

Zainstaluj silnik kontenera

Usługa Azure IoT Edge korzysta ze środowiska uruchomieniowego kontenera zgodnego z technologią OCI. W przypadku scenariuszy produkcyjnych zalecamy użycie silnika Moby. Silnik Moby jest jedynym oficjalnie wspieranym silnikiem kontenerów w usłudze IoT Edge. Obrazy kontenerów Docker CE/EE są zgodne ze środowiskiem uruchomieniowym Moby.

Zainstaluj silnik Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

Po pomyślnym zainstalowaniu silnika Moby skonfiguruj go do używania sterownika logowania local jako mechanizmu logującego. Aby dowiedzieć się więcej na temat konfiguracji rejestrowania, zobacz Lista kontrolna wdrażania produkcyjnego.

  • Utwórz lub otwórz plik konfiguracji demona platformy Docker pod adresem /etc/docker/daemon.json.

  • Ustaw domyślny sterownik rejestrowania na sterownik rejestrowania local, jak pokazano w poniższym przykładzie.

       {
          "log-driver": "local"
       }
    
  • Uruchom ponownie silnik kontenera, aby zmiany zaczęły obowiązywać.

    sudo systemctl restart docker
    

    Wskazówka

    Jeśli podczas instalowania silnika kontenerowego Moby wystąpią błędy, sprawdź zgodność jądra systemu Linux z Moby. Niektórzy producenci urządzeń wbudowanych dostarczają obrazy urządzeń, które zawierają niestandardowe jądra systemu Linux, bez funkcji wymaganych do zgodności z silnikiem kontenerów. Uruchom następujące polecenie, które używa skryptu check-config dostarczonego przez program Moby, aby sprawdzić konfigurację jądra:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    W danych wyjściowych skryptu sprawdź, czy wszystkie elementy w obszarze Generally Necessary i Network Drivers są włączone. Jeśli brakuje funkcji, włącz je, ponownie skompilując jądro ze źródła i wybierając skojarzone moduły do włączenia w odpowiedniej konfiguracji jądra. Podobnie, jeśli używasz generatora konfiguracji jądra, takiego jak defconfig lub menuconfig, znajdź i włącz odpowiednie funkcje i odpowiednio skompiluj jądro. Po wdrożeniu nowo zmodyfikowanego jądra ponownie uruchom skrypt check-config, aby sprawdzić, czy wszystkie wymagane funkcje zostały pomyślnie włączone.

Instalowanie środowiska uruchomieniowego usługi IoT Edge

Demon zabezpieczeń usługi IoT Edge zapewnia i utrzymuje standardy zabezpieczeń na urządzeniu usługi IoT Edge. Demon uruchamia się na każdym rozruchu i uruchamia urządzenie, uruchamiając resztę środowiska uruchomieniowego usługi IoT Edge.

Kroki opisane w tej sekcji reprezentują typowy proces instalowania najnowszej wersji na urządzeniu z połączeniem internetowym. Jeśli musisz zainstalować określoną wersję, taką jak wersja wstępna, lub zainstalować ją w trybie offline, wykonaj kroki instalacji w trybie offline lub określonej wersji w dalszej części tego artykułu.

Zainstaluj program IoT Edge w wersji 1.1.* wraz z pakietem libiothsm-std:

sudo apt-get update; \
  sudo apt-get install iotedge

Uwaga / Notatka

Usługa IoT Edge w wersji 1.1 to gałąź wsparcia długoterminowego usługi IoT Edge. Jeśli korzystasz ze starszej wersji, zalecamy zainstalowanie lub zaktualizowanie do najnowszej poprawki, ponieważ starsze wersje nie są już obsługiwane.

Skonfiguruj urządzenie przy użyciu jego tożsamości w chmurze

Teraz, gdy silnik kontenera i środowisko uruchomieniowe IoT Edge są zainstalowane na Twoim urządzeniu, możesz przejść do następnego kroku: skonfigurować urządzenie z jego tożsamością chmury i informacjami uwierzytelniającymi.

Na urządzeniu usługi IoT Edge otwórz plik konfiguracji.

sudo nano /etc/iotedge/config.yaml

Znajdź sekcję Konfiguracji aprowizacji w pliku i odkomentuj sekcję Ręczna konfiguracja aprowizacji przy użyciu certyfikatu tożsamości X.509. Upewnij się, że wszystkie inne sekcje konfiguracji są zakomentowane. Upewnij się, że linia aprowizacji : nie ma wcześniejszego odstępu i że zagnieżdżone elementy są wcięte przez dwie spacje.

# Manual provisioning configuration using an x.509 identity certificate
provisioning:
  source: "manual"
  authentication:
    method: "x509"
    iothub_hostname: "REQUIRED_IOTHUB_HOSTNAME"
    device_id: "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
    identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE"
    identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"

Zaktualizuj następujące pola:

  • iothub_hostname: Nazwa hosta centrum IoT Hub, z którym urządzenie będzie się łączyć. Na przykład {IoT hub name}.azure-devices.net.
  • device_id: identyfikator podany podczas rejestrowania urządzenia.
  • identity_cert: URI certyfikatu tożsamości na urządzeniu. Na przykład file:///path/identity_certificate.pem.
  • identity_pk: URI do pliku klucza prywatnego dla podanego certyfikatu tożsamości. Na przykład file:///path/identity_key.pem.

Zapisz i zamknij plik.

CTRL + X, Y, Enter

Po wprowadzeniu informacji o aprowizacji w pliku konfiguracji uruchom ponownie demona:

sudo systemctl restart iotedge

Weryfikowanie pomyślnej konfiguracji

Sprawdź, czy środowisko uruchomieniowe zostało pomyślnie zainstalowane i skonfigurowane na urządzeniu usługi IoT Edge.

Wskazówka

Uruchomienie poleceń iotedge wymaga podniesionych uprawnień. Po wylogowaniu się z komputera i ponownym zalogowaniu się do niego po raz pierwszy od zainstalowania środowiska uruchomieniowego usługi IoT Edge Twoje uprawnienia zostaną automatycznie zaktualizowane. Do tego czasu używaj sudo przed poleceniami.

Sprawdź, czy usługa systemowa usługi IoT Edge jest uruchomiona.

sudo systemctl status iotedge

Jeśli musisz rozwiązać problemy z usługą, pobierz dzienniki usługi.

journalctl -u iotedge

check Użyj narzędzia , aby zweryfikować konfigurację i stan połączenia urządzenia.

sudo iotedge check

Wskazówka

Zawsze używaj sudo, aby uruchomić narzędzie do sprawdzania, nawet po zaktualizowaniu uprawnień. Narzędzie wymaga podniesionych uprawnień, aby uzyskać dostęp do pliku konfiguracji w celu zweryfikowania stanu konfiguracji.

Uwaga / Notatka

Na nowo aprowizowanych urządzeniach może zostać wyświetlony błąd związany z usługą IoT Edge Hub:

× gotowość produkcyjna: katalog magazynu Edge Hub jest zachowywany w systemie plików hosta: błąd

Nie można sprawdzić bieżącego stanu kontenera edgeHub

Ten błąd jest oczekiwany na nowo zaaprowizowanych urządzeniach, ponieważ moduł usługi IoT Edge Hub nie jest uruchomiony. Aby rozwiązać ten problem, w usłudze IoT Hub ustaw moduły dla urządzenia i utwórz wdrożenie. Utworzenie wdrożenia urządzenia powoduje uruchomienie modułów na urządzeniu, w tym modułu IoT Edge Hub.

Wyświetl wszystkie moduły uruchomione na urządzeniu usługi IoT Edge. Po uruchomieniu usługi po raz pierwszy powinien być uruchomiony tylko moduł edgeAgent. Moduł edgeAgent działa domyślnie i pomaga zainstalować i uruchomić dodatkowe moduły wdrażane na urządzeniu.

sudo iotedge list

Podczas tworzenia nowego urządzenia usługi IoT Edge zostanie wyświetlony kod stanu 417 -- The device's deployment configuration is not set w portalu Azure. Ten stan jest normalny i oznacza, że urządzenie jest gotowe do otrzymania wdrożenia modułu.

Instalacja w trybie offline lub określonej wersji (opcjonalnie)

Kroki opisane w tej sekcji dotyczą scenariuszy, które nie są objęte standardowymi krokami instalacji. Mogą to być na przykład:

  • Instalowanie usługi IoT Edge w trybie offline
  • Instalowanie wersji kandydata do wydania

Wykonaj kroki opisane w tej sekcji, jeśli chcesz zainstalować określoną wersję środowiska uruchomieniowego usługi Azure IoT Edge, która nie jest dostępna za pośrednictwem menedżera pakietów. Lista pakietów firmy Microsoft zawiera tylko ograniczony zestaw najnowszych wersji i ich podrzędnych wersji, dlatego te kroki dotyczą wszystkich osób, które chcą zainstalować starszą wersję lub wersję kandydata do wydania.

Za pomocą poleceń curl można pobrać pliki składników bezpośrednio z repozytorium GitHub projektu IoT Edge.

  1. Przejdź do wydań Azure IoT Edge i znajdź wersję wydania, którą chcesz wybrać.

  2. Rozwiń sekcję Zasoby dla tej wersji.

  3. Każda wersja powinna zawierać nowe pliki demona zabezpieczeń usługi IoT Edge i modułu hsmlib. Jeśli zamierzasz zainstalować usługę IoT Edge na urządzeniu w trybie offline, pobierz te pliki z wyprzedzeniem. W przeciwnym razie użyj następujących poleceń, aby zaktualizować te składniki.

    1. Znajdź plik libiothsm-std zgodny z architekturą urządzenia IoT Edge. Kliknij prawym przyciskiem myszy link do pliku i skopiuj adres linku.

    2. Użyj skopiowanego linku w poniższym poleceniu, aby zainstalować wersję modułu hsmlib:

      curl -L libiothsm-std_link_here -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
      
    3. Znajdź plik iotedge zgodny z architekturą urządzenia usługi IoT Edge. Kliknij prawym przyciskiem myszy link do pliku i skopiuj adres linku.

    4. Użyj skopiowanego linku w poniższym poleceniu, aby zainstalować wersję demona zabezpieczeń usługi IoT Edge.

      curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
      

Teraz, gdy aparat kontenera i środowisko uruchomieniowe usługi IoT Edge są zainstalowane na urządzeniu, możesz przystąpić do następnego kroku, czyli aprovisionować urządzenie za pomocą tożsamości w chmurze.

Odinstalowywanie usługi IoT Edge

Jeśli chcesz usunąć instalację usługi IoT Edge z urządzenia, użyj następujących poleceń.

Usuń środowisko uruchomieniowe usługi IoT Edge.

sudo apt-get autoremove iotedge

Po usunięciu środowiska uruchomieniowego usługi IoT Edge wszystkie utworzone przez niego kontenery zostaną zatrzymane, ale nadal istnieją na urządzeniu. Wyświetl wszystkie kontenery, aby zobaczyć, które z nich pozostają.

sudo docker ps -a

Usuń kontenery z urządzenia, w tym dwa kontenery środowiska uruchomieniowego.

sudo docker rm -f <container name>

Na koniec usuń środowisko uruchomieniowe kontenera z urządzenia.

sudo apt-get autoremove --purge moby-engine

Dalsze kroki

Kontynuuj wdrażanie modułów usługi IoT Edge, aby dowiedzieć się, jak wdrażać moduły na urządzeniu.