Tworzenie certyfikatów demonstracyjnych do testowania funkcji urządzenia usługi IoT Edge
Dotyczy: IoT Edge 1.5 IoT Edge 1.4
Ważne
Obsługiwane są wersje usługi IoT Edge 1.5 LTS i IoT Edge 1.4 LTS. 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.
Urządzenia usługi IoT Edge wymagają certyfikatów do bezpiecznej komunikacji między środowiskiem uruchomieniowym, modułami i dowolnymi urządzeniami podrzędnymi. Jeśli nie masz urzędu certyfikacji do utworzenia wymaganych certyfikatów, możesz użyć certyfikatów demonstracyjnych, aby wypróbować funkcje usługi IoT Edge w środowisku testowym. W tym artykule opisano funkcje skryptów generowania certyfikatów zapewnianych przez usługę IoT Edge na potrzeby testowania.
Ostrzeżenie
Te certyfikaty wygasają za 30 dni i nie powinny być używane w żadnym scenariuszu produkcyjnym.
Możesz utworzyć certyfikaty na dowolnym komputerze, a następnie skopiować je na urządzenie usługi IoT Edge lub wygenerować certyfikaty bezpośrednio na urządzeniu usługi IoT Edge.
Wymagania wstępne
Maszyna programistyjna z zainstalowaną usługą Git.
Pobieranie skryptów certyfikatu testowego i konfigurowanie katalogu roboczego
Repozytorium usługi IoT Edge w usłudze GitHub zawiera skrypty generowania certyfikatów, których można użyć do tworzenia certyfikatów demonstracyjnych. Ta sekcja zawiera instrukcje dotyczące przygotowywania skryptów do uruchomienia na komputerze w systemie Windows lub Linux.
Aby utworzyć certyfikaty demonstracyjne na urządzeniu z systemem Windows, należy zainstalować program OpenSSL, a następnie sklonować skrypty generowania i skonfigurować je do uruchamiania lokalnie w programie PowerShell.
Zainstaluj OpenSSL
Zainstaluj program OpenSSL dla systemu Windows na maszynie, której używasz do generowania certyfikatów. Jeśli na urządzeniu z systemem Windows jest już zainstalowany program OpenSSL, upewnij się, że openssl.exe jest dostępna w zmiennej środowiskowej PATH.
Istnieje kilka sposobów instalowania biblioteki OpenSSL, w tym następujących opcji:
Łatwiejsze: pobierz i zainstaluj pliki binarne OpenSSL innych firm, na przykład z biblioteki OpenSSL w pliku SourceForge. Dodaj pełną ścieżkę, aby openssl.exe do zmiennej środowiskowej PATH.
Zalecane: pobierz kod źródłowy openSSL i skompiluj pliki binarne na maszynie samodzielnie lub za pośrednictwem narzędzia vcpkg. Instrukcje wymienione poniżej używają narzędzia vcpkg do pobierania kodu źródłowego, kompilowania i instalowania biblioteki OpenSSL na maszynie z systemem Windows, wykonując proste kroki.
Przejdź do katalogu, w którym chcesz zainstalować program vcpkg. Postępuj zgodnie z instrukcjami, aby pobrać i zainstalować narzędzie vcpkg.
Po zainstalowaniu narzędzia vcpkg uruchom następujące polecenie w wierszu polecenia programu PowerShell, aby zainstalować pakiet OpenSSL dla systemu Windows x64. Instalacja zazwyczaj trwa około 5 minut.
.\vcpkg install openssl:x64-windows
Dodaj
<vcpkg path>\installed\x64-windows\tools\openssl
do zmiennej środowiskowej PATH, aby plik openssl.exe był dostępny do wywołania.
Przygotowywanie skryptów w programie PowerShell
Repozytorium git usługi Azure IoT Edge zawiera skrypty, których można użyć do generowania certyfikatów testowych. W tej sekcji sklonujesz repozytorium usługi IoT Edge i wykonasz skrypty.
Otwórz okno programu PowerShell w trybie administratora.
Sklonuj repozytorium git usługi IoT Edge, które zawiera skrypty do generowania certyfikatów demonstracyjnych.
git clone
Użyj polecenia lub pobierz plik ZIP.git clone https://github.com/Azure/iotedge.git
Utwórz katalog, w którym chcesz pracować, i skopiuj tam skrypty certyfikatu. Wszystkie pliki certyfikatów i kluczy zostaną utworzone w tym katalogu.
mkdir wrkdir cd .\wrkdir\ cp ..\iotedge\tools\CACertificates\*.cnf . cp ..\iotedge\tools\CACertificates\ca-certs.ps1 .
Jeśli repozytorium zostało pobrane jako plik ZIP, nazwa folderu to
iotedge-master
i pozostała część ścieżki jest taka sama.Włącz program PowerShell, aby uruchamiać skrypty.
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser
Przełącz funkcje używane przez skrypty do globalnej przestrzeni nazw programu PowerShell.
. .\ca-certs.ps1
W oknie programu PowerShell zostanie wyświetlone ostrzeżenie, że certyfikaty wygenerowane przez ten skrypt są przeznaczone tylko do celów testowych i nie powinny być używane w scenariuszach produkcyjnych.
Sprawdź, czy biblioteka OpenSSL została poprawnie zainstalowana i upewnij się, że nie będzie kolizji nazw z istniejącymi certyfikatami. Jeśli występują problemy, dane wyjściowe skryptu powinny opisywać sposób ich naprawiania w systemie.
Test-CACertsPrerequisites
Tworzenie certyfikatu głównego urzędu certyfikacji
Uruchom ten skrypt, aby wygenerować główny urząd certyfikacji wymagany dla każdego kroku w tym artykule.
Certyfikat głównego urzędu certyfikacji służy do tworzenia wszystkich innych certyfikatów demonstracyjnych na potrzeby testowania scenariusza usługi IoT Edge. Możesz nadal używać tego samego certyfikatu głównego urzędu certyfikacji, aby tworzyć certyfikaty demonstracyjne dla wielu urządzeń usługi IoT Edge lub podrzędnych.
Jeśli masz już jeden certyfikat głównego urzędu certyfikacji w folderze roboczym, nie twórz nowego. Nowy certyfikat głównego urzędu certyfikacji zastąpi stary, a wszystkie certyfikaty podrzędne wykonane ze starego urzędu certyfikacji przestaną działać. Jeśli chcesz, aby wiele certyfikatów głównego urzędu certyfikacji było zarządzanych w oddzielnych folderach.
Przejdź do katalogu
wrkdir
roboczego, w którym umieszczono skrypty generowania certyfikatów.Utwórz certyfikat głównego urzędu certyfikacji i podpisz jeden certyfikat pośredniczący. Wszystkie certyfikaty są umieszczane w katalogu roboczym.
New-CACertsCertChain rsa
To polecenie skryptu tworzy kilka plików certyfikatów i kluczy, ale gdy artykuły pytają o certyfikat głównego urzędu certyfikacji, użyj następującego pliku:
certs\azure-iot-test-only.root.ca.cert.pem
Ten certyfikat jest wymagany przed utworzeniem większej liczby certyfikatów dla urządzeń usługi IoT Edge i urządzeń podrzędnych zgodnie z opisem w następnych sekcjach.
Tworzenie certyfikatu tożsamości dla urządzenia usługi IoT Edge
Certyfikaty tożsamości urządzeń usługi IoT Edge są używane do aprowizowania urządzeń usługi IoT Edge, jeśli zdecydujesz się używać uwierzytelniania certyfikatu X.509. Jeśli używasz klucza symetrycznego do uwierzytelniania w usłudze IoT Hub lub DPS, te certyfikaty nie są potrzebne i możesz pominąć tę sekcję.
Te certyfikaty działają niezależnie od tego, czy używasz aprowizacji ręcznej, czy automatycznej aprowizacji za pośrednictwem usługi Azure IoT Hub Device Provisioning Service (DPS).
Certyfikaty tożsamości urządzeń są dostępne w sekcji Aprowizowanie pliku konfiguracji na urządzeniu usługi IoT Edge.
Przejdź do katalogu
wrkdir
roboczego z skryptami generowania certyfikatów i certyfikatem głównego urzędu certyfikacji.Utwórz certyfikat tożsamości urządzenia usługi IoT Edge i klucz prywatny przy użyciu następującego polecenia:
New-CACertsEdgeDeviceIdentity "<device-id>"
Nazwa przekazywana do tego polecenia to identyfikator urządzenia usługi IoT Edge w usłudze IoT Hub.
Nowe polecenie tożsamości urządzenia tworzy kilka plików certyfikatów i kluczy:
Typ Plik opis Certyfikat tożsamości urządzenia certs\iot-edge-device-identity-<device-id>.cert.pem
Podpisany wcześniej przez wygenerowany certyfikat pośredni. Zawiera tylko certyfikat tożsamości. Określ w pliku konfiguracji dla rejestracji indywidualnej usługi DPS lub aprowizacji usługi IoT Hub. Certyfikat pełnego łańcucha certs\iot-edge-device-identity-<device-id>-full-chain.cert.pem
Zawiera pełny łańcuch certyfikatów, w tym certyfikat pośredni. Określ w pliku konfiguracji usługi IoT Edge, aby przedstawić usługę DPS na potrzeby aprowizacji rejestracji grupowej. Klucz prywatny private\iot-edge-device-identity-<device-id>.key.pem
Klucz prywatny skojarzony z certyfikatem tożsamości urządzenia. Należy określić w pliku konfiguracji, o ile używasz pewnego rodzaju uwierzytelniania certyfikatu (odcisk palca lub urzędu certyfikacji) dla usługi DPS lub IoT Hub.
Tworzenie certyfikatów urzędu certyfikacji usługi Edge
Te certyfikaty są wymagane w scenariuszach bramy , ponieważ certyfikat urzędu certyfikacji usługi Edge jest sposobem, w jaki urządzenie usługi IoT Edge weryfikuje swoją tożsamość na urządzeniach podrzędnych. Tę sekcję można pominąć, jeśli nie łączysz żadnych urządzeń podrzędnych z usługą IoT Edge.
Certyfikat urzędu certyfikacji usługi Edge jest również odpowiedzialny za tworzenie certyfikatów dla modułów uruchomionych na urządzeniu, ale środowisko uruchomieniowe usługi IoT Edge może tworzyć certyfikaty tymczasowe, jeśli urząd certyfikacji usługi Edge nie jest skonfigurowany. Certyfikaty urzędu certyfikacji usługi Edge są dostępne w sekcji config.toml
Urząd certyfikacji usługi Edge pliku na urządzeniu usługi IoT Edge. Aby dowiedzieć się więcej, zobacz Omówienie sposobu korzystania z certyfikatów w usłudze Azure IoT Edge.
Przejdź do katalogu
wrkdir
roboczego z skryptami generowania certyfikatów i certyfikatem głównego urzędu certyfikacji.Utwórz certyfikat urzędu certyfikacji usługi IoT Edge i klucz prywatny przy użyciu następującego polecenia. Podaj nazwę certyfikatu urzędu certyfikacji. Nazwa przekazana do polecenia New-CACertsEdgeDevice nie powinna być taka sama jak parametr nazwy hosta w pliku konfiguracji lub identyfikator urządzenia w usłudze IoT Hub.
New-CACertsEdgeDevice "<CA cert name>"
To polecenie tworzy kilka plików certyfikatów i kluczy. Następująca para certyfikatów i kluczy musi zostać skopiowana na urządzenie usługi IoT Edge i przywoływane w pliku konfiguracji:
certs\iot-edge-device-<CA cert name>-full-chain.cert.pem
private\iot-edge-device-<CA cert name>.key.pem
Tworzenie certyfikatów urządzeń podrzędnych
Te certyfikaty są wymagane do skonfigurowania podrzędnego urządzenia IoT dla scenariusza bramy i chcą używać uwierzytelniania X.509 z usługą IoT Hub lub DPS. Jeśli chcesz użyć uwierzytelniania klucza symetrycznego, nie musisz tworzyć certyfikatów dla urządzenia podrzędnego i pominąć tę sekcję.
Istnieją dwa sposoby uwierzytelniania urządzenia IoT przy użyciu certyfikatów X.509: przy użyciu certyfikatów z podpisem własnym lub certyfikatów podpisanych przez urząd certyfikacji.
- W przypadku uwierzytelniania z podpisem własnym X.509, czasami nazywanego uwierzytelnianiem odciskiem palca, należy utworzyć nowe certyfikaty, aby umieścić je na urządzeniu IoT. Te certyfikaty mają w nich odcisk palca, który udostępniasz usłudze IoT Hub na potrzeby uwierzytelniania.
- W przypadku uwierzytelniania podpisanego przez urząd certyfikacji X.509 potrzebny jest certyfikat głównego urzędu certyfikacji zarejestrowany w usłudze IoT Hub lub DPS używany do podpisywania certyfikatów dla urządzenia IoT. Każde urządzenie korzystające z certyfikatu wystawionego przez certyfikat głównego urzędu certyfikacji lub dowolny z jego certyfikatów pośrednich może uwierzytelniać się tak długo, jak cały łańcuch jest prezentowany przez urządzenie.
Skrypty generowania certyfikatów mogą pomóc w tworzeniu certyfikatów demonstracyjnych w celu przetestowania jednego z tych scenariuszy uwierzytelniania.
Certyfikaty z podpisem własnym
Podczas uwierzytelniania urządzenia IoT przy użyciu certyfikatów z podpisem własnym należy utworzyć certyfikaty urządzeń na podstawie certyfikatu głównego urzędu certyfikacji dla rozwiązania. Następnie pobierasz szesnastkowy odcisk palca z certyfikatów w celu udostępnienia go usłudze IoT Hub. Urządzenie IoT wymaga również kopii certyfikatów urządzenia, aby można je było uwierzytelniać za pomocą usługi IoT Hub.
Przejdź do katalogu
wrkdir
roboczego z skryptami generowania certyfikatów i certyfikatem głównego urzędu certyfikacji.Utwórz dwa certyfikaty (podstawowy i pomocniczy) dla urządzenia podrzędnego. Łatwa konwencja nazewnictwa do użycia polega na utworzeniu certyfikatów z nazwą urządzenia IoT, a następnie etykietą podstawową lub pomocniczą. Na przykład:
New-CACertsDevice "<device ID>-primary" New-CACertsDevice "<device ID>-secondary"
To polecenie skryptu tworzy kilka plików certyfikatów i kluczy. Następujące pary certyfikatów i kluczy muszą zostać skopiowane do podrzędnego urządzenia IoT i przywoływane w aplikacjach łączących się z usługą IoT Hub:
certs\iot-device-<device ID>-primary-full-chain.cert.pem
certs\iot-device-<device ID>-secondary-full-chain.cert.pem
certs\iot-device-<device ID>-primary.cert.pem
certs\iot-device-<device ID>-secondary.cert.pem
certs\iot-device-<device ID>-primary.cert.pfx
certs\iot-device-<device ID>-secondary.cert.pfx
private\iot-device-<device ID>-primary.key.pem
private\iot-device-<device ID>-secondary.key.pem
Pobierz odcisk palca SHA1 (nazywany odciskiem palca w kontekstach usługi IoT Hub) z każdego certyfikatu. Odcisk palca to 40 szesnastkowy ciąg znaków. Użyj następującego polecenia openssl, aby wyświetlić certyfikat i znaleźć odcisk palca:
Write-Host (Get-Pfxcertificate -FilePath certs\iot-device-<device name>-primary.cert.pem).Thumbprint
Uruchom to polecenie dwa razy, raz dla certyfikatu podstawowego i raz dla certyfikatu pomocniczego. Odciski palca dla obu certyfikatów należy podać podczas rejestrowania nowego urządzenia IoT przy użyciu certyfikatów X.509 z podpisem własnym.
Certyfikaty podpisane przez urząd certyfikacji
Podczas uwierzytelniania urządzenia IoT przy użyciu certyfikatów podpisanych przez urząd certyfikacji należy przekazać certyfikat głównego urzędu certyfikacji dla rozwiązania do usługi IoT Hub. Użyj tego samego certyfikatu głównego urzędu certyfikacji, aby utworzyć certyfikaty urządzeń do umieszczenia na urządzeniu IoT w celu uwierzytelnienia w usłudze IoT Hub.
Certyfikaty w tej sekcji dotyczą kroków z serii samouczków dotyczących certyfikatów X.509 usługi IoT Hub. Zobacz Omówienie kryptografii klucza publicznego i infrastruktury kluczy publicznych X.509, aby zapoznać się z wprowadzeniem tej serii.
Przekaż plik certyfikatu głównego urzędu certyfikacji z katalogu roboczego ,
certs\azure-iot-test-only.root.ca.cert.pem
do centrum IoT Hub.Jeśli nie wybrano automatycznej weryfikacji, użyj kodu podanego w witrynie Azure Portal, aby sprawdzić, czy jesteś właścicielem tego certyfikatu głównego urzędu certyfikacji.
New-CACertsVerificationCert "<verification code>"
Utwórz łańcuch certyfikatów dla urządzenia podrzędnego. Użyj tego samego identyfikatora urządzenia zarejestrowanego w usłudze IoT Hub.
New-CACertsDevice "<device id>"
To polecenie skryptu tworzy kilka plików certyfikatów i kluczy. Następujące pary certyfikatów i kluczy muszą zostać skopiowane do podrzędnego urządzenia IoT i przywoływane w aplikacjach łączących się z usługą IoT Hub:
certs\iot-device-<device id>.cert.pem
certs\iot-device-<device id>.cert.pfx
certs\iot-device-<device id>-full-chain.cert.pem
private\iot-device-<device id>.key.pem