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

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.

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.

Následující předpoklady jsou pro vývojové prostředí Windows.

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 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.

  1. Ve webovém prohlížeči přejděte na stránku vydání sady Azure IoT C SDK.

  2. Zkopírujte název značky pro nejnovější verzi sady Azure IoT C SDK, například: lts_03_2024.

  3. 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.

  4. Po dokončení operace spusťte z azure-iot-sdk-c adresáře následující příkazy:

    mkdir cmake
    cd cmake
    
  5. 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.

  6. 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.

  1. 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
    
  2. 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.

Diagram that shows relationship of root C A, intermediate C A, and device certificates.

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.

  1. 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.

  2. 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
    
  3. 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
    
  4. 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.

  1. 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
    
  2. 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).

  3. 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í.

  1. 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
    
  2. 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).

  3. 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
    
  4. 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.

  1. Vytvořte první privátní klíč zařízení.

    openssl genrsa -out ./private/device-01.key.pem 4096
    
  2. 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).

  3. 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
    
  4. 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)
    
  5. 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
    
  6. 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-----
    
  7. 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:

  1. Na webu Azure Portal přejděte k vaší instanci služby Device Provisioning.

  2. V nabídce vlevo otevřete certifikáty a pak vyberte Přidat a přidejte nový certifikát.

  3. Zadejte popisný zobrazovaný název certifikátu. Přejděte do umístění souboru certs/azure-iot-test-only.root.ca.cert.pemkořenové certifikační autority . Vyberte Odeslat.

  4. Zaškrtněte políčko Nastavit stav certifikátu, který se má ověřit při nahrání.

    Screenshot that shows adding the root CA certificate and the set certificate status to verified on upload box selected.

  5. Zvolte Uložit.

  6. Ujistěte se, že se váš certifikát zobrazuje na kartě certifikátu se stavem Ověřeno.

    Screenshot that shows the verified root C A certificate in the list of certificates.

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:

  1. 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
    
  2. 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ů.

  3. 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.

  4. Importujte root.pfxpodle 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 .
  5. 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í

  1. Přihlaste se k webu Azure Portal a přejděte k instanci služby Device Provisioning.

  2. V části Nastavení navigační nabídky vyberte Spravovat registrace.

  3. V horní části stránky vyberte Přidat skupinu registrací.

  4. 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
    Osvědčení 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í.

    Screenshot that shows adding an enrollment group for X.509 certificate attestation.

  5. Vyberte Další: IoT Hubs.

  6. 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.

    Screenshot that shows connecting IoT hubs to the new enrollment group.

  7. Vybrat další: Nastavení zařízení

  8. 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.

  9. Vyberte Další: Zkontrolovat a vytvořit.

  10. 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.

  1. Na webu Azure Portal vyberte kartu Přehled vaší instance služby Device Provisioning a poznamenejte si hodnotu Oboru ID.

    Screenshot that shows the ID scope on the DPS overview pane.

  2. 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ázev azure_iot_sdks.sln.

  3. 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.

  4. 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";
    
  5. Ve stejném souboru vyhledejte definici funkce main(). Ujistěte se, že hsm_type je proměnná nastavená SECURE_DEVICE_TYPE_X509 a že jsou všechny ostatní hsm_type řádky zakomentované. Pří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;
    
  6. Uložte provedené změny.

  7. 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:

  1. 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.

  2. 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";
    
  3. 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.

  4. 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-----";        
    
  5. 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.

  6. 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-----";
    
  7. Uložte provedené změny.

  8. 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

  1. 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:
    
  2. 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.

  1. Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot of the ID scope on Azure portal.

  3. 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.

  4. 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 -- --helpparametrů .

  5. 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.

  1. Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.

  2. Zkopírujte hodnotu oboru ID.

    Screenshot of the ID scope in the Azure portal.

  3. 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
    
  4. 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í.

  5. 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>
    
  6. 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
    
  7. 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
    
  8. 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
    
  9. 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.

  1. Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.

  2. Zkopírujte obor ID.

    Screenshot of the ID scope in the Azure portal.

  3. 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.
  4. 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>
    
  5. 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
    
  6. 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
    
  7. 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 .

  8. 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
    
  9. 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.

  1. Na webu Azure Portal vyberte kartu Přehled pro vaši službu Device Provisioning.

  2. Zkopírujte obor ID.

    Screenshot of the ID scope in the Azure portal.

  3. 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
    
  4. 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í.

    1. Otevřete soubor .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java v oblíbeném editoru.

    2. Aktualizujte následující hodnoty. Pro idScopepouž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]";
      
    3. 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;
      
    4. 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.

    5. 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.

    6. 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 konstantu leafPrivateKey .

      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.

    7. 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.

    8. 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ří.

    9. Uložte provedené změny.

  5. Sestavte ukázku a přejděte do target složky.

    mvn clean install
    cd target
    
  6. 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 [0d143280-dbc7-405f-a61e-fcc7a1d80b87] Message Id [4d8d39c8-5a38-4299-8f07-3ae02cdc3218] )
    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 [0d143280-dbc7-405f-a61e-fcc7a1d80b87] Message Id [4d8d39c8-5a38-4299-8f07-3ae02cdc3218] )
    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 [0d143280-dbc7-405f-a61e-fcc7a1d80b87] Message Id [4d8d39c8-5a38-4299-8f07-3ae02cdc3218] )
    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 [0d143280-dbc7-405f-a61e-fcc7a1d80b87] Message Id [4d8d39c8-5a38-4299-8f07-3ae02cdc3218] ) with status OK
    Message sent!
    
  7. 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í:

  1. Na webu Azure Portal přejděte do instance služby Device Provisioning.

  2. V nabídce Nastavení vyberte Spravovat registrace.

  3. Vyberte skupiny registrací. Položka skupiny registrací X.509, kterou jste vytvořili dříve, by se měla zobrazit v seznamu.

  4. 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.

    Screenshot that shows the registration status details for the enrollment group on Azure portal.

  5. 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:

  1. Na webu Azure Portal přejděte do centra IoT, ke kterému bylo vaše zařízení přiřazeno.

  2. V nabídce Správa zařízení vyberte Zařízení.

  3. 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ýmna povolenou. Pokud zařízení nevidíte, vyberte Aktualizovat.

    Screenshot that shows the devices are registered with the I o T hub in Azure portal.

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.

  1. Zavřete na svém počítači okno výstupu ukázky klienta zařízení.

Odstranění skupiny registrací

  1. V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky.

  2. Vyberte instanci DPS.

  3. V nabídce Nastavení vyberte Spravovat registrace.

  4. Vyberte kartu Skupiny registrací.

  5. Vyberte skupinu registrací, kterou jste použili pro účely tohoto kurzu.

  6. 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í.

  7. Vraťte se na stránku Spravovat registrace a ujistěte se, že je vybraná karta Skupiny registrací.

  8. Zaškrtněte políčko vedle názvu skupiny registrace, kterou jste použili pro účely tohoto kurzu.

  9. V horní části stránky vyberte Odstranit.

Odstranění registrovaných certifikátů certifikační autority z DPS

  1. 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

  1. V nabídce vlevo na webu Azure Portal vyberte Všechny prostředky.

  2. Vyberte centrum IoT.

  3. V nabídce Průzkumníky vyberte zařízení IoT.

  4. Zaškrtněte políčko vedle ID zařízení zařízení, která jste zaregistrovali v tomto kurzu. Například device-01 a device-02.

  5. 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.