Samouczek: konfigurowanie rejestracji za pośrednictwem bezpiecznego serwera transportu dla usługi Azure IoT Edge
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
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.
Za pomocą usługi Azure IoT Edge można skonfigurować urządzenia tak, aby używały serwera rejestracji za pośrednictwem protokołu Secure Transport (EST) do zarządzania certyfikatami x509.
Ten samouczek przeprowadzi Cię przez proces hostowania testowego serwera EST i konfigurowania urządzenia usługi IoT Edge na potrzeby rejestracji i odnawiania certyfikatów x509. Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Tworzenie i hostowanie testowego serwera EST
- Konfigurowanie rejestracji grupy usługi DPS
- Konfigurowanie urządzenia
Wymagania wstępne
- Istniejące urządzenie usługi IoT Edge z zainstalowanym najnowszym środowiskiem uruchomieniowym usługi Azure IoT Edge. Jeśli musisz utworzyć urządzenie testowe, ukończ przewodnik Szybki start: wdrażanie pierwszego modułu usługi IoT Edge na wirtualnym urządzeniu z systemem Linux.
- Urządzenie usługi IoT Edge wymaga obsługi środowiska uruchomieniowego usługi Azure IoT Edge w wersji 1.2 lub nowszej. Środowisko uruchomieniowe usługi Azure IoT Edge w wersji 1.3 lub nowszej jest wymagane do odnowienia certyfikatu EST.
- Usługa IoT Hub Device Provisioning Service (DPS) połączona z usługą IoT Hub. Aby uzyskać informacje na temat konfigurowania usługi DPS, zobacz Szybki start: konfigurowanie usługi IoT Hub Device Provisioning przy użyciu witryny Azure Portal.
Uwaga
Aby można było używać usług EST i IoT Edge do automatycznego wystawiania i odnawiania certyfikatu tożsamości urządzenia, co jest zalecane w środowisku produkcyjnym, usługa IoT Edge musi aprowizować jako część grupy rejestracji opartej na urzędach certyfikacji usługi DPS. Inne metody aprowizacji, w tym ręczne aprowizowanie X.509 w usłudze IoT Hub i usłudze DPS z rejestracją indywidualną, nie obsługują automatycznego odnawiania certyfikatu tożsamości urządzenia.
Co to jest rejestracja za pośrednictwem bezpiecznego transportu?
Rejestracja za pośrednictwem protokołu Secure Transport (EST) to protokół kryptograficzny, który automatyzuje wystawianie certyfikatów x.509. Jest on używany dla klientów infrastruktury kluczy publicznych (PKI), takich jak usługa IoT Edge, która wymaga certyfikatów klienta skojarzonych z urzędem certyfikacji. EST zastępuje potrzebę ręcznego zarządzania certyfikatami, co może być ryzykowne i podatne na błędy.
Serwer EST
W przypadku wystawiania i odnawiania certyfikatów potrzebny jest serwer EST dostępny dla urządzeń.
Ważne
W przypadku rozwiązań klasy korporacyjnej należy rozważyć: GlobalSign IoT Edge Enroll lub DigiCert IoT Menedżer urządzeń.
Na potrzeby testowania i programowania można użyć testowego serwera EST. W tym samouczku utworzymy testowy serwer EST.
Uruchamianie serwera EST na urządzeniu
Aby szybko rozpocząć pracę, w tym samouczku przedstawiono kroki wdrażania prostego serwera EST w kontenerze lokalnie na urządzeniu usługi IoT Edge. Ta metoda jest najprostszym podejściem do wypróbowania.
Plik Dockerfile używa systemu Ubuntu 18.04, biblioteki Cisco o nazwie libest
i przykładowego kodu serwera. Jest on skonfigurowany przy użyciu następującego ustawienia, które można zmienić:
- Główny urząd certyfikacji ważny przez 20 lat
- Certyfikat serwera EST ważny przez 10 lat
- Ustaw wartość domyślną certyfikatu na 1, aby przetestować odnawianie est
- Serwer EST działa lokalnie na urządzeniu usługi IoT Edge w kontenerze
Uwaga
Nie używaj tego pliku Dockerfile w środowisku produkcyjnym.
Nawiąż połączenie z urządzeniem, na przykład przy użyciu protokołu SSH, na którym zainstalowano usługę IoT Edge.
Utwórz plik o nazwie
Dockerfile
(z uwzględnieniem wielkości liter) i dodaj przykładową zawartość przy użyciu ulubionego edytora tekstów.Napiwek
Jeśli chcesz hostować serwer EST w usłudze Azure Container Instance, zmień
myestserver.westus.azurecontainer.io
na nazwę DNS serwera EST. Podczas wybierania nazwy DNS należy pamiętać, że etykieta DNS dla wystąpienia kontenera platformy Azure musi mieć długość co najmniej pięciu znaków.# DO NOT USE IN PRODUCTION - Use only for testing # FROM ubuntu:18.04 RUN apt update && apt install -y apache2-utils git openssl libssl-dev build-essential && \ git clone https://github.com/cisco/libest.git && cd libest && \ ./configure --disable-safec && make install && \ rm -rf /src && apt remove --quiet -y libssl-dev build-essential && \ apt autoremove -y && apt clean -y && apt autoclean -y && \ rm -rf /var/lib/apt /tmp/* /var/tmp/* WORKDIR /libest/example/server/ # Setting the root CA expiration to 20 years RUN sed -i "s|-days 365|-days 7300 |g" ./createCA.sh ## If you want to host your EST server remotely (for example, an Azure Container Instance), ## change myestserver.westus.azurecontainer.io to the fully qualified DNS name of your EST server ## OR, change the IP address ## and uncomment the corresponding line. # RUN sed -i "s|DNS.2 = ip6-localhost|DNS.2 = myestserver.westus.azurecontainer.io|g" ./ext.cnf # RUN sed -i "s|IP.2 = ::1|IP.2 = <YOUR EST SERVER IP ADDRESS>|g" ./ext.cnf # Set EST server certificate to be valid for 10 years RUN sed -i "s|-keyout \$EST_SERVER_PRIVKEY -subj|-keyout \$EST_SERVER_PRIVKEY -days 7300 -subj |g" ./createCA.sh # Create the CA RUN echo 1 | ./createCA.sh # Set cert default-days to 1 to show EST renewal RUN sed -i "s|default_days = 365|default_days = 1 |g" ./estExampleCA.cnf # The EST server listens on port 8085 by default # Uncomment to change the port to 443 or something else. If changed, EXPOSE that port instead of 8085. # RUN sed -i "s|estserver -c|estserver -p 443 -c |g" ./runserver.sh EXPOSE 8085 CMD ./runserver.sh
W katalogu zawierającym
Dockerfile
plik skompiluj obraz z przykładowego pliku Dockerfile.sudo docker build . --tag est
Uruchom kontener i uwidocznij port 8085 kontenera na porcie 8085 na hoście.
sudo docker run -d -p 8085:8085 est
Teraz serwer EST jest uruchomiony i można uzyskać do niego dostęp przy użyciu
localhost
portu 8085. Sprawdź, czy jest dostępna, uruchamiając polecenie , aby wyświetlić certyfikat serwera.openssl s_client -showcerts -connect localhost:8085
Powinny zostać wyświetlone
-----BEGIN CERTIFICATE-----
dane wyjściowe w połowie. Pobieranie certyfikatu sprawdza, czy serwer jest osiągalny i może przedstawić certyfikat.
Napiwek
Aby uruchomić ten kontener w chmurze, skompiluj obraz i wypchnij go do usługi Azure Container Registry. Następnie postępuj zgodnie z przewodnikiem Szybki start, aby wdrożyć w usłudze Azure Container Instance.
Pobieranie certyfikatu urzędu certyfikacji
Każde urządzenie wymaga certyfikatu urzędu certyfikacji skojarzonego z certyfikatem tożsamości urządzenia.
Na urządzeniu usługi IoT Edge utwórz
/var/aziot/certs
katalog, jeśli nie istnieje, a następnie zmień na niego katalog.# If the certificate directory doesn't exist, create, set ownership, and set permissions sudo mkdir -p /var/aziot/certs sudo chown aziotcs:aziotcs /var/aziot/certs sudo chmod 755 /var/aziot/certs # Change directory to /var/aziot/certs cd /var/aziot/certs
Pobierz certyfikat urzędu certyfikacji z serwera EST do katalogu i nadaj
/var/aziot/certs
mucacert.crt.pem
nazwę .openssl s_client -showcerts -verify 5 -connect localhost:8085 < /dev/null | sudo awk '/BEGIN/,/END/{ if(/BEGIN/){a++}; out="cert"a".pem"; print >out}' && sudo cp cert2.pem cacert.crt.pem
Certyfikaty powinny być własnością użytkownika usługi kluczy aziotcs. Ustaw własność na aziotcs dla wszystkich plików certyfikatów i ustaw uprawnienia. Aby uzyskać więcej informacji na temat własności i uprawnień certyfikatów, zobacz Wymagania dotyczące uprawnień.
# Give aziotcs ownership to certificates sudo chown -R aziotcs:aziotcs /var/aziot/certs # Read and write for aziotcs, read-only for others sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;
Aprowizuj urządzenie usługi IoT Edge przy użyciu usługi DPS
Użycie usługi Device Provisioning Service umożliwia automatyczne wystawianie i odnawianie certyfikatów z serwera EST w usłudze IoT Edge. W przypadku korzystania z serwera EST samouczka certyfikaty tożsamości wygasają w ciągu jednego dnia, wykonując ręczną aprowizację za pomocą usługi IoT Hub, ponieważ za każdym razem, gdy certyfikat wygaśnie, odcisk palca musi zostać ręcznie zaktualizowany w usłudze IoT Hub. Uwierzytelnianie urzędu certyfikacji usługi DPS z grupą rejestracji umożliwia odnawianie certyfikatów tożsamości urządzeń bez konieczności ręcznego wykonania kroków.
Przekazywanie certyfikatu urzędu certyfikacji do usługi DPS
Jeśli nie masz usługi Device Provisioning Service połączonej z usługą IoT Hub, zobacz Szybki start: konfigurowanie usługi IoT Hub Device Provisioning przy użyciu witryny Azure Portal.
cacert.crt.pem
Przenieś plik z urządzenia na komputer z dostępem do witryny Azure Portal, na przykład do komputera programistycznego. Łatwym sposobem transferu certyfikatu jest zdalne łączenie się z urządzeniem, wyświetlanie certyfikatu przy użyciu poleceniacat /var/aziot/certs/cacert.crt.pem
, kopiowanie całego danych wyjściowych i wklejanie zawartości do nowego pliku na komputerze dewelopera.W witrynie Azure Portal przejdź do swojego wystąpienia usługi IoT Hub Device Provisioning.
W obszarze Ustawienia wybierz pozycję Certyfikaty, a następnie pozycję +Dodaj.
Ustawienie Wartość Nazwa certyfikatu Podaj przyjazną nazwę certyfikatu urzędu certyfikacji Plik pem lub .cer certyfikatu Przejdź do cacert.crt.pem
serwera ESTUstawianie stanu certyfikatu na zweryfikowane podczas przekazywania Zaznacz pole wyboru Wybierz pozycję Zapisz.
Tworzenie grupy rejestracji
W witrynie Azure Portal przejdź do swojego wystąpienia usługi IoT Hub Device Provisioning.
W obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz pozycję Dodaj grupę rejestracji, a następnie wykonaj następujące kroki, aby skonfigurować rejestrację.
Na karcie Rejestracja i aprowizowanie wybierz następujące ustawienia:
Ustawienie Wartość Mechanizm zaświadczania Wybierz certyfikaty X.509 przekazane do tego wystąpienia usługi Device Provisioning Service Certyfikat podstawowy Wybierz certyfikat z listy rozwijanej Nazwa grupy Podaj przyjazną nazwę dla tej rejestracji grupy Stan aprowizacji Zaznacz pole wyboru Włącz tę rejestrację Na karcie Centra IoT wybierz swoją usługę IoT Hub z listy.
Na karcie Ustawienia urządzenia zaznacz pole wyboru Włącz usługę IoT Edge na aprowidowanych urządzeniach.
Inne ustawienia nie są istotne dla tego samouczka. Można zaakceptować ustawienia domyślne.
Wybierz pozycję Przejrzyj i utwórz.
Teraz, gdy rejestracja istnieje dla urządzenia, środowisko uruchomieniowe usługi IoT Edge może automatycznie zarządzać certyfikatami urządzeń dla połączonej usługi IoT Hub.
Konfigurowanie urządzenia usługi IoT Edge
Na urządzeniu usługi IoT Edge zaktualizuj plik konfiguracji usługi IoT Edge, aby używać certyfikatów urządzeń z serwera EST.
Otwórz plik konfiguracji usługi IoT Edge przy użyciu edytora. Na przykład użyj edytora
nano
, aby otworzyć/etc/aziot/config.toml
plik.sudo nano /etc/aziot/config.toml
Dodaj lub zastąp poniższe sekcje w pliku konfiguracji. Te ustawienia konfiguracji używają początkowo uwierzytelniania nazwy użytkownika i hasła w celu pobrania certyfikatu urządzenia z serwera EST. Certyfikat urządzenia służy do uwierzytelniania na serwerze EST na potrzeby przyszłych odnowień certyfikatów.
Zastąp następujący tekst zastępczy:
<DPS-ID-SCOPE>
zakresem identyfikatora usługi DPS połączonym z usługą IoT Hub zawierającą zarejestrowane urządzenie orazmyiotedgedevice
identyfikatorem urządzenia zarejestrowanym w usłudze Azure IoT Hub. Wartość Zakres identyfikatora można znaleźć na stronie Przegląd usługi DPS.# DPS provisioning with X.509 certificate # Replace with ID Scope from your DPS [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "<DPS-ID-SCOPE>" [provisioning.attestation] method = "x509" registration_id = "myiotedgedevice" [provisioning.attestation.identity_cert] method = "est" common_name = "myiotedgedevice" # Auto renewal settings for the identity cert # Available only from IoT Edge 1.3 and above [provisioning.attestation.identity_cert.auto_renew] rotate_key = false threshold = "80%" retry = "4%" # Trusted root CA certificate in the global EST options # Optional if the EST server's TLS certificate is already trusted by the system's CA certificates. [cert_issuance.est] trusted_certs = [ "file:///var/aziot/certs/cacert.crt.pem", ] # The default username and password for libest # Used for initial authentication to EST server # # Not recommended for production [cert_issuance.est.auth] username = "estuser" password = "estpwd" [cert_issuance.est.urls] default = "https://localhost:8085/.well-known/est"
Uwaga
W tym przykładzie usługa IoT Edge używa nazwy użytkownika i hasła do uwierzytelniania na serwerze EST za każdym razem, gdy musi uzyskać certyfikat. Ta metoda nie jest zalecana w środowisku produkcyjnym, ponieważ 1) wymaga przechowywania wpisu tajnego w postaci zwykłego tekstu i 2) usługa IoT Edge powinna używać certyfikatu tożsamości do uwierzytelniania na serwerze EST. Aby zmodyfikować środowisko produkcyjne:
- Rozważ użycie długotrwałych certyfikatów bootstrap, które mogą być przechowywane na urządzeniu podczas produkcji podobne do zalecanego podejścia do usługi DPS. Aby dowiedzieć się, jak skonfigurować certyfikat bootstrap dla serwera EST, zobacz Uwierzytelnianie urządzenia przy użyciu certyfikatów wystawionych dynamicznie za pośrednictwem est.
- Skonfiguruj
[cert_issuance.est.identity_auto_renew]
przy użyciu tej samej składni co konfiguracja automatycznego odnawiania certyfikatu aprowizacji powyżej.
W ten sposób usługa certyfikatu usługi IoT Edge używa certyfikatu bootstrap do początkowego uwierzytelniania z serwerem EST i żąda certyfikatu tożsamości dla przyszłych żądań EST do tego samego serwera. Jeśli z jakiegoś powodu certyfikat tożsamości EST wygaśnie przed odnowieniem, usługa IoT Edge wróci do używania certyfikatu bootstrap.
Uruchom polecenie ,
sudo iotedge config apply
aby zastosować nowe ustawienia.Uruchom polecenie
sudo iotedge check
, aby zweryfikować konfigurację urządzenia usługi IoT Edge. Wszystkie testy konfiguracji powinny zakończyć się pomyślnie. W tym samouczku można zignorować błędy gotowości i ostrzeżenia produkcyjne, ostrzeżenia serwera DNS i kontrole łączności.Przejdź do urządzenia w usłudze IoT Hub. Odciski palca certyfikatu zostały dodane do urządzenia automatycznie przy użyciu usługi DPS i serwera EST.
Uwaga
Podczas tworzenia nowego urządzenia usługi IoT Edge zostanie wyświetlony kod
417 -- The device's deployment configuration is not set in the Azure portal.
stanu Ten stan jest normalny i oznacza, że urządzenie jest gotowe do otrzymania wdrożenia modułu.
Testowanie odnawiania certyfikatu
Możesz natychmiast ponownie zainicjować certyfikaty tożsamości urządzenia, usuwając istniejące certyfikaty i klucze z urządzenia, a następnie stosując konfigurację usługi IoT Edge. Usługa IoT Edge wykrywa brakujące pliki i żąda nowych certyfikatów.
Na urządzeniu usługi IoT Edge zatrzymaj środowisko uruchomieniowe usługi IoT Edge.
sudo iotedge system stop
Usuń istniejące certyfikaty i klucze.
sudo sh -c "rm /var/lib/aziot/certd/certs/*" sudo sh -c "rm /var/lib/aziot/keyd/keys/*"
Zastosuj konfigurację usługi IoT Edge, aby odnowić certyfikaty.
sudo iotedge config apply
Może być konieczne odczekenie kilku minut na uruchomienie środowiska uruchomieniowego.
Przejdź do urządzenia w usłudze IoT Hub. Odciski palca certyfikatu zostały zaktualizowane.
Wyświetl listę plików certyfikatów przy użyciu polecenia
sudo ls -l /var/lib/aziot/certd/certs
. Powinny zostać wyświetlone ostatnie daty utworzenia plików certyfikatów urządzenia.Użyj polecenia ,
openssl
aby sprawdzić nową zawartość certyfikatu. Na przykład:sudo openssl x509 -in /var/lib/aziot/certd/certs/deviceid-bd732105ef89cf8edd2606a5309c8a26b7b5599a4e124a0fe6199b6b2f60e655.cer -text -noout
Zastąp nazwę pliku certyfikatu urządzenia (.cer) plikiem certyfikatu urządzenia.
Należy zauważyć, że zakres dat ważności certyfikatu został zmieniony.
Poniżej przedstawiono opcjonalne inne sposoby testowania odnawiania certyfikatu. Te testy pokazują, jak usługa IoT Edge odnawia certyfikaty z serwera EST po wygaśnięciu lub braku. Po każdym teście możesz zweryfikować nowe odciski palca w witrynie Azure Portal i użyć openssl
polecenia w celu zweryfikowania nowego certyfikatu.
- Spróbuj poczekać dzień wygaśnięcia certyfikatu. Testowy serwer EST jest skonfigurowany do tworzenia certyfikatów wygasających po jednym dniu. Usługa IoT Edge automatycznie odnawia certyfikat.
- Spróbuj dostosować wartość procentową dla
threshold
ustawienia automatycznego odnawiania w elemencieconfig.toml
(obecnie ustawiono wartość 80% w przykładowej konfiguracji). Na przykład ustaw go na10%
wartość i obserwuj odnawianie certyfikatu co ok. 2 godziny. - Spróbuj dostosować wartość
threshold
do liczby całkowitej, po której następujem
(minuty). Na przykład ustaw go na60m
wartość i obserwuj odnawianie certyfikatu 1 godziny przed wygaśnięciem.
Czyszczenie zasobów
Możesz zachować zasoby i konfiguracje utworzone w tym samouczku i użyć ich ponownie. W przeciwnym razie możesz usunąć konfiguracje lokalne i zasoby platformy Azure użyte w tym artykule, aby uniknąć naliczania opłat.
Usuwanie zasobów platformy Azure
Usuwanie zasobów i grup zasobów platformy Azure jest nieodwracalne. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub niewłaściwej grupy zasobów. Jeśli centrum IoT zostało utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, usuń tylko sam zasób centrum IoT, a nie grupę zasobów.
Aby usunąć zasoby:
Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.
Wybierz nazwę grupy zasobów, która zawiera zasoby testowe usługi IoT Edge.
Przejrzyj listę zasobów, które zawiera grupa zasobów. Jeśli chcesz usunąć je wszystkie, możesz wybrać pozycję Usuń grupę zasobów. Jeśli chcesz usunąć tylko niektóre z nich, możesz wybrać każdy zasób, aby usunąć je indywidualnie.
Następne kroki
- Aby użyć serwera EST do wystawiania certyfikatów urzędu certyfikacji usługi Edge, zobacz przykład konfiguracji.
- Używanie nazwy użytkownika i hasła do uwierzytelniania bootstrap na serwerze EST nie jest zalecane w środowisku produkcyjnym. Zamiast tego należy rozważyć użycie długotrwałych certyfikatów bootstrap, które mogą być przechowywane na urządzeniu podczas produkcji podobne do zalecanego podejścia do usługi DPS. Aby dowiedzieć się, jak skonfigurować certyfikat bootstrap dla serwera EST, zobacz Uwierzytelnianie urządzenia przy użyciu certyfikatów wystawionych dynamicznie za pośrednictwem est.
- Serwer EST może służyć do wystawiania certyfikatów dla wszystkich urządzeń w hierarchii. W zależności od wymagań środowiska ISA-95 może być konieczne uruchomienie łańcucha serwerów EST z jedną w każdej warstwie lub użycie modułu serwera proxy interfejsu API do przekazywania żądań. Aby dowiedzieć się więcej, zobacz blog Kevina.
- W przypadku rozwiązań klasy korporacyjnej rozważ: GlobalSign IoT Edge Enroll, DigiCert IoT Menedżer urządzeń i Keytos EZCA.
- Aby dowiedzieć się więcej na temat certyfikatów, zobacz Omówienie sposobu korzystania z certyfikatów w usłudze Azure IoT Edge.