Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule pokazano, jak programowo utworzyć grupę rejestracji w usłudze Azure IoT Hub Device Provisioning Service (DPS), która używa certyfikatów X.509 pośredniego lub głównego urzędu certyfikacji. Grupa rejestracji jest tworzona przy użyciu zestawu SDK usługi Azure IoT i przykładowej aplikacji. Grupa rejestracji steruje dostępem do usługi aprowizacji dla urządzeń, które mają wspólny certyfikat podpisywania w swoim łańcuchu certyfikatów. Aby dowiedzieć się więcej, zobacz Używanie certyfikatów X.509 z usługą DPS. Aby uzyskać więcej informacji na temat używania infrastruktury kluczy publicznych opartej na certyfikatach X.509 z usługą Azure IoT Hub i Device Provisioning, zobacz Omówienie zabezpieczeń certyfikatu X.509 urzędu certyfikacji.
Wymagania wstępne
Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.
Wykonaj kroki opisane w przewodniku Szybki start: konfigurowanie usługi IoT Hub Device Provisioning przy użyciu witryny Azure Portal.
Zainstaluj zestaw .NET 6.0 SDK na maszynie z systemem Windows. Aby sprawdzić wersję, możesz użyć następującego polecenia.
dotnet --infoWażne
Aby skompilować i uruchomić przykładowy kod w tym artykule, musisz użyć zestawu .NET 6.0 SDK. Przykład nie działa obecnie z nowszymi wersjami zestawu SDK.
- Zainstaluj Node.js w wersji 4.0 lub nowszej na maszynie.
Java SE Development Kit 8. W tym artykule jest używany zestaw SDK usługi Azure IoT dla języka Java, który działa zarówno w systemach Windows, jak i Linux. W tym artykule jest używany system Windows.
- Zainstaluj najnowszą wersję usługi Git. Upewnij się, że usługa Git jest dodawana do zmiennych środowiskowych dostępnych w oknie polecenia. Zobacz do zainstalowania, która obejmuje
git, aplikację wiersza polecenia, której można użyć do interakcji z lokalnym repozytorium Git.
Uwaga
Mimo że kroki opisane w tym artykule działają zarówno na komputerach z systemami Windows, jak i Linux, w tym artykule jest używany komputer deweloperzy z systemem Windows.
Tworzenie certyfikatów testowych
Grupy rejestracji korzystające z zaświadczania certyfikatu X.509 można skonfigurować do używania certyfikatu głównego urzędu certyfikacji lub certyfikatu pośredniego. Bardziej typowym przypadkiem jest skonfigurowanie grupy rejestracji przy użyciu certyfikatu pośredniego. Użycie certyfikatu pośredniego zapewnia większą elastyczność, ponieważ ten sam certyfikat głównego urzędu certyfikacji może generować lub odwoływać wiele certyfikatów pośrednich.
W tym artykule potrzebny jest plik certyfikatu głównego urzędu certyfikacji, plik certyfikatu pośredniego urzędu certyfikacji lub w formacie pem lub .cer . Jeden plik zawiera publiczną część certyfikatu X.509 głównego urzędu certyfikacji, a drugi zawiera publiczną część certyfikatu X.509 pośredniego urzędu certyfikacji.
Jeśli masz już plik głównego urzędu certyfikacji i/lub plik pośredniego urzędu certyfikacji, możesz kontynuować dodawanie i weryfikowanie certyfikatu głównego lub pośredniego urzędu certyfikacji.
Jeśli nie masz pliku głównego urzędu certyfikacji i/lub pliku pośredniego urzędu certyfikacji, wykonaj kroki opisane w artykule Tworzenie łańcucha certyfikatów X.509, aby je utworzyć. Możesz przerwać po ukończeniu kroków w Tworzenie pośredniego certyfikatu urzędu certyfikacji, ponieważ nie potrzebujesz certyfikatów urządzeń do wykonania kroków opisanych w tym artykule. Po zakończeniu masz dwa pliki certyfikatów X.509: ./certs/azure-iot-test-only.root.ca.cert.pem i ./certs/azure-iot-test-only.intermediate.cert.pem.
Dodawanie i weryfikowanie certyfikatu głównego lub pośredniego urzędu certyfikacji
Urządzenia aprowizowania za pośrednictwem grupy rejestracji przy użyciu certyfikatów X.509 prezentują cały łańcuch certyfikatów podczas uwierzytelniania w usłudze DPS. Aby usługa DPS mogła zweryfikować łańcuch certyfikatów, certyfikat główny lub pośredni skonfigurowany w grupie rejestracji musi być zweryfikowanym certyfikatem lub musi zostać zbiorczy do zweryfikowanego certyfikatu w łańcuchu certyfikatów, które urządzenie przedstawia podczas uwierzytelniania w usłudze.
W tym artykule przyjęto założenie, że masz zarówno certyfikat głównego urzędu certyfikacji, jak i certyfikat pośredniego urzędu certyfikacji podpisany przez główny urząd certyfikacji:
Jeśli planujesz utworzenie grupy rejestracji przy użyciu certyfikatu głównego urzędu certyfikacji, musisz przekazać i zweryfikować certyfikat głównego urzędu certyfikacji.
Jeśli planujesz utworzenie grupy rejestracji przy użyciu certyfikatu pośredniego urzędu certyfikacji, możesz przekazać i zweryfikować certyfikat głównego urzędu certyfikacji lub certyfikat pośredniego urzędu certyfikacji. (Jeśli w łańcuchu certyfikatów znajduje się wiele certyfikatów pośredniego urzędu certyfikacji, możesz również przekazać i zweryfikować dowolny certyfikat pośredni, który znajduje się między certyfikatem głównego urzędu certyfikacji a certyfikatem pośrednim, za pomocą którego tworzysz grupę rejestracji).
Aby dodać i zweryfikować certyfikat głównego lub pośredniego urzędu certyfikacji do usługi Device Provisioning Service:
Zaloguj się w witrynie Azure Portal.
W menu portalu lub na stronie portalu wybierz pozycję Wszystkie zasoby.
Wybierz wystąpienie usługi Device Provisioning Service.
W menu usługi w obszarze Ustawienia wybierz pozycję Certyfikaty.
W okienku roboczym wybierz pozycję + Dodaj na pasku poleceń.
Wprowadź nazwę certyfikatu głównego lub pośredniego urzędu certyfikacji i przekaż plik pem lub .cer .
Wybierz pozycję Ustaw stan certyfikatu, aby zweryfikować podczas przekazywania.
Wybierz pozycję Zapisz.
Uzyskiwanie parametrów połączenia usługi aprowizacji
Aby uzyskać przykład w tym artykule, potrzebujesz parametry połączenia dla usługi aprowizacji. Aby go pobrać, wykonaj następujące czynności.
Zaloguj się w witrynie Azure Portal.
W menu portalu lub na stronie portalu wybierz pozycję Wszystkie zasoby.
Wybierz wystąpienie usługi Device Provisioning Service.
W menu usługi w obszarze Ustawienia wybierz pozycję Zasady dostępu współdzielonego.
Wybierz zasady dostępu, których chcesz użyć.
Na panelu Zasady dostępu skopiuj i zapisz podstawowe parametry połączenia.
Tworzenie przykładowej grupy rejestracji
W tej sekcji pokazano, jak utworzyć aplikację konsolową platformy .NET Core, która dodaje grupę rejestracji do usługi aprowizacji.
Otwórz wiersz polecenia systemu Windows i przejdź do folderu, w którym chcesz utworzyć aplikację.
Aby utworzyć projekt konsoli, uruchom następujące polecenie:
dotnet new console --framework net6.0 --use-program-mainAby dodać odwołanie do zestawu SDK usługi DPS, uruchom następujące polecenie:
dotnet add package Microsoft.Azure.Devices.Provisioning.ServiceTen krok pobiera, instaluje i dodaje odwołanie do pakietu NuGet klienta usługi Azure IoT DPS i jego zależności. Ten pakiet zawiera pliki binarne zestawu SDK usługi .NET.
Otwórz plik Program.cs w edytorze.
Zastąp instrukcję przestrzeni nazw w górnej części pliku następującym wierszem:
namespace CreateEnrollmentGroup;Dodaj następujące
usinginstrukcje w górnej części pliku powyżej instrukcjinamespace:using System.Security.Cryptography.X509Certificates; using System.Threading.Tasks; using Microsoft.Azure.Devices.Provisioning.Service;Dodaj następujące pola do
Programklasy i wprowadź wskazane zmiany.private static string ProvisioningConnectionString = "{ProvisioningServiceConnectionString}"; private static string EnrollmentGroupId = "enrollmentgrouptest"; private static string X509RootCertPath = @"{Path to a .cer or .pem file for a verified root CA or intermediate CA X.509 certificate}";Zastąp wartość symbolu
ProvisioningServiceConnectionStringzastępczego parametry połączenia usługi aprowizacji skopiowaną w poprzedniej sekcji.Zastąp wartość symbolu
X509RootCertPathzastępczego ścieżką do pliku pem lub .cer. Ten plik reprezentuje publiczną część certyfikatu X.509 głównego urzędu certyfikacji, który został wcześniej przekazany i zweryfikowany w usłudze aprowizacji, lub certyfikat pośredni, który został przekazany i zweryfikowany lub miał certyfikat w łańcuchu podpisywania przekazany i zweryfikowany.Możesz opcjonalnie zmienić
EnrollmentGroupIdwartość. Ciąg może zawierać tylko małe litery i łączniki.
Ważne
W kodzie produkcyjnym pamiętaj o następujących kwestiach dotyczących zabezpieczeń:
- Trwałe kodowanie parametrów połączenia administratora usługi aprowizacji jest niezgodne z najlepszymi rozwiązaniami dotyczącymi zabezpieczeń. Zamiast tego parametry połączenia powinny być przechowywane w sposób bezpieczny, np. w zabezpieczonym pliku konfiguracji lub rejestrze.
- Pamiętaj, aby przekazać tylko publiczną część certyfikatu podpisywania. Nigdy nie przekazuj plików pfx (PKCS12) ani plików pem zawierających klucze prywatne do usługi aprowizacji.
Dodaj następującą metodę do
Programklasy . Ten kod tworzy wpis, a następnie wywołujeEnrollmentGroupmetodęProvisioningServiceClient.CreateOrUpdateEnrollmentGroupAsync, aby dodać grupę rejestracji do usługi aprowizacji.public static async Task RunSample() { Console.WriteLine("Starting sample..."); using (ProvisioningServiceClient provisioningServiceClient = ProvisioningServiceClient.CreateFromConnectionString(ProvisioningConnectionString)) { #region Create a new enrollmentGroup config Console.WriteLine("\nCreating a new enrollmentGroup..."); var certificate = new X509Certificate2(X509RootCertPath); Attestation attestation = X509Attestation.CreateFromRootCertificates(certificate); EnrollmentGroup enrollmentGroup = new EnrollmentGroup( EnrollmentGroupId, attestation) { ProvisioningStatus = ProvisioningStatus.Enabled }; Console.WriteLine(enrollmentGroup); #endregion #region Create the enrollmentGroup Console.WriteLine("\nAdding new enrollmentGroup..."); EnrollmentGroup enrollmentGroupResult = await provisioningServiceClient.CreateOrUpdateEnrollmentGroupAsync(enrollmentGroup).ConfigureAwait(false); Console.WriteLine("\nEnrollmentGroup created with success."); Console.WriteLine(enrollmentGroupResult); #endregion } }Na koniec zastąp metodę
Mainnastępującymi wierszami:static async Task Main(string[] args) { await RunSample(); Console.WriteLine("\nHit <Enter> to exit ..."); Console.ReadLine(); }Zapisz zmiany.
W tej sekcji pokazano, jak utworzyć skrypt Node.js, który dodaje grupę rejestracji do usługi aprowizacji.
Napiwek
Dla uproszczenia w tym przykładzie uwierzytelnianie SAS jest używane do nawiązywania połączenia z interfejsem API usługi DPS. Bezpieczniejszym podejściem jest użycie poświadczeń tokenu platformy Azure. Przykład tej metody uwierzytelniania można znaleźć w przykładzie create_tpm_enrollment_with_token_credential.js w zestawie SDK Node.js.
Z poziomu okna polecenia w folderze roboczym uruchom następujące polecenie:
npm install azure-iot-provisioning-serviceTen krok pobiera, instaluje i dodaje odwołanie do pakietu klienta usługi Azure IoT DPS i jego zależności. Ten pakiet zawiera pliki binarne zestawu SDK usługi Node.js.
Za pomocą edytora tekstu utwórz plik create_enrollment_group.js w folderze roboczym. Dodaj następujący kod do pliku i zapisz go:
'use strict'; var fs = require('fs'); var provisioningServiceClient = require('azure-iot-provisioning-service').ProvisioningServiceClient; var serviceClient = provisioningServiceClient.fromConnectionString(process.argv[2]); var enrollment = { enrollmentGroupId: 'first', attestation: { type: 'x509', x509: { signingCertificates: { primary: { certificate: fs.readFileSync(process.argv[3], 'utf-8').toString() } } } }, provisioningStatus: 'disabled' }; serviceClient.createOrUpdateEnrollmentGroup(enrollment, function(err, enrollmentResponse) { if (err) { console.log('error creating the group enrollment: ' + err); } else { console.log("enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2)); enrollmentResponse.provisioningStatus = 'enabled'; serviceClient.createOrUpdateEnrollmentGroup(enrollmentResponse, function(err, enrollmentResponse) { if (err) { console.log('error updating the group enrollment: ' + err); } else { console.log("updated enrollment record returned: " + JSON.stringify(enrollmentResponse, null, 2)); } }); } });
Otwórz wiersz polecenia systemu Windows.
Sklonuj repozytorium GitHub dla przykładowego kodu rejestracji urządzeń przy użyciu zestawu SDK usługi Java:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursiveZ lokalizacji, w której pobrano repozytorium, przejdź do folderu przykładowego:
cd azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-group-sampleOtwórz plik /src/main/java/samples/com/microsoft/azure/sdk/iot/ServiceEnrollmentGroupSample.java w wybranym edytorze.
Zastąp
[Provisioning Connection String]wartość parametry połączenia skopiowaną w sekcji Pobierz parametry połączenia dla usługi aprowizacji.Zastąp
PUBLIC_KEY_CERTIFICATE_STRINGciąg stały wartością pliku certyfikatu głównego lub pośredniego urzędu.pemcertyfikacji. Ten plik reprezentuje publiczną część certyfikatu X.509 głównego urzędu certyfikacji, który został wcześniej przekazany i zweryfikowany w usłudze aprowizacji, lub certyfikat pośredni, który został przekazany i zweryfikowany lub miał certyfikat w łańcuchu podpisywania przekazany i zweryfikowany.Składnia tekstu certyfikatu musi być zgodna z tym wzorcem bez dodatkowych spacji ani znaków:
private static final String PUBLIC_KEY_CERTIFICATE_STRING = "-----BEGIN CERTIFICATE-----\n" + "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" + ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" + "-----END CERTIFICATE-----";Ręczne aktualizowanie tej wartości ciągu może być podatne na błąd. Aby wygenerować właściwą składnię, możesz skopiować i wkleić następujące polecenie do wiersza polecenia powłoki Git Bash , zastąpić
your-cert.pemlokalizacją pliku certyfikatu i nacisnąć ENTER. To polecenie generuje składnię stałejPUBLIC_KEY_CERTIFICATE_STRINGwartości ciągu i zapisuje ją w danych wyjściowych.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' your-cert.pemSkopiuj i wklej tekst wyjściowego certyfikatu dla stałej wartości.
Ważne
W kodzie produkcyjnym pamiętaj o następujących kwestiach dotyczących zabezpieczeń:
- Trwałe kodowanie parametrów połączenia administratora usługi aprowizacji jest niezgodne z najlepszymi rozwiązaniami dotyczącymi zabezpieczeń. Zamiast tego parametry połączenia powinny być przechowywane w sposób bezpieczny, np. w zabezpieczonym pliku konfiguracji lub rejestrze.
- Pamiętaj, aby przekazać tylko publiczną część certyfikatu podpisywania. Nigdy nie przekazuj plików pfx (PKCS12) ani plików pem zawierających klucze prywatne do usługi aprowizacji.
Przykład umożliwia ustawienie centrum IoT w grupie rejestracji w celu aprowizacji urządzenia. To centrum IoT musi być takie, które zostało wcześniej połączone z usługą aprowizacji. W tym artykule możemy wybrać usługę DPS z połączonych centrów zgodnie z domyślnymi zasadami alokacji, równomiernie ważonymi rozkładami. Oznacz następującą instrukcję w pliku jako komentarz:
enrollmentGroup.setIotHubHostName(IOTHUB_HOST_NAME); // Optional parameter.Przykładowy kod tworzy, aktualizuje, wykonuje zapytania i usuwa grupę rejestracji dla urządzeń X.509. Aby zweryfikować pomyślne utworzenie grupy rejestracji w witrynie Azure Portal, oznacz jako komentarz następujące wiersze kodu na końcu pliku:
// ************************************** Delete info of enrollmentGroup *************************************** System.out.println("\nDelete the enrollmentGroup..."); provisioningServiceClient.deleteEnrollmentGroup(enrollmentGroupId);Zapisz plik ServiceEnrollmentGroupSample.java.
Uruchamianie przykładowej grupy rejestracji
Uruchom przykład:
dotnet runPo pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej grupy rejestracji.
Uruchom następujące polecenie w wierszu polecenia. Uwzględnij cudzysłowy wokół argumentów polecenia i zastąp
<connection string>ciąg parametrami połączenia skopiowanymi w poprzedniej sekcji oraz<certificate .pem file>ścieżką do pliku certyfikatu.pem. Ten plik reprezentuje publiczną część certyfikatu X.509 głównego urzędu certyfikacji, który został wcześniej przekazany i zweryfikowany w usłudze aprowizacji, lub certyfikat pośredni, który został przekazany i zweryfikowany lub miał certyfikat w łańcuchu podpisywania przekazany i zweryfikowany.node create_enrollment_group.js "<connection string>" "<certificate .pem file>"Po pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej grupy rejestracji.
W folderze azure-iot-sdk-java\provisioning\provisioning-service-client-samples\service-enrollment-group-sample w wierszu polecenia uruchom następujące polecenie, aby skompilować przykład:
mvn install -DskipTestsTo polecenie pobiera pakiet Maven klienta usługi Azure IoT DPS na maszynę i kompiluje przykład. Ten pakiet zawiera pliki binarne zestawu SDK usługi Java.
Przejdź do folderu docelowego i uruchom przykład. Kompilacja w poprzednim kroku zwraca .jar plik w folderze docelowym o następującym formacie pliku:
provisioning-x509-sample-{version}-with-deps.jarna przykład:provisioning-x509-sample-1.8.1-with-deps.jar. Może być konieczne zastąpienie wersji w poniższym poleceniu.cd target java -jar ./service-enrollment-group-sample-1.8.1-with-deps.jarPo pomyślnym utworzeniu w oknie polecenia zostaną wyświetlone właściwości nowej grupy rejestracji.
Aby sprawdzić, czy grupa rejestracji została utworzona:
W witrynie Azure Portal przejdź do wystąpienia usługi Device Provisioning Service.
W menu usługi w obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz kartę Grupy rejestracji. Powinien zostać wyświetlony nowy wpis rejestracji odpowiadający identyfikatorowi grupy rejestracji użytemu w przykładzie.
Czyszczenie zasobów
Jeśli planujesz zapoznać się z samouczkami usługi Azure IoT Hub Device Provisioning Service, nie usuwaj zasobów utworzonych w tym artykule. W przeciwnym razie wykonaj następujące kroki, aby usunąć wszystkie zasoby utworzone w tym artykule.
Zamknij okno przykładowych danych wyjściowych na komputerze.
W menu portalu w witrynie Azure Portal wybierz pozycję Wszystkie zasoby.
Wybierz wystąpienie usługi Device Provisioning Service.
W menu usługi w obszarze Ustawienia wybierz pozycję Zarządzaj rejestracjami.
Wybierz kartę Grupy rejestracji.
Zaznacz pole wyboru obok nazwy grupy rejestracji utworzonej w tym artykule.
W górnej części okienka wybierz pozycję Usuń.
W wystąpieniu usługi Device Provisioning Service w witrynie Azure Portal wybierz pozycję Certyfikaty w obszarze Ustawienia w menu po lewej stronie.
Wybierz przekazany certyfikat dla tego artykułu.
W górnej części szczegółów certyfikatu wybierz pozycję Usuń.
Narzędzia certyfikatów
Zestaw AZURE IoT C SDK zawiera skrypty, które mogą ułatwić tworzenie certyfikatów i zarządzanie nimi. Aby dowiedzieć się więcej, zobacz Zarządzanie certyfikatami testowego urzędu certyfikacji dla przykładów i samouczków.
Zestaw SDK usługi Azure IoT Node.js zawiera skrypty, które mogą ułatwić tworzenie certyfikatów i zarządzanie nimi. Aby dowiedzieć się więcej, zobacz Tools for the Azure IoT Device Provisioning Device SDK for Node.js (Narzędzia dla zestawu SDK usługi Azure IoT Device Provisioning Device Provisioning dla Node.js).
Możesz również użyć narzędzi dostępnych w zestawie SDK języka C usługi Azure IoT. Aby dowiedzieć się więcej, zobacz Zarządzanie certyfikatami testowego urzędu certyfikacji dla przykładów i samouczków.
Zestaw SDK języka Java usługi Azure IoT zawiera narzędzia testowe, które mogą pomóc w tworzeniu certyfikatów i zarządzaniu nimi. Aby dowiedzieć się więcej, zobacz Generator certyfikatów X509 przy użyciu emulatora DICE.
Następne kroki
W tym artykule utworzono grupę rejestracji dla pośredniego lub głównego certyfikatu urzędu certyfikacji X.509 przy użyciu usługi Azure IoT Hub Device Provisioning Service. Aby dowiedzieć się więcej, zapoznaj się z następującymi linkami:
Aby uzyskać więcej informacji na temat zaświadczania certyfikatów X.509 za pomocą usługi DPS, zobacz Zaświadczenie certyfikatu X.509.
Aby zapoznać się z całościowym przykładem udostępnienia urządzeń przez grupę rejestracji przy użyciu certyfikatów X.509, zobacz Samouczek: udostępnianie wielu urządzeń X.509 przy użyciu grup rejestracji.
Aby dowiedzieć się więcej o zarządzaniu poszczególnymi rejestracjami i grupami rejestracji przy użyciu witryny Azure Portal, zobacz Zarządzanie rejestracjami urządzeń w witrynie Azure Portal.