Kurz: Zřízení několika zařízení X.509 pomocí skupin registrací
V tomto kurzu se dozvíte, jak zřídit skupiny zařízení IoT, která k ověřování používají certifikáty X.509. Ukázkový kód zařízení ze sady Azure IoT SDK se spustí na vývojovém počítači pro simulaci zřizování zařízení X.509. Na skutečných zařízeních by byl kód zařízení nasazený a spuštěný ze zařízení IoT.
Služba Azure IoT Hub Device Provisioning podporuje dva typy registrací pro zřizování zařízení:
- Skupiny registrací: Slouží k registraci několika souvisejících zařízení. V tomto kurzu se dozvíte, jak se zřizují skupiny registrací.
- Jednotlivé registrace: Slouží k registraci jednoho zařízení.
Služba Azure IoT Hub Device Provisioning podporuje tři formy ověřování pro zřizování zařízení:
- Certifikáty X.509 – tento kurz ukazuje ověření certifikátu X.509.
- Čip TPM (Trusted Platform Module)
- Symetrické klíče
V produkčních scénářích se k zabezpečenému hardwarovému úložišti tajných kódů zařízení používá modul hardwarového zabezpečení (HSM ). K zajištění zabezpečeného úložiště tajných kódů je možné použít HSM se symetrickým klíčem, certifikátem X.509 nebo ověřením identity TPM. Hardwarové úložiště tajných kódů zařízení se doporučuje chránit citlivé informace, jako je privátní klíč certifikátu vašeho zařízení.
V tomto kurzu dokončíte následující cíle:
- Vytvořte řetěz certifikátů důvěryhodnosti pro uspořádání sady zařízení pomocí certifikátů X.509.
- Vytvořte novou registraci skupiny, která používá řetěz certifikátů.
- Nastavte vývojové prostředí.
- Zřiďte zařízení pomocí řetězu certifikátů pomocí vzorového kódu v sadě SDK zařízení Azure IoT.
Požadavky
Pokud ještě nemáte předplatné Azure, vytvořte si napřed bezplatný účet.
Proveďte kroky v části Nastavení služby IoT Hub Device Provisioning pomocí webu Azure Portal.
Následující předpoklady jsou pro vývojové prostředí Windows, které slouží k simulaci zařízení. Informace o Linuxu nebo macOS najdete v příslušné části Přípravy vývojového prostředí v dokumentaci k sadě SDK.
Nainstalujte Visual Studio 2022 s povolenou úlohou Vývoj desktopových aplikací s C++ . Podporují se také sady Visual Studio 2015, Visual Studio 2017 a Visual Studio 19.
Nainstalujte nejnovější systém sestavení CMake. Nezapomeňte zaškrtnout možnost, která do cesty přidá spustitelný soubor CMake.
Důležité
Před zahájením instalace ověřte, že jsou na vašem počítači nainstalované požadavky sady Visual Studio (Visual Studio a úloha Vývoj desktopových aplikací pomocí jazyka
CMake
C++). Jakmile jsou požadované součásti k dispozici a stažený soubor je ověřený, nainstalujte sestavovací systém CMake. Mějte také na paměti, že starší verze systému sestavení CMake se nepodaří vygenerovat soubor řešení použitý v tomto kurzu. Ujistěte se, že používáte nejnovější verzi CMake.
Následující předpoklady jsou pro vývojové prostředí Windows. Informace o Linuxu nebo macOS najdete v příslušné části Přípravy vývojového prostředí v dokumentaci k sadě SDK.
Nainstalujte na počítač se systémem Windows sadu .NET SDK 6.0 nebo novější. Ke kontrole verze můžete použít následující příkaz.
dotnet --info
Následující předpoklady jsou pro vývojové prostředí Windows. Informace o Linuxu nebo macOS najdete v příslušné části Přípravy vývojového prostředí v dokumentaci k sadě SDK.
- Nainstalujte na počítač Node.js verze 4.0 nebo novější .
Následující předpoklady jsou pro vývojové prostředí Windows.
- Python 3.6 nebo novější na vašem počítači
Následující předpoklady jsou pro vývojové prostředí Windows. Informace o Linuxu nebo macOS najdete v příslušné části Přípravy vývojového prostředí v dokumentaci k sadě SDK.
Nainstalujte na počítač sadu Java SE Development Kit 8 nebo novější.
Stáhněte a nainstalujte Maven.
Nainstalujte nejnovější verzi Git. Ujistěte se, že je Git přidaný do proměnných prostředí, které jsou přístupné pro příkazové okno.
Ujistěte se, že je na vašem počítači nainstalovaný OpenSSL . Instalace Gitu ve Windows zahrnuje instalaci OpenSSL. K OpenSSL se dostanete z příkazového řádku Git Bash. Pokud chcete ověřit, že je OpenSSL nainstalovaný, otevřete příkazový řádek Git Bash a zadejte
openssl version
.Poznámka:
Pokud neznáte OpenSSL a už ho máte na počítači s Windows nainstalovaný, doporučujeme použít OpenSSL z příkazového řádku Git Bash. Případně si můžete stáhnout zdrojový kód a sestavit OpenSSL. Pokud se rozhodnete sestavit nebo stáhnout OpenSSL, ujistěte se, že binární soubor OpenSSL je přístupný ve vaší cestě a že
OPENSSL_CNF
proměnná prostředí je nastavená na cestu k souboru openssl.cnf .
Příprava vývojového prostředí
V této části připravíte vývojové prostředí použité k sestavení sady Azure IoT C SDK. Sada SDK obsahuje vzorový kód a nástroje používané zařízeními, které zřizují pomocí DPS.
Ve webovém prohlížeči přejděte na stránku vydání sady Azure IoT C SDK.
Zkopírujte název značky pro nejnovější verzi sady Azure IoT C SDK, například:
lts_03_2024
.Otevřete příkazový řádek Windows a spuštěním následujících příkazů naklonujte nejnovější verzi úložiště Azure IoT Device SDK pro C GitHub. Nahraďte
<release-tag>
značkou, kterou jste zkopírovali v předchozím kroku.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
Dokončení této operace může trvat několik minut.
Po dokončení operace spusťte z
azure-iot-sdk-c
adresáře následující příkazy:mkdir cmake cd cmake
Vzorový kód k zajištění ověření prostřednictvím ověřování X.509 používá certifikát X.509. Spuštěním následujícího příkazu sestavte verzi sady SDK specifickou pro vaši vývojovou platformu, která zahrnuje klienta zřizování zařízení. V adresáři se vygeneruje
cmake
řešení sady Visual Studio pro simulované zařízení.Nahraďte
<path
absolutní cestou k naklonované sadě SDK jazyka C.cmake -Duse_prov_client:BOOL=ON -Dhsm_custom_lib=c:/<path>/azure-iot-sdk-c/cmake/provisioning_client/samples/custom_hsm_example/Debug/custom_hsm_example.lib ..
Tip
Pokud
cmake
kompilátor jazyka C++ nenajdete, při spuštění výše uvedeného příkazu může dojít k chybám sestavení. Pokud k tomu dojde, zkuste příkaz spustit v příkazovém řádku sady Visual Studio.Po úspěšném sestavení vypadá posledních několik výstupních řádků podobně jako následující výstup:
cmake -Duse_prov_client:BOOL=ON -Dhsm_custom_lib=c:/azure-iot-sdk-c/cmake/provisioning_client/samples/custom_hsm_example/Debug/custom_hsm_example.lib .. -- Building for: Visual Studio 17 2022 -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000. -- The C compiler identification is MSVC 19.32.31329.0 -- The CXX compiler identification is MSVC 19.32.31329.0 ... -- Configuring done -- Generating done -- Build files have been written to: C:/azure-iot-sdk-c/cmake
Otevřete příkazový řádek Windows a pomocí následujícího příkazu naklonujte úložiště Azure IoT SDK pro GitHub v jazyce C# :
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Otevřete příkazový řádek Windows a naklonujte sadu Azure IoT SDK pro úložiště Node.js GitHubu pomocí následujícího příkazu:
git clone https://github.com/Azure/azure-iot-sdk-node.git
Otevřete příkazový řádek Windows a naklonujte úložiště Azure IoT Device SDK pro GitHub v Pythonu pomocí následujícího příkazu:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
Poznámka:
Ukázky použité v tomto kurzu jsou ve větvi v2 úložiště azure-iot-sdk-python. V3 sady Python SDK je k dispozici pro použití v beta verzi.
Otevřete příkazový řádek Windows a pomocí následujícího příkazu naklonujte ukázky Azure IoT pro úložiště Java GitHub:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Přejděte do kořenového
azure-iot-sdk-java
adresáře a sestavte projekt, aby se stáhly všechny potřebné balíčky.cd azure-iot-sdk-java mvn install -DskipTests=true
Vytvoření řetězu certifikátů X.509
V této části vygenerujete řetěz certifikátů X.509 se třemi certifikáty pro testování jednotlivých zařízení pomocí tohoto kurzu. Certifikáty mají následující hierarchii.
Kořenový certifikát nahrajete a ověříte kořenový certifikát pomocí DPS. Toto ověření umožňuje službě DPS důvěřovat tomuto certifikátu a ověřit certifikáty podepsané tímto certifikátem.
Zprostředkující certifikát: Běžně se používají zprostředkující certifikáty k logickému seskupení zařízení podle produktových linek, divizí společnosti nebo jiných kritérií. Tento kurz používá řetěz certifikátů s jedním zprostředkujícím certifikátem, ale v produkčním scénáři můžete mít několik. Zprostředkující certifikát v tomto řetězu je podepsaný kořenovým certifikátem. Tento certifikát se poskytuje skupině registrací vytvořené v DPS. Tato konfigurace umožňuje spravovat celou skupinu zařízení, která mají certifikáty zařízení podepsané stejným zprostředkujícím certifikátem.
Certifikáty zařízení: Certifikáty zařízení (někdy označované jako listový certifikát) jsou podepsané zprostředkujícím certifikátem a uloženy v zařízení spolu s jeho privátním klíčem. V ideálním případě by se tyto citlivé položky bezpečně ukládaly pomocí HSM. Stejný zprostředkující certifikát může podepsat více certifikátů zařízení. Každé zařízení při pokusu o zřízení prezentuje svůj certifikát a privátní klíč spolu s řetězem certifikátů.
Další informace o řetězcích certifikátů najdete v tématu Ověření certifikátu X.509.
Nastavení prostředí X.509 OpenSSL
V této části vytvoříte konfigurační soubory Openssl, adresářovou strukturu a další soubory používané příkazy Openssl.
Otevřete příkazový řádek Git Bash a přejděte do složky, do které chcete vygenerovat certifikáty a klíče X.509 pro účely tohoto kurzu.
Vytvořte konfigurační soubor OpenSSL s názvem openssl_root_ca.cnf pro certifikát kořenové certifikační autority. Konfigurační soubory OpenSSL obsahují zásady a definice, které využívají příkazy OpenSSL. Zkopírujte a vložte následující text do souboru openssl_root_ca.cnf :
# OpenSSL root CA configuration file. [ ca ] default_ca = CA_default [ CA_default ] # Directory and file locations. dir = . certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand # The root key and root certificate. private_key = $dir/private/azure-iot-test-only.root.ca.key.pem certificate = $dir/certs/azure-iot-test-only.root.ca.cert.pem # For certificate revocation lists. crlnumber = $dir/crlnumber crl = $dir/crl/azure-iot-test-only.intermediate.crl.pem crl_extensions = crl_ext default_crl_days = 30 # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 375 preserve = no policy = policy_loose [ policy_strict ] # The root CA should only sign intermediate certificates that match. countryName = optional stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ policy_loose ] # Allow the intermediate CA to sign a more diverse range of certificates. countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 distinguished_name = req_distinguished_name string_mask = utf8only # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 # Extension to add when the -x509 option is used. x509_extensions = v3_ca [ req_distinguished_name ] # See <https://en.wikipedia.org/wiki/Certificate_signing_request>. countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name localityName = Locality Name 0.organizationName = Organization Name organizationalUnitName = Organizational Unit Name commonName = Common Name emailAddress = Email Address # Optionally, specify some defaults. countryName_default = US stateOrProvinceName_default = WA localityName_default = 0.organizationName_default = My Organization organizationalUnitName_default = emailAddress_default = [ v3_ca ] # Extensions for a typical CA. subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ v3_intermediate_ca ] # Extensions for a typical intermediate CA. subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ usr_cert ] # Extensions for client certificates. basicConstraints = CA:FALSE nsComment = "OpenSSL Generated Client Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [ server_cert ] # Extensions for server certificates. basicConstraints = CA:FALSE nsComment = "OpenSSL Generated Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ crl_ext ] # Extension for CRLs. authorityKeyIdentifier=keyid:always [ ocsp ] # Extension for OCSP signing certificates. basicConstraints = CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, digitalSignature extendedKeyUsage = critical, OCSPSigning
Vytvořte konfigurační soubor OpenSSL s názvem openssl_device_intermediate_ca.cnf , který se použije pro zprostředkující certifikáty a certifikáty zařízení. Zkopírujte a vložte následující text do souboru openssl_device_intermediate_ca.cnf :
# OpenSSL root CA configuration file. [ ca ] default_ca = CA_default [ CA_default ] # Directory and file locations. dir = . certs = $dir/certs crl_dir = $dir/crl new_certs_dir = $dir/newcerts database = $dir/index.txt serial = $dir/serial RANDFILE = $dir/private/.rand # The root key and root certificate. private_key = $dir/private/azure-iot-test-only.intermediate.key.pem certificate = $dir/certs/azure-iot-test-only.intermediate.cert.pem # For certificate revocation lists. crlnumber = $dir/crlnumber crl = $dir/crl/azure-iot-test-only.intermediate.crl.pem crl_extensions = crl_ext default_crl_days = 30 # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 name_opt = ca_default cert_opt = ca_default default_days = 375 preserve = no policy = policy_loose [ policy_strict ] # The root CA should only sign intermediate certificates that match. countryName = optional stateOrProvinceName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ policy_loose ] # Allow the intermediate CA to sign a more diverse range of certificates. countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional [ req ] default_bits = 2048 distinguished_name = req_distinguished_name string_mask = utf8only # SHA-1 is deprecated, so use SHA-2 instead. default_md = sha256 # Extension to add when the -x509 option is used. x509_extensions = v3_ca [ req_distinguished_name ] # See <https://en.wikipedia.org/wiki/Certificate_signing_request>. countryName = Country Name (2 letter code) stateOrProvinceName = State or Province Name localityName = Locality Name 0.organizationName = Organization Name organizationalUnitName = Organizational Unit Name commonName = Common Name emailAddress = Email Address # Optionally, specify some defaults. countryName_default = US stateOrProvinceName_default = WA localityName_default = 0.organizationName_default = My Organization organizationalUnitName_default = emailAddress_default = [ v3_ca ] # Extensions for a typical CA. subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ v3_intermediate_ca ] # Extensions for a typical intermediate CA. subjectKeyIdentifier = hash authorityKeyIdentifier = keyid:always,issuer basicConstraints = critical, CA:true keyUsage = critical, digitalSignature, cRLSign, keyCertSign [ usr_cert ] # Extensions for client certificates. basicConstraints = CA:FALSE nsComment = "OpenSSL Generated Client Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment extendedKeyUsage = clientAuth [ server_cert ] # Extensions for server certificates. basicConstraints = CA:FALSE nsComment = "OpenSSL Generated Server Certificate" subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer:always keyUsage = critical, digitalSignature, keyEncipherment extendedKeyUsage = serverAuth [ crl_ext ] # Extension for CRLs. authorityKeyIdentifier=keyid:always [ ocsp ] # Extension for OCSP signing certificates. basicConstraints = CA:FALSE subjectKeyIdentifier = hash authorityKeyIdentifier = keyid,issuer keyUsage = critical, digitalSignature extendedKeyUsage = critical, OCSPSigning
Vytvořte adresářovou strukturu, soubor databáze index.txt a sériové číslo souboru, které používají příkazy OpenSSL v tomto kurzu:
mkdir certs csr newcerts private touch index.txt openssl rand -hex 16 > serial
Vytvoření kořenového certifikátu certifikační autority
Spuštěním následujících příkazů vytvořte privátní klíč kořenové certifikační autority a kořenový certifikát certifikační autority. Tento certifikát a klíč použijete k podepsání zprostředkujícího certifikátu.
V terminálu Git Bash vytvořte privátní klíč kořenové certifikační autority:
openssl genrsa -aes256 -passout pass:1234 -out ./private/azure-iot-test-only.root.ca.key.pem 4096
Vytvořte kořenový certifikát certifikační autority:
openssl req -new -x509 -config ./openssl_root_ca.cnf -passin pass:1234 -key ./private/azure-iot-test-only.root.ca.key.pem -subj '//CN=Azure IoT Hub CA Cert Test Only' -days 30 -sha256 -extensions v3_ca -out ./certs/azure-iot-test-only.root.ca.cert.pem
Důležité
Dodatečné lomítko zadané pro název subjektu (
//CN=Azure IoT Hub CA Cert Test Only
) se vyžaduje pouze k úniku řetězce s Gitem na platformách Windows. Na linuxových platformách zadejte název subjektu pouze s jedním lomítkem (/CN=Azure IoT Hub CA Cert Test Only
).Prozkoumejte kořenový certifikát certifikační autority:
openssl x509 -noout -text -in ./certs/azure-iot-test-only.root.ca.cert.pem
Všimněte si, že vystavitel i předmět jsou kořenovou certifikační autoritou.
Certificate: Data: Version: 3 (0x2) Serial Number: 1d:93:13:0e:54:07:95:1d:8c:57:4f:12:14:b9:5e:5f:15:c3:a9:d4 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = Azure IoT Hub CA Cert Test Only Validity Not Before: Jun 20 22:52:23 2022 GMT Not After : Jul 20 22:52:23 2022 GMT Subject: CN = Azure IoT Hub CA Cert Test Only Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit)
Vytvoření certifikátu zprostředkující certifikační autority
Spuštěním následujících příkazů vytvořte zprostředkující privátní klíč certifikační autority a certifikát zprostředkující certifikační autority. Tento certifikát a klíč použijete k podepsání certifikátů zařízení.
V terminálu Git Bash vytvořte zprostředkující privátní klíč certifikační autority:
openssl genrsa -aes256 -passout pass:1234 -out ./private/azure-iot-test-only.intermediate.key.pem 4096
Vytvoření žádosti o podepsání certifikátu zprostředkující certifikační autority (CSR):
openssl req -new -sha256 -passin pass:1234 -config ./openssl_device_intermediate_ca.cnf -subj '//CN=Azure IoT Hub Intermediate Cert Test Only' -key ./private/azure-iot-test-only.intermediate.key.pem -out ./csr/azure-iot-test-only.intermediate.csr.pem
Důležité
Dodatečné lomítko zadané pro název subjektu (
//CN=Azure IoT Hub Intermediate Cert Test Only
) se vyžaduje pouze k úniku řetězce s Gitem na platformách Windows. Na linuxových platformách zadejte název subjektu s jedním lomítkem (/CN=Azure IoT Hub Intermediate Cert Test Only
).Podepsání zprostředkujícího certifikátu pomocí kořenového certifikátu certifikační autority
openssl ca -batch -config ./openssl_root_ca.cnf -passin pass:1234 -extensions v3_intermediate_ca -days 30 -notext -md sha256 -in ./csr/azure-iot-test-only.intermediate.csr.pem -out ./certs/azure-iot-test-only.intermediate.cert.pem
Prozkoumejte certifikát zprostředkující certifikační autority:
openssl x509 -noout -text -in ./certs/azure-iot-test-only.intermediate.cert.pem
Všimněte si, že vystavitel je kořenová certifikační autorita a předmět je zprostředkující certifikační autorita.
Certificate: Data: Version: 3 (0x2) Serial Number: d9:55:87:57:41:c8:4c:47:6c:ee:ba:83:5d:ae:db:39 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = Azure IoT Hub CA Cert Test Only Validity Not Before: Jun 20 22:54:01 2022 GMT Not After : Jul 20 22:54:01 2022 GMT Subject: CN = Azure IoT Hub Intermediate Cert Test Only Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit)
Vytvoření certifikátů zařízení
V této části vytvoříte dva certifikáty zařízení a jejich úplné řetězové certifikáty. Úplný řetězový certifikát obsahuje certifikát zařízení, certifikát zprostředkující certifikační autority a kořenový certifikát certifikační autority. Zařízení musí předložit úplný řetězový certifikát, když se zaregistruje ve službě DPS.
Vytvořte první privátní klíč zařízení.
openssl genrsa -out ./private/device-01.key.pem 4096
Vytvořte csr certifikátu zařízení.
Běžný název subjektu (CN) certifikátu zařízení musí být nastavený na ID registrace, které vaše zařízení používá k registraci v DPS. ID registrace je řetězec nerozlišující velká a malá písmena alfanumerických znaků a speciální znaky:
'-'
, ,'.'
'_'
,':'
. Poslední znak musí být alfanumerický nebo pomlčka ('-'
). Běžný název musí dodržovat tento formát. DPS podporuje ID registrace o délce až 128 znaků; Maximální délka společného názvu subjektu v certifikátu X.509 je však 64 znaků. ID registrace je proto omezeno na 64 znaků při použití certifikátů X.509. U skupinových registrací se ID registrace používá také jako ID zařízení ve službě IoT Hub.Běžný název subjektu se nastavuje pomocí parametru
-subj
. V následujícím příkazu je běžný název nastavený na device-01.openssl req -config ./openssl_device_intermediate_ca.cnf -key ./private/device-01.key.pem -subj '//CN=device-01' -new -sha256 -out ./csr/device-01.csr.pem
Důležité
Dodatečné lomítko zadané pro název subjektu (
//CN=device-01
) se vyžaduje pouze k úniku řetězce s Gitem na platformách Windows. Na linuxových platformách zadejte název subjektu s jedním lomítkem (/CN=device-01
).Podepište certifikát zařízení.
openssl ca -batch -config ./openssl_device_intermediate_ca.cnf -passin pass:1234 -extensions usr_cert -days 30 -notext -md sha256 -in ./csr/device-01.csr.pem -out ./certs/device-01.cert.pem
Prozkoumejte certifikát zařízení:
openssl x509 -noout -text -in ./certs/device-01.cert.pem
Všimněte si, že vystavitel je zprostředkující certifikační autorita a subjekt je ID registrace zařízení.
device-01
Certificate: Data: Version: 3 (0x2) Serial Number: d9:55:87:57:41:c8:4c:47:6c:ee:ba:83:5d:ae:db:3a Signature Algorithm: sha256WithRSAEncryption Issuer: CN = Azure IoT Hub Intermediate Cert Test Only Validity Not Before: Jun 20 22:55:39 2022 GMT Not After : Jul 20 22:55:39 2022 GMT Subject: CN = device-01 Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit)
Zařízení musí při ověřování pomocí DPS předložit úplný řetěz certifikátů. K vytvoření řetězu certifikátů použijte následující příkaz:
cat ./certs/device-01.cert.pem ./certs/azure-iot-test-only.intermediate.cert.pem ./certs/azure-iot-test-only.root.ca.cert.pem > ./certs/device-01-full-chain.cert.pem
Otevřete soubor řetězu certifikátů , /certs/device-01-full-chain.cert.pem a prozkoumejte ho v textovém editoru. Text řetězu certifikátů obsahuje úplný řetězec všech tří certifikátů. Tento řetěz certifikátů použijete později v tomto kurzu ke zřízení
device-01
.Celý text řetězce má následující formát:
-----BEGIN CERTIFICATE----- <Text for the device certificate includes public key> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <Text for the intermediate certificate includes public key> -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- <Text for the root certificate includes public key> -----END CERTIFICATE-----
Pokud chcete vytvořit privátní klíč, certifikát X.509 a úplný řetězový certifikát pro druhé zařízení, zkopírujte a vložte tento skript do příkazového řádku Git Bash. Pokud chcete vytvořit certifikáty pro více zařízení, můžete upravit
registration_id
proměnnou deklarovanou na začátku skriptu.registration_id=device-02 echo $registration_id openssl genrsa -out ./private/${registration_id}.key.pem 4096 openssl req -config ./openssl_device_intermediate_ca.cnf -key ./private/${registration_id}.key.pem -subj "//CN=$registration_id" -new -sha256 -out ./csr/${registration_id}.csr.pem openssl ca -batch -config ./openssl_device_intermediate_ca.cnf -passin pass:1234 -extensions usr_cert -days 30 -notext -md sha256 -in ./csr/${registration_id}.csr.pem -out ./certs/${registration_id}.cert.pem cat ./certs/${registration_id}.cert.pem ./certs/azure-iot-test-only.intermediate.cert.pem ./certs/azure-iot-test-only.root.ca.cert.pem > ./certs/${registration_id}-full-chain.cert.pem
Důležité
Dodatečné lomítko zadané pro název subjektu (
//CN=$registration_id
) se vyžaduje pouze k úniku řetězce s Gitem na platformách Windows. Na linuxových platformách zadejte název subjektu s jedním lomítkem (/CN=$registration_id
).Poznámka:
Tento skript používá ID registrace jako základní název souboru pro soubory privátního klíče a certifikátu. Pokud vaše REGISTRAČNÍ ID obsahuje znaky, které nejsou platnými znaky názvu souboru, budete muset skript odpovídajícím způsobem upravit.
Upozorňující
Text pro certifikáty obsahuje pouze informace o veřejném klíči.
Zařízení ale musí mít také přístup k privátnímu klíči pro certifikát zařízení. To je nezbytné, protože zařízení musí při pokusu o zřízení provést ověření pomocí tohoto klíče za běhu. Citlivost tohoto klíče je jedním z hlavních důvodů, proč se doporučuje používat hardwarové úložiště v reálném HSM k zabezpečení privátních klíčů.
Ve zbývající části tohoto kurzu použijete následující soubory:
Certifikát | Soubor | Popis |
---|---|---|
kořenový certifikát certifikační autority. | certs/azure-iot-test-only.root.ca.cert.pem | Odesláno do DPS a ověřeno. |
Certifikát zprostředkující certifikační autority | certs/azure-iot-test-only.intermediate.cert.pem | Slouží k vytvoření skupiny registrací v DPS. |
privátní klíč zařízení-01 | private/device-01.key.pem | Toto zařízení používá k ověření vlastnictví certifikátu zařízení během ověřování pomocí DPS. |
kompletní řetězový certifikát zařízení-01 | certs/device-01-full-chain.cert.pem | Zařízení předá ověření a registraci ve službě DPS. |
privátní klíč zařízení-02 | private/device-02.key.pem | Toto zařízení používá k ověření vlastnictví certifikátu zařízení během ověřování pomocí DPS. |
kompletní řetězový certifikát zařízení-02 | certs/device-02-full-chain.cert.pem | Zařízení předá ověření a registraci ve službě DPS. |
Ověření vlastnictví kořenového certifikátu
Aby služba DPS mohla během ověřování ověřit řetěz certifikátů zařízení, musíte nahrát a ověřit vlastnictví kořenového certifikátu certifikační autority. Pokud chcete do instance DPS přidat kořenový certifikát certifikační autority, postupujte takto:
Na webu Azure Portal přejděte k vaší instanci služby Device Provisioning.
V nabídce vlevo otevřete certifikáty a pak vyberte Přidat a přidejte nový certifikát.
Zadejte popisný zobrazovaný název certifikátu. Přejděte do umístění souboru
certs/azure-iot-test-only.root.ca.cert.pem
kořenové certifikační autority . Vyberte Odeslat.Zaškrtněte políčko Nastavit stav certifikátu, který se má ověřit při nahrání.
Zvolte Uložit.
Ujistěte se, že se váš certifikát zobrazuje na kartě certifikátu se stavem Ověřeno.
Aktualizace úložiště certifikátů na zařízeních s Windows
Na zařízeních s jiným systémem než Windows můžete předat řetěz certifikátů z kódu jako úložiště certifikátů.
Na zařízeních s Windows musíte přidat podpisové certifikáty (kořenové a zprostředkující) do úložiště certifikátů Windows. Jinak podpisové certifikáty nebudou přenášeny do DPS zabezpečeným kanálem s protokolem TLS (Transport Layer Security).
Tip
Kromě zabezpečeného kanálu (Schannel) se sadou C SDK je také možné použít OpenSSL. Další informace o použití OpenSSL naleznete v tématu Použití OpenSSL v sadě SDK.
Přidání podpisových certifikátů do úložiště certifikátů v zařízeních s Windows:
V terminálu Git Bash převeďte podpisové certifikáty
.pfx
následujícím způsobem.Kořenový certifikát certifikační autority:
openssl pkcs12 -inkey ./private/azure-iot-test-only.root.ca.key.pem -in ./certs/azure-iot-test-only.root.ca.cert.pem -export -passin pass:1234 -passout pass:1234 -out ./certs/root.pfx
Certifikát zprostředkující certifikační autority:
openssl pkcs12 -inkey ./private/azure-iot-test-only.intermediate.key.pem -in ./certs/azure-iot-test-only.intermediate.cert.pem -export -passin pass:1234 -passout pass:1234 -out ./certs/intermediate.pfx
Klikněte pravým tlačítkem myši na tlačítko Start systému Windows a pak vyberte Spustit. Zadejte certmgr.msc a výběrem ok spusťte správce certifikátů.
Ve správci certifikátů v části Certifikáty – Aktuální uživatel vyberte důvěryhodné kořenové certifikační autority. Pak v nabídce vyberte Akce>Všechny úkoly>Import.
Importujte
root.pfx
podle pokynů Průvodce importem certifikátu .- Nezapomeňte vyhledávat podle Exchange osobních údajů (.pfx)
- Slouží
1234
jako heslo. - Umístěte certifikát do úložiště certifikátů důvěryhodných kořenových certifikačních autorit .
Opakujte tyto kroky správce certifikátů pro import
intermediate.pfx
.- Umístěte certifikát do úložiště certifikátů zprostředkujících certifikačních autorit .
Vaše podpisové certifikáty jsou teď důvěryhodné na zařízení s Windows a úplný řetěz je možné přenést do DPS.
Vytvoření skupiny registrací
Přihlaste se k webu Azure Portal a přejděte k instanci služby Device Provisioning.
V části Nastavení navigační nabídky vyberte Spravovat registrace.
V horní části stránky vyberte Přidat skupinu registrací.
Na kartě Registrace a zřizování na stránce Přidat skupinu registrací zadejte následující informace pro konfiguraci podrobností skupiny registrací:
Pole Popis Atestace Jako mechanismus ověření identity vyberte zprostředkující certifikáty X.509, pokud chcete nahrát zprostředkující certifikáty, které se mají použít pouze pro tuto skupinu registrací, nebo vyberte certifikáty X.509 nahrané do této služby Device Provisioning, pokud jste už nahráli zprostředkující certifikáty. Nastavení certifikátu X.509 V závislosti na zvolené metodě ověření identity buď nahrajte nebo vyberte primární a sekundární zprostředkující certifikáty pro tuto skupinu registrací. Název skupiny Zadejte název skupiny zařízení. Název skupiny registrací je řetězec nerozlišující velká a malá písmena (maximálně 128 znaků dlouhý) alfanumerických znaků a speciálních znaků: '-'
,'.'
,'_'
':'
, . Poslední znak musí být alfanumerický nebo pomlčka ('-'
).Stav zřizování Pokud chcete, aby byla tato skupina registrací dostupná pro zřizování zařízení, zaškrtněte políčko Povolit tuto registraci. Pokud chcete, aby byla skupina zakázaná, zrušte zaškrtnutí tohoto políčka. Toto nastavení můžete později změnit. Zásady opětovného zřízení Zvolte zásadu opětovného zřízení, která odráží způsob, jakým má DPS zpracovávat zařízení, která požadují opětovné zřízení. Další informace najdete v tématu Zásady opětovného zřízení. Vyberte Další: IoT Hubs.
Na kartě Centra IoT na stránce Přidat skupinu registrací zadejte následující informace, abyste zjistili, pro které služby IoT Hubs může skupina registrací zřídit zařízení:
Pole Popis Cílení center IoT Vyberte jedno nebo více propojených center IoT nebo přidejte nový odkaz na centrum IoT. Další informace o propojení ioT Hubů s vaší instancí DPS najdete v tématu Propojení a správa ioT Hubů. Zásady přidělování Pokud jste vybrali více propojených ioT Hubů, vyberte způsob přiřazení zařízení k různým rozbočovačům. Další informace ozásadách
Pokud jste vybrali jenom jedno propojené centrum IoT, doporučujeme použít rovnoměrně vážené distribuční zásady.Vybrat další: Nastavení zařízení
Na kartě Nastavení zařízení na stránce Přidat skupinu registrací zadejte následující informace, které definují, jak budou nově zřízená zařízení nakonfigurována:
Pole Popis IoT Edge Pokud budou všechna zařízení zřízená prostřednictvím této skupiny spouštět Azure IoT Edge, zkontrolujte povolení IoT Edge na zřízených zařízeních. Pokud je tato skupina určená jenom pro zařízení s podporou IoT Edge, zrušte zaškrtnutí tohoto políčka. Všechna zařízení ve skupině budou povolená pro IoT Edge nebo žádná. Značky zařízení Pomocí tohoto textového pole můžete zadat všechny značky, které chcete použít u dvojčat zařízení zřízených zařízení. Požadované vlastnosti Pomocí tohoto textového pole zadejte požadované vlastnosti, které chcete použít u dvojčat zařízení zřízených zařízení. Další informace najdete v tématu Principy a použití dvojčat zařízení ve službě IoT Hub.
Vyberte Další: Zkontrolovat a vytvořit.
Na kartě Zkontrolovat a vytvořit ověřte všechny hodnoty a pak vyberte Vytvořit.
Příprava a spuštění kódu zřizování zařízení
V této části aktualizujete ukázkový kód informacemi o instanci služby Device Provisioning. Pokud se zařízení ověří, přiřadí se k centru IoT propojenému s instancí služby Device Provisioning, která je nakonfigurovaná v této části.
V této části použijete příkazový řádek Git Bash a integrované vývojové prostředí sady Visual Studio.
Konfigurace kódu zřizování zařízení
V této části aktualizujete ukázkový kód informacemi o instanci služby Device Provisioning.
Na webu Azure Portal vyberte kartu Přehled vaší instance služby Device Provisioning a poznamenejte si hodnotu Oboru ID.
Spusťte Visual Studio a otevřete nový soubor řešení vytvořený v adresáři, který jste vytvořili v
cmake
kořenovém adresáři úložiště git azure-iot-sdk-c. Soubor řešení má názevazure_iot_sdks.sln
.V Průzkumník řešení pro Visual Studio přejděte na Provision_Samples > zdrojové soubory prov_dev_client_sample > a otevřete prov_dev_client_sample.c.
Najděte konstantu
id_scope
a nahraďte její hodnotu hodnotou Rozsah ID, kterou jste si zkopírovali. Příklad:static const char* id_scope = "0ne00000A0A";
Ve stejném souboru vyhledejte definici funkce
main()
. Ujistěte se, žehsm_type
je proměnná nastavenáSECURE_DEVICE_TYPE_X509
a že jsou všechny ostatníhsm_type
řádky zakomentované. Například:SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Uložte provedené změny.
Klikněte pravým tlačítkem myši na prov_dev_client_sample projekt a vyberte Nastavit jako spouštěný projekt.
Konfigurace vlastního kódu zástupných procedur HSM
Specifika interakce se skutečným zabezpečeným hardwarovým úložištěm se liší v závislosti na hardwaru zařízení. Řetězy certifikátů používané simulovanými zařízeními v tomto kurzu budou pevně zakódované ve vlastním kódu zástupných procedur HSM. Ve skutečném scénáři by byl řetěz certifikátů uložen na skutečném hardwaru HSM, aby poskytoval lepší zabezpečení citlivých informací. Metody podobné metodám zástupných procedur použitých v této ukázce by se pak implementovaly pro čtení tajných kódů z tohoto hardwarového úložiště.
I když není hardware HSM povinný, doporučuje se chránit citlivé informace, jako je privátní klíč certifikátu. Pokud v ukázce volal skutečný HSM, privátní klíč by ve zdrojovém kódu nebyl. Klíč ve zdrojovém kódu zpřístupníte každému, kdo může kód zobrazit. To se provádí pouze v tomto kurzu, který vám pomůže s učením.
Aktualizace vlastního kódu zástupných procedur HSM pro simulaci identity zařízení s ID device-01
:
V Průzkumník řešení pro Visual Studio přejděte na Provision_Samples > custom_hsm_example > zdrojové soubory a otevřete custom_hsm_example.c.
Aktualizujte řetězcovou hodnotu
COMMON_NAME
řetězcové konstanty pomocí běžného názvu, který jste použili při generování certifikátu zařízení.static const char* const COMMON_NAME = "device-01";
V terminálu Git Bash spusťte následující příkaz, který vygeneruje řetězcovou konstantu pro certifikát zařízení:
sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' ./certs/device-01-full-chain.cert.pem
Zkopírujte výstup tohoto příkazu.
Aktualizujte hodnotu
CERTIFICATE
řetězce konstanty pomocí řetězu certifikátů, který jste uložili v souboru ./certs/device-01-full-chain.cert.pem po vygenerování certifikátů. Pro konstantní hodnotu použijte text výstupního certifikátu z předchozího kroku.Syntaxe textu certifikátu se musí shodovat s následujícím vzorem bez nadbytečných mezer ani analýzy provedené sadou Visual Studio.
// <Device/leaf cert> // <intermediates> // <root> static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----\n" "-----BEGIN CERTIFICATE-----\n" "MIIFPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQsFADAqMSgwJgYDVQQDDB9BenVy\n" ... "MTEyMjIxMzAzM1owNDEyMDAGA1UEAwwpQXp1cmUgSW9UIEh1YiBJbnRlcm1lZGlh\n" "-----END CERTIFICATE-----\n" "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Spuštěním následujícího příkazu v GitU Bash vygenerujte konstantu řetězce pro privátní klíč zařízení:
sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' ./private/device-01.key.pem
Zkopírujte výstup tohoto příkazu.
Aktualizujte hodnotu řetězce konstanty pomocí privátního
PRIVATE_KEY
klíče pro certifikát zařízení. Pro konstantní hodnotu použijte text výstupního privátního klíče z předchozího kroku.Syntaxe textu privátního klíče se musí shodovat s následujícím vzorem bez nadbytečných mezer ani analýzy provedené sadou Visual Studio.
static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n" "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" "-----END RSA PRIVATE KEY-----";
Uložte provedené změny.
Klikněte pravým tlačítkem na projekt custom_hsm_example a vyberte Sestavit.
Důležité
Před sestavením zbytku řešení v další části je nutné sestavit projekt custom_hsm_example .
Spuštění ukázky
V nabídce sady Visual Studio vyberte Ladit>Spustit bez ladění a spusťte řešení. Po zobrazení výzvy k opětovnému sestavení projektu vyberte Možnost Ano , aby se projekt před spuštěním znovu sestavil.
Následující výstup je příkladem úspěšného spuštění simulovaného zařízení
device-01
a připojení ke službě zřizování. Zařízení se přiřadilo k centru IoT a zaregistrovalo se:Provisioning API Version: 1.8.0 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: device-01 Press enter key to exit:
Opakujte kroky v části Konfigurace vlastního kódu zástupných procedur HSM pro druhé zařízení (
device-02
) a spusťte ukázku znovu. Pro toto zařízení použijte následující hodnoty:Popis Hodnota Běžný název "device-02"
Úplný řetěz certifikátů Generování textu pomocí ./certs/device-02-full-chain.cert.pem Privátní klíč Generování textu pomocí souboru ./private/device-02.key.pem Následující výstup je příkladem úspěšného spuštění simulovaného zařízení
device-02
a připojení ke službě zřizování. Zařízení se přiřadilo k centru IoT a zaregistrovalo se:Provisioning API Version: 1.8.0 Registering Device Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING Registration Information received from service: contoso-hub-2.azure-devices.net, deviceId: device-02 Press enter key to exit:
Vzorový kód jazyka C# je nastavený tak, aby používal certifikáty X.509, které jsou uložené v souboru s formátem PKCS#12 chráněném heslem (.pfx). Úplné řetězové certifikáty, které jste vytvořili dříve, jsou ve formátu PEM. Pokud chcete převést úplné řetězové certifikáty do formátu PKCS#12, zadejte následující příkazy do příkazového řádku Git Bash z adresáře, ve kterém jste dříve spustili příkazy OpenSSL.
device-01
openssl pkcs12 -inkey ./private/device-01.key.pem -in ./certs/device-01-full-chain.cert.pem -export -passin pass:1234 -passout pass:1234 -out ./certs/device-01-full-chain.cert.pfx
device-02
openssl pkcs12 -inkey ./private/device-02.key.pem -in ./certs/device-02-full-chain.cert.pem -export -passin pass:1234 -passout pass:1234 -out ./certs/device-02-full-chain.cert.pfx
Ve zbývající části této části použijte příkazový řádek windows.
Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.
Zkopírujte hodnotu oboru ID.
V příkazovém řádku windows přejděte do adresáře X509Sample . Tento adresář se nachází v úložišti SDK, které jste naklonovali v předchozím kroku: .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample.
Zadáním následujícího příkazu sestavte a spusťte ukázku zřizování zařízení X.509. Nahraďte
<id-scope>
oborem ID, který jste zkopírovali z webu Azure Portal. Nahraďte<your-certificate-folder>
cestu ke složce, do které jste spustili příkazy OpenSSL.dotnet run -- -s <id-scope> -c <your-certificate-folder>\certs\device-01-full-chain.cert.pfx -p 1234
Zařízení se připojí k DPS a přiřadí se k centru IoT. Potom zařízení odešle telemetrická zpráva do centra IoT. Měl by se zobrazit výstup podobný následujícímu příkladu:
Loading the certificate... Found certificate: 3E5AA3C234B2032251F0135E810D75D38D2AA477 CN=Azure IoT Hub CA Cert Test Only; PrivateKey: False Found certificate: 81FE182C08D18941CDEEB33F53F8553BA2081E60 CN=Azure IoT Hub Intermediate Cert Test Only; PrivateKey: False Found certificate: 5BA1DB226D50EBB7A6A6071CED4143892855AE43 CN=device-01; PrivateKey: True Using certificate 5BA1DB226D50EBB7A6A6071CED4143892855AE43 CN=device-01 Initializing the device provisioning client... Initialized for registration Id device-01. Registering with the device provisioning service... Registration status: Assigned. Device device-01 registered to contoso-hub-2.azure-devices.net. Creating X509 authentication for IoT Hub... Testing the provisioned device with IoT Hub... Sending a telemetry message... Finished.
Poznámka:
Pokud na příkazovém řádku nezadáte certifikát a heslo, soubor certifikátu se ve výchozím nastavení nastaví na ./certificate.pfx a zobrazí se výzva k zadání hesla.
Další parametry lze předat ke změně TransportType (-t) a GlobalDeviceEndpoint (-g). Úplný seznam typů
dotnet run -- --help
parametrů .Pokud chcete zaregistrovat druhé zařízení, spusťte ukázku znovu pomocí jejího úplného řetězového certifikátu.
dotnet run -- -s <id-scope> -c <your-certificate-folder>\certs\device-02-full-chain.cert.pfx -p 1234
V následujících krocích použijte příkazový řádek systému Windows.
Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.
Zkopírujte hodnotu oboru ID.
Na příkazovém řádku Windows přejděte do ukázkového adresáře a nainstalujte balíčky potřebné ukázkou. Zobrazená cesta je relativní vzhledem k umístění, kam jste naklonovali sadu SDK.
cd .\azure-iot-sdk-node\provisioning\device\samples npm install
Ve složce zřizování\device\samples otevřete register_x509.js a zkontrolujte kód.
Ve výchozím nastavení se jako přenosový protokol používá MQTT. Pokud chcete použít jiný protokol, zakomentujte následující řádek a odkomentujte řádek pro příslušný protokol.
var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
Ukázka používá k ověření a zřízení zařízení IoT pomocí DPS pět proměnných prostředí. Tyto proměnné prostředí jsou:
Název proměnné Popis PROVISIONING_HOST
Koncový bod, který se má použít pro připojení k vaší instanci DPS. Pro účely tohoto kurzu použijte globální koncový bod global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Rozsah ID pro vaši instanci DPS. PROVISIONING_REGISTRATION_ID
ID registrace pro vaše zařízení. Musí odpovídat běžnému názvu subjektu v certifikátu zařízení. CERTIFICATE_FILE
Cesta k souboru certifikátu úplného řetězu zařízení. KEY_FILE
Cesta k souboru privátního klíče certifikátu zařízení. Metoda
ProvisioningDeviceClient.register()
se pokusí zaregistrovat zařízení.Přidejte proměnné prostředí pro globální koncový bod zařízení a rozsah ID. Nahraďte
<id-scope>
hodnotou, kterou jste zkopírovali z webu Azure Portal.set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<id-scope>
Nastavte proměnnou prostředí pro ID registrace zařízení. ID registrace zařízení IoT se musí shodovat s běžným názvem subjektu v certifikátu zařízení. Pro účely tohoto kurzu je zařízení-01 jak název subjektu, tak ID registrace zařízení.
set PROVISIONING_REGISTRATION_ID=device-01
Nastavte proměnné prostředí pro úplné řetězové certifikáty zařízení a soubory privátního klíče zařízení, které jste vygenerovali dříve. Nahraďte
<your-certificate-folder>
cestu ke složce, do které jste spustili příkazy OpenSSL.set CERTIFICATE_FILE=<your-certificate-folder>\certs\device-01-full-chain.cert.pem set KEY_FILE=<your-certificate-folder>\private\device-01.key.pem
Spusťte ukázku a ověřte, že se zařízení úspěšně zřídilo.
node register_x509.js
Měl by se zobrazit výstup podobný následujícímu příkladu:
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=device-01 Client connected send status: MessageEnqueued
Aktualizujte proměnné prostředí pro druhé zařízení (
device-02
) podle následující tabulky a spusťte ukázku znovu.Proměnná prostředí Hodnota PROVISIONING_REGISTRATION_ID device-02
CERTIFICATE_FILE <your-certificate-folder>\certs\device-02-full-chain.cert.pem KEY_FILE <your-certificate-folder>\private\device-02.key.pem
V následujících krocích použijte příkazový řádek systému Windows.
Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.
Zkopírujte obor ID.
V příkazovém řádku Windows přejděte do adresáře ukázky provision_x509.py . Zobrazená cesta je relativní vzhledem k umístění, kam jste naklonovali sadu SDK.
cd .\azure-iot-sdk-python\samples\async-hub-scenarios
Tato ukázka používá šest proměnných prostředí k ověření a zřízení zařízení IoT pomocí DPS. Tyto proměnné prostředí jsou:
Název proměnné Popis PROVISIONING_HOST
Koncový bod, který se má použít pro připojení k vaší instanci DPS. Pro účely tohoto kurzu použijte globální koncový bod global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Rozsah ID pro vaši instanci DPS. DPS_X509_REGISTRATION_ID
ID registrace pro vaše zařízení. Musí odpovídat běžnému názvu subjektu v certifikátu zařízení. X509_CERT_FILE
Cesta k souboru certifikátu úplného řetězu zařízení. X509_KEY_FILE
Cesta k souboru privátního klíče certifikátu zařízení. PASS_PHRASE
Pass phrase used to encrypt the private key file (if used). Pro účely tohoto kurzu není potřeba. Přidejte proměnné prostředí pro globální koncový bod zařízení a rozsah ID. Pro proměnnou oboru ID použijte hodnotu, kterou jste zkopírovali z webu Azure Portal.
set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
Nastavte proměnnou prostředí pro ID registrace zařízení. ID registrace zařízení IoT se musí shodovat s běžným názvem subjektu v certifikátu zařízení. Pro účely tohoto kurzu je zařízení-01 jak název subjektu, tak ID registrace zařízení.
set DPS_X509_REGISTRATION_ID=device-01
Nastavte proměnné prostředí pro úplné řetězové certifikáty zařízení a soubory privátního klíče zařízení, které jste vygenerovali dříve. Nahraďte
<your-certificate-folder>
cestu ke složce, do které jste spustili příkazy OpenSSL.set X509_CERT_FILE=<your-certificate-folder>\certs\device-01-full-chain.cert.pem set X509_KEY_FILE=<your-certificate-folder>\private\device-01.key.pem
Zkontrolujte kód pro provision_x509.py. Pokud nepoužíváte Python verze 3.7 nebo novější, změňte kód uvedený zde a nahraďte
asyncio.run(main())
ho .Spusťte ukázku. Ukázka se připojí k DPS, která zřídí zařízení do centra IoT. Po zřízení zařízení odešle ukázka do centra IoT několik testovacích zpráv.
python provision_x509.py
Měl by se zobrazit výstup podobný následujícímu příkladu:
The complete registration result is device-01 contoso-hub-2.azure-devices.net initialAssignment null Will send telemetry from the provisioned device sending message #1 sending message #2 sending message #3 sending message #4 sending message #5 sending message #6 sending message #7 sending message #8 sending message #9 sending message #10 done sending message #1 done sending message #2 done sending message #3 done sending message #4 done sending message #5 done sending message #6 done sending message #7 done sending message #8 done sending message #9 done sending message #10
Aktualizujte proměnné prostředí pro druhé zařízení (
device-02
) podle následující tabulky a spusťte ukázku znovu.Proměnná prostředí Hodnota DPS_X509_REGISTRATION_ID device-02
X509_CERT_FILE <your-certificate-folder>\certs\device-02-full-chain.cert.pem X509_KEY_FILE <your-certificate-folder>\private\device-02.key.pem
V následujících krocích použijete příkazový řádek Windows i příkazový řádek Git Bash.
Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.
Zkopírujte obor ID.
Na příkazovém řádku Windows přejděte do složky ukázkového projektu. Zobrazená cesta je relativní vzhledem k umístění, kam jste naklonovali sadu SDK.
cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
Do vzorového kódu zadejte informace o identitě služby zřizování a X.509. Používá se při zřizování pro ověření simulovaného zařízení před registrací zařízení.
Otevřete soubor
.\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java
v oblíbeném editoru.Aktualizujte následující hodnoty. Pro
idScope
použití oboru ID, který jste zkopírovali dříve. V případě globálního koncového bodu použijte globální koncový bod zařízení. Tento koncový bod je stejný pro každou instanci DPS.global.azure-devices-provisioning.net
private static final String idScope = "[Your ID scope here]"; private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
Ukázka ve výchozím nastavení používá jako přenosový protokol HTTPS. Pokud chcete změnit protokol, zakomentujte následující řádek a odkomentujte řádek pro protokol, který chcete použít.
private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
Aktualizujte hodnotu konstantního
leafPublicPem
řetězce hodnotou certifikátu zařízení device-01.cert.pem.Syntaxe textu certifikátu se musí shodovat s následujícím vzorem bez nadbytečných mezer nebo znaků.
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Ruční aktualizace této řetězcové hodnoty může být náchylná k chybě. Pokud chcete vygenerovat správnou syntaxi, můžete do příkazového řádku Git Bash zkopírovat a vložit následující příkaz a stisknout ENTER. Tento příkaz vygeneruje syntaxi řetězcové
leafPublicPem
konstantní hodnoty a zapíše ji do výstupu.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/device-01.cert.pem
Zkopírujte a vložte text výstupního certifikátu pro konstantní hodnotu.
Aktualizujte hodnotu řetězce konstanty pomocí nešifrovaného privátního
leafPrivateKey
klíče pro certifikát zařízení, nešifrovaný-device-key.pem.Syntaxe textu privátního klíče se musí shodovat s následujícím vzorem bez nadbytečných mezer nebo znaků.
private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" + ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" + "-----END PRIVATE KEY-----";
Pokud chcete vygenerovat správnou syntaxi, můžete do příkazového řádku Git Bash zkopírovat a vložit následující příkaz a stisknout ENTER. Tento příkaz vygeneruje syntaxi řetězcové
leafPrivateKey
konstantní hodnoty a zapíše ji do výstupu.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./private/device-01.key.pem
Zkopírujte a vložte text výstupního privátního klíče pro konstantní hodnotu.
rootPublicPem
Přidejte konstantní řetězec s hodnotou kořenového certifikátu certifikační autority, azure-iot-test-only.root.ca.cert.pem. Můžete ho přidat hned za konstantuleafPrivateKey
.Syntaxe textu certifikátu se musí shodovat s následujícím vzorem bez nadbytečných mezer nebo znaků.
private static final String rootPublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Pokud chcete vygenerovat správnou syntaxi, můžete do příkazového řádku Git Bash zkopírovat a vložit následující příkaz a stisknout ENTER. Tento příkaz vygeneruje syntaxi řetězcové
rootPublicPem
konstantní hodnoty a zapíše ji do výstupu.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/azure-iot-test-only.root.ca.cert.pem
Zkopírujte a vložte text výstupního certifikátu pro konstantní hodnotu.
intermediatePublicPem
Přidejte konstantní řetězec s hodnotou certifikátu zprostředkující certifikační autority azure-iot-test-only.intermediate.cert.pem. Můžete ho přidat hned za předchozí konstantu.Syntaxe textu certifikátu se musí shodovat s následujícím vzorem bez nadbytečných mezer nebo znaků.
private static final String intermediatePublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Pokud chcete vygenerovat správnou syntaxi, můžete do příkazového řádku Git Bash zkopírovat a vložit následující příkaz a stisknout ENTER. Tento příkaz vygeneruje syntaxi řetězcové
intermediatePublicPem
konstantní hodnoty a zapíše ji do výstupu.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/azure-iot-test-only.intermediate.cert.pem
Zkopírujte a vložte text výstupního certifikátu pro konstantní hodnotu.
V metodě vyhledejte následující řádky
main
.// For group enrollment uncomment this line //signerCertificatePemList.add("<Your Signer/intermediate Certificate Here>");
Přidejte tyto dva řádky přímo pod ně a přidejte do podpisového řetězce certifikáty zprostředkující a kořenové certifikační autority. Podpisový řetězec by měl obsahovat celý řetěz certifikátů až do certifikátu, který jste ověřili pomocí DPS.
signerCertificatePemList.add(intermediatePublicPem); signerCertificatePemList.add(rootPublicPem);
Poznámka:
Pořadí přidání podpisových certifikátů je důležité. Pokud se změní, ukázka se nezdaří.
Uložte provedené změny.
Sestavte ukázku a přejděte do
target
složky.mvn clean install cd target
Sestavení vytvoří výstup .jar soubor ve
target
složce s následujícím formátem souboru:provisioning-x509-sample-{version}-with-deps.jar
; například :provisioning-x509-sample-1.8.1-with-deps.jar
. Spusťte soubor .jar. Možná budete muset nahradit verzi v následujícím příkazu.java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
Ukázka se připojí k DPS, která zřídí zařízení do centra IoT. Po zřízení zařízení odešle ukázka do ioT Hubu několik testovacích zpráv.
Starting... Beginning setup. WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance. 2022-10-21 10:41:20,476 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.2 2022-10-21 10:41:20,479 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread... Waiting for Provisioning Service to register 2022-10-21 10:41:20,482 INFO (global.azure-devices-provisioning.net-4f8279ac-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service... 2022-10-21 10:41:20,652 INFO (global.azure-devices-provisioning.net-4f8279ac-Cxn4f8279ac-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message 2022-10-21 10:41:20,680 INFO (global.azure-devices-provisioning.net-4f8279ac-Cxn4f8279ac-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using x509 certificates 2022-10-21 10:41:21,603 INFO (global.azure-devices-provisioning.net-4f8279ac-Cxn4f8279ac-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device... 2022-10-21 10:41:21,605 INFO (global.azure-devices-provisioning.net-4f8279ac-Cxn4f8279ac-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING 2022-10-21 10:41:24,868 INFO (global.azure-devices-provisioning.net-4f8279ac-Cxn4f8279ac-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully IotHUb Uri : contoso-hub-2.azure-devices.net Device ID : device-01 2022-10-21 10:41:30,514 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-10-21 10:41:30,526 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true 2022-10-21 10:41:30,533 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.1.2 2022-10-21 10:41:30,590 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection... 2022-10-21 10:41:30,625 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet... 2022-10-21 10:41:31,452 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged 2022-10-21 10:41:31,453 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/device-01/messages/devicebound/# 2022-10-21 10:41:31,523 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/device-01/messages/devicebound/# was acknowledged 2022-10-21 10:41:31,525 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully 2022-10-21 10:41:31,528 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established 2022-10-21 10:41:31,531 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK 2022-10-21 10:41:31,532 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads 2022-10-21 10:41:31,535 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details 2022-10-21 10:41:31,536 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully 2022-10-21 10:41:31,537 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully Sending message from device to IoT Hub... 2022-10-21 10:41:31,539 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) Press any key to exit... 2022-10-21 10:41:31,540 DEBUG (contoso-hub-2.azure-devices.net-device-01-d7c67552-Cxn0bd73809-420e-46fe-91ee-942520b775db-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-10-21 10:41:31,844 DEBUG (MQTT Call: device-01) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) 2022-10-21 10:41:31,846 DEBUG (contoso-hub-2.azure-devices.net-device-01-d7c67552-Cxn0bd73809-420e-46fe-91ee-942520b775db-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [aaaa0000-bb11-2222-33cc-444444dddddd] Message Id [aaaa0000-bb11-2222-33cc-444444dddddd] ) with status OK Message sent!
Aktualizujte konstanty pro druhé zařízení (
device-02
) podle následující tabulky, znovu sestavte a spusťte ukázku znovu.Konstanta Soubor, který se má použít leafPublicPem
./certs/device-02.cert.pem leafPrivateKey
./private/device-02.key.pem
Potvrzení registrace zřizování zařízení
Zkontrolujte záznamy registrace skupiny registrací a podívejte se na podrobnosti o registraci pro vaše zařízení:
Na webu Azure Portal přejděte do instance služby Device Provisioning.
V nabídce Nastavení vyberte Spravovat registrace.
Vyberte skupiny registrací. Položka skupiny registrací X.509, kterou jste vytvořili dříve, by se měla zobrazit v seznamu.
Vyberte položku registrace. Potom vyberte Podrobnosti vedle stavu Registrace a zobrazte zařízení zaregistrovaná prostřednictvím skupiny registrací. Centrum IoT, ke kterému bylo každé z vašich zařízení přiřazeno, jejich ID zařízení a data a časy, kdy byly zaregistrovány, se zobrazí v seznamu.
Pokud chcete zobrazit další podrobnosti o tomto zařízení, můžete vybrat jedno ze zařízení.
Ověření zařízení ve službě IoT Hub:
Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.
V nabídce Správa zařízení vyberte Zařízení.
Pokud byla vaše zařízení úspěšně zřízená, měla by se v seznamu zobrazit JEJICH ID zařízení, zařízení-01 a zařízení-02 se stavem nastaveným na povolenou. Pokud zařízení nevidíte, vyberte Aktualizovat.
Vyčištění prostředků
Po dokončení testování a prozkoumání ukázky klienta zařízení pomocí následujícího postupu odstraňte všechny prostředky vytvořené tímto kurzem.
- Zavřete na svém počítači okno výstupu ukázky klienta zařízení.
Odstranění skupiny registrací
V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky.
Vyberte instanci DPS.
V nabídce Nastavení vyberte Spravovat registrace.
Vyberte kartu Skupiny registrací.
Vyberte skupinu registrací, kterou jste použili pro účely tohoto kurzu.
Na stránce s podrobnostmi o registraci vyberte Podrobnosti vedle stavu Registrace. Potom zaškrtněte políčko vedle záhlaví sloupce ID zařízení a vyberte všechny registrační záznamy pro skupinu registrací. Výběrem možnosti Odstranit v horní části stránky odstraňte záznamy o registraci.
Důležité
Odstraněním skupiny registrací se neodstraní přidružené záznamy registrace. Tyto osamocené záznamy se započítávají do kvóty registrací pro instanci DPS. Z tohoto důvodu je osvědčeným postupem odstranit všechny záznamy registrace přidružené ke skupině registrací před odstraněním samotné skupiny registrací.
Vraťte se na stránku Spravovat registrace a ujistěte se, že je vybraná karta Skupiny registrací.
Zaškrtněte políčko vedle názvu skupiny registrace, kterou jste použili pro účely tohoto kurzu.
V horní části stránky vyberte Odstranit.
Odstranění registrovaných certifikátů certifikační autority z DPS
- V levé nabídce instance DPS vyberte Certifikáty . Pro každý certifikát, který jste nahráli a ověřili v tomto kurzu, vyberte certifikát a vyberte Odstranit a potvrďte, že ho chcete odebrat.
Odstranění registrací zařízení ze služby IoT Hub
V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky.
Vyberte centrum IoT.
V nabídce Průzkumníky vyberte zařízení IoT.
Zaškrtněte políčko vedle ID zařízení zařízení, která jste zaregistrovali v tomto kurzu. Například device-01 a device-02.
V horní části stránky vyberte Odstranit.
Další kroky
V tomto kurzu jste pro centrum IoT zřídili několik zařízení X.509 pomocí skupiny registrací. Dále se dozvíte, jak zřídit zařízení IoT napříč několika rozbočovači.