Tworzenie i aprowizowanie usługi IoT Edge dla systemu Linux na urządzeniu z systemem Windows przy użyciu certyfikatów X.509

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

Ważne

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

Ten artykuł zawiera kompleksowe instrukcje dotyczące rejestrowania i aprowizacji usługi IoT Edge dla systemu Linux na urządzeniu z systemem Windows.

Każde urządzenie, które łączy się z centrum IoT Hub, ma identyfikator urządzenia używany do śledzenia komunikacji między chmurą a urządzeniem i chmurą. 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 i przedstawia klucz do usługi IoT Hub podczas uwierzytelniania.

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

  • Podpis własny X.509: 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 usługi IoT Edge dla systemu Linux na urządzeniu z systemem Windows przy użyciu kluczy symetrycznych.

Uwaga

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 usługi IoT Edge dla systemu Linux w systemie Windows. 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 lub może być konieczne zainstalowanie:

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

Wymagania dotyczące urządzenia

Urządzenie z systemem Windows z następującymi minimalnymi wymaganiami:

  • Wymagania systemowe

    • Windows 101/11 (Pro, Enterprise, IoT Enterprise)
    • Windows Server 20191/2022
      1 Windows 10 i Windows Server 2019 minimalna kompilacja 17763 z zainstalowanymi wszystkimi bieżącymi aktualizacjami zbiorczymi.
  • Wymagania sprzętowe

    • Minimalna ilość wolnej pamięci: 1 GB
    • Minimalna ilość wolnego miejsca na dysku: 10 GB
  • Obsługa wirtualizacji

  • Obsługa sieci

    • System Windows Server nie jest wyposażony w przełącznik domyślny. Przed wdrożeniem platformy EFLOW na urządzeniu z systemem Windows Server należy utworzyć przełącznik wirtualny. Aby uzyskać więcej informacji, zobacz Tworzenie przełącznika wirtualnego dla systemu Linux w systemie Windows.
    • Wersje programu Windows Desktop są dostarczane z przełącznikiem domyślnym, który może być używany do instalacji systemu EFLOW. W razie potrzeby możesz utworzyć własny niestandardowy przełącznik wirtualny.

Napiwek

Jeśli chcesz użyć modułów z przyspieszonym procesorem GPU systemu Linux w usłudze Azure IoT Edge dla systemu Linux we wdrożeniu systemu Windows, należy rozważyć kilka opcji konfiguracji.

Konieczne będzie zainstalowanie odpowiednich sterowników w zależności od architektury procesora GPU i może być konieczne uzyskanie dostępu do kompilacji niejawnego programu testów systemu Windows. Aby określić wymagania konfiguracyjne i spełnić te wymagania wstępne, zobacz Przyspieszanie procesora GPU dla usługi Azure IoT Edge dla systemu Linux w systemie Windows.

Upewnij się, że nadszedł czas, aby spełnić wymagania wstępne dotyczące przyspieszania procesora GPU. Jeśli zdecydujesz się na przyspieszenie procesora GPU podczas instalacji, konieczne będzie ponowne uruchomienie procesu instalacji.

Narzędzia deweloperskie

Przygotuj urządzenie docelowe do instalacji usługi Azure IoT Edge dla systemu Linux w systemie Windows i wdrożenia maszyny wirtualnej z systemem Linux:

  1. Ustaw zasady wykonywania na urządzeniu docelowym na wartość AllSigned. Bieżące zasady wykonywania można sprawdzić w wierszu polecenia programu PowerShell z podwyższonym poziomem uprawnień przy użyciu następującego polecenia:

    Get-ExecutionPolicy -List
    

    Jeśli zasady wykonywania elementu local machine nie AllSignedsą , można ustawić zasady wykonywania przy użyciu:

    Set-ExecutionPolicy -ExecutionPolicy AllSigned -Force
    

Aby uzyskać więcej informacji na temat modułu Azure IoT Edge dla systemu Linux w programie Windows PowerShell, zobacz dokumentację funkcji programu PowerShell.

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 usługi IoT Edge przy użyciu certyfikatów X.509 należy użyć 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. Jest to certyfikat liścia, 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 rotacji certyfikatów potrzebne są dwa certyfikaty tożsamości urządzenia. Najlepszym rozwiązaniem jest przygotowanie dwóch różnych certyfikatów tożsamości urządzeń z różnymi datami wygaśnięcia. Jeśli jeden certyfikat wygaśnie, drugi jest nadal ważny i daje czas na wymianę wygasłego certyfikatu.

    Jeden zestaw plików certyfikatów i kluczy jest dostarczany do środowiska uruchomieniowego usługi IoT Edge. Podczas tworzenia certyfikatów tożsamości urządzenia ustaw nazwę pospolitą certyfikatu (CN) przy użyciu identyfikatora urządzenia, który ma mieć urządzenie w centrum IoT Hub.

  • Odciski palca pobrane z obu certyfikatów tożsamości urządzenia. Usługa IoT Hub wymaga dwóch odcisków palca podczas rejestrowania urządzenia usługi IoT Edge. Do rejestracji można użyć tylko jednego certyfikatu. Aby użyć pojedynczego certyfikatu, ustaw ten sam odcisk palca certyfikatu zarówno dla podstawowych, jak i pomocniczych odcisków palca podczas rejestrowania 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.

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

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

    Odcisk palca jest uwzględniony w danych wyjściowych tego polecenia. Na przykład:

    SHA1 Fingerprint=D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12
    

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 i utworzyć certyfikat tożsamości urządzenia usługi IoT Edge. Na potrzeby testowania można utworzyć pojedynczy certyfikat tożsamości urządzenia i użyć tego samego odcisku palca zarówno dla podstawowych, jak i pomocniczych wartości odcisku palca podczas rejestrowania urządzenia w usłudze IoT Hub.

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 centrum IoT w witrynie Azure Portal urządzenia usługi IoT Edge są tworzone i zarządzane oddzielnie od urządzeń IoT, które nie są włączone.

  1. Zaloguj się do witryny Azure Portal i przejdź do centrum IoT Hub.

  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 usługi 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. Witryna Azure Portal obsługuje tylko wartości szesnastkowe. Usuń separatory kolumn i spacje z wartości odcisku palca przed wprowadzeniem ich w portalu. Na przykład D2:68:D9:04:9F:1A:4D:6A:FD:84:77:68:7B:C6:33:C0:32:37:51:12 parametr jest wprowadzany jako D268D9049F1A4D6AFD8477687BC633C032375112.

    Napiwek

    Jeśli testujesz i chcesz użyć jednego certyfikatu, możesz użyć tego samego certyfikatu zarówno dla podstawowych, jak i pomocniczych odcisków palców.

  4. Wybierz pozycję 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 o aprowizacji

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 obsługą krawędzi, które łączą się z centrum IoT Hub, są wyświetlane na stronie Urządzenia . Listę można filtrować według typu urządzenia IoT Edge.

Instalowanie usługi IoT Edge

Wdróż usługę Azure IoT Edge dla systemu Linux w systemie Windows na urządzeniu docelowym.

Uwaga

W poniższym procesie programu PowerShell opisano sposób wdrażania usługi IoT Edge dla systemu Linux na urządzeniu lokalnym. Aby wdrożyć na zdalnym urządzeniu docelowym przy użyciu programu PowerShell, możesz użyć zdalnego programu PowerShell do nawiązania połączenia z urządzeniem zdalnym i zdalnie uruchomić te polecenia na tym urządzeniu.

  1. W sesji programu PowerShell z podwyższonym poziomem uprawnień uruchom jedną z następujących poleceń w zależności od architektury urządzenia docelowego, aby pobrać usługę IoT Edge dla systemu Linux w systemie Windows.

    • X64/AMD64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_X64" -OutFile $msiPath
      
    • ARM64

      $msiPath = $([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))
      $ProgressPreference = 'SilentlyContinue'
      Invoke-WebRequest "https://aka.ms/AzEFLOWMSI_1_4_LTS_ARM64" -OutFile $msiPath
      
  2. Zainstaluj usługę IoT Edge dla systemu Linux w systemie Windows na urządzeniu.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn"
    

    Niestandardową usługę IoT Edge dla systemu Linux można określić w katalogach instalacji systemu Windows i VHDX, dodając INSTALLDIR="<FULLY_QUALIFIED_PATH>" parametry i VHDXDIR="<FULLY_QUALIFIED_PATH>" do polecenia instalacji. Jeśli na przykład chcesz użyć folderu D:\EFLOW do instalacji i D:\EFLOW-VHDX dla dysku VHDX, możesz użyć następującego polecenia cmdlet programu PowerShell.

    Start-Process -Wait msiexec -ArgumentList "/i","$([io.Path]::Combine($env:TEMP, 'AzureIoTEdge.msi'))","/qn","INSTALLDIR=D:\EFLOW", "VHDXDIR=D:\EFLOW-VHDX"
    
  3. Ustaw zasady wykonywania na urządzeniu docelowym na AllSigned wartość , jeśli jeszcze nie jest. Zobacz wymagania wstępne programu PowerShell dla poleceń, aby sprawdzić bieżące zasady wykonywania i ustawić zasady wykonywania na AllSigned.

  4. Utwórz usługę IoT Edge dla systemu Linux we wdrożeniu systemu Windows. Wdrożenie tworzy maszynę wirtualną z systemem Linux i instaluje środowisko uruchomieniowe usługi IoT Edge.

    Deploy-Eflow
    

    Napiwek

    Domyślnie Deploy-Eflow polecenie tworzy maszynę wirtualną z systemem Linux z 1 GB pamięci RAM, 1 rdzeniem procesorów wirtualnych i 16 GB miejsca na dysku. Jednak zasoby wymagane przez maszynę wirtualną są bardzo zależne od wdrożonych obciążeń. Jeśli maszyna wirtualna nie ma wystarczającej ilości pamięci do obsługi obciążeń, uruchomienie nie powiedzie się.

    Dostępne zasoby maszyny wirtualnej można dostosować przy użyciu Deploy-Eflow opcjonalnych parametrów polecenia. Jest to wymagane do wdrożenia rozwiązania EFLOW na urządzeniu z minimalnymi wymaganiami sprzętowymi.

    Na przykład poniższe polecenie tworzy maszynę wirtualną z 1 rdzeniem procesorów wirtualnych, 1 GB pamięci RAM (reprezentowanym w MB) i 2 GB miejsca na dysku:

    Deploy-Eflow -cpuCount 1 -memoryInMB 1024 -vmDataSize 2
    

    Aby uzyskać informacje o wszystkich dostępnych parametrach opcjonalnych, zobacz Funkcje programu PowerShell dla usługi IoT Edge dla systemu Linux w systemie Windows.

    Ostrzeżenie

    Domyślnie maszyna wirtualna EFLOW z systemem Linux nie ma konfiguracji DNS. Wdrożenia korzystające z protokołu DHCP spróbują uzyskać konfigurację DNS propagowaną przez serwer DHCP. Sprawdź konfigurację dns, aby upewnić się, że łączność z Internetem. Aby uzyskać więcej informacji, zobacz AzEFLOW-DNS.

    Procesor GPU można przypisać do wdrożenia, aby umożliwić moduły z przyspieszonym procesorem GPU dla systemu Linux. Aby uzyskać dostęp do tych funkcji, należy zainstalować wymagania wstępne opisane w artykule Przyspieszanie procesora GPU dla usługi Azure IoT Edge dla systemu Linux w systemie Windows.

    Aby użyć przekazywania procesora GPU, dodaj parametry gpuName, gpuPassthroughType i gpuCount do polecenia Deploy-Eflow . Aby uzyskać informacje o wszystkich dostępnych parametrach opcjonalnych, zobacz Funkcje programu PowerShell dla usługi IoT Edge dla systemu Linux w systemie Windows.

    Ostrzeżenie

    Włączenie przekazywania urządzeń sprzętowych może zwiększyć ryzyko bezpieczeństwa. Firma Microsoft zaleca sterownik ograniczania ryzyka urządzenia od dostawcy procesora GPU, jeśli ma to zastosowanie. Aby uzyskać więcej informacji, zobacz Wdrażanie urządzeń graficznych przy użyciu dyskretnego przypisania urządzenia.

  5. Wprowadź wartość "Y", aby zaakceptować postanowienia licencyjne.

  6. W zależności od preferencji wprowadź wartość "O" lub "R", aby włączyć lub wyłączyć opcjonalne dane diagnostyczne.

  7. Po zakończeniu wdrażania okno programu PowerShell zgłasza pomyślne wdrożenie.

    Pomyślne wdrożenie powiedzie

    Po pomyślnym wdrożeniu możesz przystąpić do aprowizowania urządzenia.

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

Wszystko jest gotowe do skonfigurowania urządzenia przy użyciu informacji o tożsamości w chmurze i uwierzytelniania.

Aby aprowizować urządzenie przy użyciu certyfikatów X.509, musisz mieć nazwę centrum IoT, identyfikator urządzenia oraz ścieżki bezwzględne do certyfikatu tożsamości i klucza prywatnego na maszynie hosta z systemem Windows.

Certyfikat tożsamości urządzenia i jego pasujący klucz prywatny są gotowe na urządzeniu docelowym. Znajomość ścieżki bezwzględnej do obu plików.

Uruchom następujące polecenie w sesji programu PowerShell z podwyższonym poziomem uprawnień na urządzeniu docelowym. Zastąp tekst zastępczy własnymi wartościami.

Provision-EflowVm -provisioningType ManualX509 -iotHubHostname "HUB_HOSTNAME_HERE" -deviceId "DEVICE_ID_HERE" -identityCertPath "ABSOLUTE_PATH_TO_IDENTITY_CERT_HERE" -identityPrivKeyPath "ABSOLUTE_PATH_TO_PRIVATE_KEY_HERE"

Aby uzyskać więcej informacji na temat Provision-EflowVM polecenia, zobacz Funkcje programu PowerShell dla usługi IoT Edge dla systemu Linux w systemie Windows.

Weryfikowanie pomyślnej konfiguracji

Sprawdź, czy usługa IoT Edge dla systemu Linux w systemie Windows została pomyślnie zainstalowana i skonfigurowana na urządzeniu usługi IoT Edge.

  1. Zaloguj się do usługi IoT Edge dla systemu Linux na maszynie wirtualnej z systemem Windows przy użyciu następującego polecenia w sesji programu PowerShell:

    Connect-EflowVm
    

    Uwaga

    Jedynym kontem dozwolonym przez protokół SSH na maszynie wirtualnej jest użytkownik, który go utworzył.

  2. Po zalogowaniu się możesz sprawdzić listę uruchomionych modułów usługi IoT Edge przy użyciu następującego polecenia systemu Linux:

    sudo iotedge list
    
  3. Jeśli musisz rozwiązać problemy z usługą IoT Edge, użyj następujących poleceń systemu Linux.

    1. Pobierz dzienniki usługi.

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

      sudo iotedge check
      

    Uwaga

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

    × gotowości produkcyjnej: katalog magazynu usługi Edge Hub jest utrwalany 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 usługi IoT Edge Hub.

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

Odinstalowywanie usługi IoT Edge dla systemu Linux w systemie Windows

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

  1. Otwieranie Ustawienia w systemie Windows
  2. Wybierz pozycję Dodaj lub usuń programy
  3. Wybieranie aplikacji usługi Azure IoT Edge
  4. Wybierz pozycję Odinstaluj

Następne kroki