Ćwiczenie — generowanie i konfigurowanie certyfikatu X.509 urzędu certyfikacji przy użyciu protokołu OpenSSL
W tym ćwiczeniu wygenerujesz certyfikat X.509 urzędu certyfikacji przy użyciu biblioteki OpenSSL w usłudze Azure Cloud Shell, a następnie utworzysz grupę rejestracji w wystąpieniu usługi Device Provisioning Service (DPS) dla urządzeń IoT w celu aprowizacji przy użyciu uwierzytelniania X.509.
Ten certyfikat urzędu certyfikacji X.509 służy do podpisywania certyfikatów urządzeń dla każdego urządzenia w tej grupie rejestracji. Grupa rejestracji w usłudze DPS wymaga tylko kopii tego najwyższego certyfikatu urzędu certyfikacji. Gdy urządzenie łączy się z usługą DPS w celu aprowizacji, przedstawia łańcuch certyfikatów urzędu, który pokazuje certyfikat urządzenia, wszelkie certyfikaty pośrednie i certyfikat najwyższego urzędu certyfikacji.
Zadanie 1. Generowanie certyfikatów głównego i pośredniego urzędu certyfikacji
W tej sekcji wygenerujesz certyfikat X.509 urzędu certyfikacji przy użyciu biblioteki OpenSSL. Ten certyfikat służy do konfigurowania rejestracji grupy w usłudze DPS.
W piaskownicy platformy Azure utwórz katalog o nazwie certificates , a następnie przejdź do nowego katalogu przy użyciu następujących poleceń:
mkdir certificates cd certificates
Pobierz skrypt pomocnika i dwa pliki konfiguracji openSSL używane do tworzenia certyfikatów X.509.
Pobieranie plików
curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/certGen.sh --output certGen.sh curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_device_intermediate_ca.cnf --output openssl_device_intermediate_ca.cnf curl https://raw.githubusercontent.com/Azure/azure-iot-sdk-c/main/tools/CACertificates/openssl_root_ca.cnf --output openssl_root_ca.cnf
Zaktualizuj uprawnienia skryptu, aby użytkownik mógł go odczytywać, zapisywać i wykonywać.
chmod 700 certGen.sh
Skrypt pomocnika i pliki pomocnicze są hostowane w projekcie typu open source Azure/azure-iot-sdk-c hostowanym w usłudze GitHub, który jest składnikiem zestawu AZURE IoT Device SDK. Skrypt pomocnika certGen.sh umożliwia sprawdzenie, jak certyfikaty urzędu certyfikacji są używane bez zbyt głębokiego zagłębienia się w szczegóły konfiguracji biblioteki OpenSSL (która znajduje się poza zakresem tego modułu).
Aby uzyskać więcej instrukcji dotyczących używania tego skryptu pomocnika oraz instrukcji dotyczących używania programu PowerShell zamiast powłoki Bash, zobacz: Zarządzanie certyfikatami testowego urzędu certyfikacji dla przykładów i samouczków
Ostrzeżenie
Certyfikaty utworzone przez ten skrypt pomocnika NIE MOGĄ być używane w środowisku produkcyjnym. Zawierają one zakodowane hasła ("1234"), wygasają po upływie 30 dni i są udostępniane tylko do celów demonstracyjnych. W przypadku korzystania z certyfikatów urzędu certyfikacji w środowisku produkcyjnym należy zastosować najlepsze rozwiązania w zakresie zabezpieczeń firmy dotyczące tworzenia certyfikatów i zarządzania okresem istnienia.
Jeśli chcesz, możesz szybko odczytać zawartość pobranego pliku skryptu
cat
za pomocą polecenia .cat certGen.sh
Wprowadź następujące polecenie, aby wygenerować certyfikaty główne i pośrednie:
./certGen.sh create_root_and_intermediate
Zwróć uwagę, że skrypt został uruchomiony z opcją create_root_and_intermediate . To polecenie zakłada, że uruchamiasz skrypt z poziomu katalogu ~/certificates .
To polecenie wygenerowało certyfikat głównego urzędu certyfikacji o nazwie azure-iot-test-only.root.ca.cert.pem i umieścił go w katalogu ./certs (w katalogu certyfikatów , który został utworzony).
Zadanie 2. Tworzenie rejestracji grupy (certyfikat X.509) w usłudze DPS
W piaskownicy platformy Azure przekaż certyfikat urzędu certyfikacji do wystąpienia usługi Device Provisioning Service. Nazwa certyfikatu to
groupCA-sensors
. Parametrverified true
polecenia umożliwia automatyczne zweryfikowanie certyfikatu podczas przekazywania, pomijając konieczność wykonania dodatkowego kroku na potrzeby generowania dowodu posiadania certyfikatu.az iot dps certificate create --dps-name dps-$suffix --certificate-name groupCA-sensors --path ~/certificates/certs/azure-iot-test-only.root.ca.cert.pem --verified true
Utwórz grupę rejestracji w wystąpieniu usługi DPS.
az iot dps enrollment-group create --dps-name dps-$suffix --enrollment-id enrollgroup-sensors --root-ca-name groupCA-sensors --iot-hubs hub-$suffix.azure-devices.net --initial-twin-properties "{'telemetryDelay':'1'}" --allocation-policy static
To polecenie tworzy grupę rejestracji z następującymi parametrami:
Parametr Opis --dps-name
Identyfikator usługi DPS. --enrollment-id
Nazwa nowej grupy rejestracji. --root-ca-name
Ustawia metodę zaświadczania dla grupy rejestracji jako certyfikaty z podpisem X.509 urzędu certyfikacji i wskazuje certyfikat urzędu certyfikacji przekazany do usługi DPS. --iot-hubs
Konfiguruje usługę DPS w celu aprowizacji urządzeń w tej grupie rejestracji w centrum IoT, które zostało utworzone i połączone z usługą DPS na początku tego modułu. --initial-twin-properties
Ustawia żądaną właściwość odbieraną przez wszystkie urządzenia w tej grupie rejestracji po ich aprowizacji. Urządzenia używają właściwości properties.desired.telemetryDelay , aby ustawić opóźnienie czasu odczytu i wysyłania danych telemetrycznych do usługi IoT Hub. allocation-policy
Służy do określania sposobu przypisywanego urządzenia do usługi IoT Hub. Zasady statyczne umożliwiają wyznaczenie pojedynczego centrum IoT, do którego chcesz przypisać urządzenia.
Sprawdź swoją pracę
Sprawdź, czy główny urząd certyfikacji azure-iot-test-only.root.ca.cert.pem został utworzony w folderze /certs.
dir ~/certificates/certs/
Sprawdź, czy certyfikat urzędu certyfikacji został przekazany do wystąpienia usługi Device Provisioning Service (DPS).
az iot dps certificate show --certificate-name groupCA-sensors --dps-name dps-$suffix
Sprawdź informacje zwrotne polecenia. Sprawdź, czy nazwa certyfikatu urzędu certyfikacji jest
groupCA-sensors
jak pokazano tutaj."name": "groupCA-sensors"
Sprawdź, czy to polecenie zwraca informacje, aby sprawdzić, czy grupa rejestracji usługi DPS została utworzona z parametrami określonymi w
az iot dps certificate create
instrukcji w zadaniu 2, krok 2.az iot dps enrollment-group show --dps-name dps-$suffix --enrollment-id enrollgroup-sensors