Tutorial: Memprovisikan beberapa perangkat X.509 menggunakan grup pendaftaran
Dalam tutorial ini, Anda mempelajari cara memprovisikan grup perangkat IoT yang menggunakan sertifikat X.509 untuk autentikasi. Contoh kode perangkat dari Azure IoT SDK akan dijalankan pada komputer pengembangan Anda untuk mensimulasikan provisi perangkat X.509. Di perangkat nyata, kode perangkat akan disebarkan dan dijalankan dari perangkat IoT.
Azure IoT Hub Device Provisioning Service mendukung dua jenis pendaftaran untuk menyediakan perangkat:
- Grup pendaftaran: Digunakan untuk mendaftarkan beberapa perangkat terkait. Tutorial ini menunjukkan provisi dengan grup pendaftaran.
- Pendaftaran individu: Digunakan untuk mendaftarkan perangkat tunggal.
Azure IoT Hub Device Provisioning Service mendukung tiga bentuk autentikasi untuk menyediakan perangkat:
- Sertifikat X.509 - Tutorial ini menunjukkan pengesahan sertifikat X.509
- Modul platform tepercaya (TPM)
- Kunci konten
Dalam skenario produksi, Modul Keamanan Perangkat Keras (HSM) digunakan untuk penyimpanan rahasia perangkat berbasis perangkat keras yang aman. HSM dapat digunakan dengan kunci konten, sertifikat X.509, atau pengesahan TPM untuk menyediakan penyimpanan yang aman untuk rahasia. Penyimpanan rahasia perangkat berbasis perangkat keras disarankan untuk membantu melindungi informasi sensitif seperti kunci privat sertifikat perangkat Anda.
Dalam tutorial ini, Anda menyelesaikan tujuan berikut:
- Membuat rantai sertifikat kepercayaan.untuk mengatur sekumpulan perangkat menggunakan sertifikat X.509.
- Buat pendaftaran grup baru yang menggunakan rantai sertifikat.
- Siapkan lingkungan pengembangan.
- Provisikan perangkat menggunakan rantai sertifikat menggunakan kode sampel di SDK perangkat Azure IoT.
Prasyarat
Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum Anda memulai.
Selesaikan langkah-langkah dalam Menyiapkan IoT Hub Device Provisioning Service dengan portal Microsoft Azure.
Prasyarat berikut untuk lingkungan pengembangan Windows yang digunakan untuk mensimulasikan perangkat. Untuk Linux atau macOS, lihat bagian yang sesuai di Menyiapkan lingkungan pengembangan dalam dokumentasi SDK.
Instal Visual Studio 2022 dengan beban kerja 'Pengembangan desktop dengan C++' diaktifkan. Visual Studio 2015, Visual Studio 2017, dan Visual Studio 19 juga didukung.
Instal sistem build CMake terbaru. Pastikan Anda mencentang opsi yang menambahkan CMake executable ke jalur Anda.
Penting
Konfirmasikan bahwa prasyarat Visual Studio (Visual Studio dan beban kerja 'Pengembangan desktop dengan C++') diinstal pada komputer Anda sebelum memulai
CMake
penginstalan. Setelah prasyarat tersedia, dan unduhan diverifikasi, pasang sistem build CMake. Selain itu, ketahuilah bahwa versi lama sistem build CMake gagal menghasilkan file solusi yang digunakan dalam tutorial ini. Pastikan untuk menggunakan versi CMake versi terbaru.
Prasyarat berikut adalah untuk lingkungan pengembangan Windows. Untuk Linux atau macOS, lihat bagian yang sesuai di Menyiapkan lingkungan pengembangan dalam dokumentasi SDK.
Instal .NET SDK 6.0 atau yang lebih baru di komputer berbasis Windows Anda. Anda bisa menggunakan perintah berikut untuk memeriksa versi yang Anda gunakan.
dotnet --info
Prasyarat berikut adalah untuk lingkungan pengembangan Windows. Untuk Linux atau macOS, lihat bagian yang sesuai di Menyiapkan lingkungan pengembangan dalam dokumentasi SDK.
- Instal Node.js v4.0 atau lebih tinggi di komputer Anda.
Prasyarat berikut adalah untuk lingkungan pengembangan Windows.
- Python 3.6 atau yang lebih baru di komputer Anda.
Prasyarat berikut adalah untuk lingkungan pengembangan Windows. Untuk Linux atau macOS, lihat bagian yang sesuai di Menyiapkan lingkungan pengembangan dalam dokumentasi SDK.
Instal Java SE Development Kit 8 atau yang lebih baru di komputer Anda.
Unduh dan pasang Maven.
Pasang versi terbaru Git. Pastikan Git ditambahkan ke variabel lingkungan yang dapat diakses oleh jendela perintah.
Pastikan OpenSSL diinstal pada komputer Anda. Di Windows, penginstalan Git Anda menyertakan penginstalan OpenSSL. Anda dapat mengakses OpenSSL dari prompt Git Bash. Untuk memverifikasi bahwa OpenSSL diinstal, buka perintah Git Bash dan masukkan
openssl version
.Catatan
Kecuali Anda terbiasa dengan OpenSSL dan sudah menginstalnya di komputer Windows Anda, sebaiknya gunakan OpenSSL dari prompt Git Bash. Atau, Anda dapat memilih untuk mengunduh kode sumber dan membangun OpenSSL. Jika Anda memilih untuk membuat atau mengunduh OpenSSL, pastikan biner OpenSSL dapat diakses di jalur Anda dan variabel
OPENSSL_CNF
lingkungan diatur ke jalur file openssl.cnf Anda.
Mempersiapkan lingkungan pengembangan Anda
Di bagian ini, Anda menyiapkan lingkungan pengembangan yang digunakan untuk membangun Azure IoT C SDK. SDK mencakup kode sampel dan alat yang digunakan oleh provisi perangkat dengan DPS.
Di browser web, buka halaman Rilis Azure IoT C SDK.
Salin nama tag untuk rilis terbaru Azure IoT C SDK, misalnya:
lts_03_2024
.Buka perintah Windows dan jalankan perintah berikut untuk mengkloning rilis terbaru repositori Azure IoT Device SDK for C GitHub. Ganti
<release-tag>
dengan tag yang Anda salin di langkah sebelumnya.git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git cd azure-iot-sdk-c git submodule update --init
Operasi ini mungkin memerlukan waktu beberapa menit untuk selesai.
Setelah operasi selesai, jalankan perintah berikut dari direktori
azure-iot-sdk-c
:mkdir cmake cd cmake
Sampel kode menggunakan sertifikat X.509 untuk menyediakan pengesahan melalui autentikasi X.509. Jalankan perintah berikut untuk membangun versi SDK khusus untuk platform pengembangan Anda yang mencakup klien provisi perangkat. Solusi Visual Studio untuk perangkat yang disimulasikan dibuat di direktori
cmake
.Ganti
<path
dengan jalur absolut ke C SDK yang Anda kloning.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
Jika
cmake
tidak menemukan pengkompilasi C++, Anda mungkin mendapatkan kesalahan build saat menjalankan perintah di atas. Jika hal ini terjadi, coba jalankan perintah ini di perintah Visual Studio.Setelah build berhasil, beberapa garis output terakhir akan terlihat mirip dengan output berikut:
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
Buka prompt perintah Windows dan kloning repositori Azure IoT SDK for C# GitHub menggunakan perintah berikut:
git clone https://github.com/Azure/azure-iot-sdk-csharp.git
Buka prompt perintah Windows dan kloning Azure IoT SDK untuk repositori GitHub Node.js menggunakan perintah berikut:
git clone https://github.com/Azure/azure-iot-sdk-node.git
Buka prompt perintah Windows dan kloning repositori Azure IoT Device SDK for Python GitHub menggunakan perintah berikut:
git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive
Catatan
Sampel yang digunakan dalam tutorial ini berada di cabang v2 dari repositori azure-iot-sdk-python. V3 dari Python SDK tersedia untuk digunakan dalam versi beta.
Buka perintah Windows dan kloning repositori Azure IoT Samples for Java GitHub menggunakan perintah berikut:
git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
Buka direktori
azure-iot-sdk-java
akar dan buat proyek untuk mengunduh semua paket yang dibutuhkan.cd azure-iot-sdk-java mvn install -DskipTests=true
Membuat rantai sertifikat X.509
Di bagian ini, Anda menghasilkan rantai sertifikat X.509 dari tiga sertifikat untuk menguji setiap perangkat dengan tutorial ini. Sertifikat memiliki hierarki berikut.
Sertifikat akar Anda mengunggah dan memverifikasi sertifikat akar dengan DPS. Verifikasi ini memungkinkan DPS mempercayai sertifikat tersebut dan memverifikasi sertifikat yang ditandatangani olehnya.
Sertifikat perantara: Umumnya menggunakan sertifikat perantara untuk mengelompokkan perangkat secara logis menurut lini produk, divisi perusahaan, atau kriteria lainnya. Tutorial ini menggunakan rantai sertifikat dengan satu sertifikat perantara, tetapi dalam skenario produksi Anda mungkin memiliki beberapa. Sertifikat perantara dalam rantai ini ditandatangani oleh sertifikat akar. Sertifikat ini disediakan untuk grup pendaftaran yang dibuat di DPS. Konfigurasi ini memungkinkan pengelolaan seluruh grup perangkat yang sertifikat perangkatnya telah ditandatangani oleh sertifikat perantara yang sama.
Sertifikat perangkat: Sertifikat perangkat (kadang-kadang disebut sertifikat daun) ditandatangani oleh sertifikat perantara dan disimpan di perangkat bersama dengan kunci privatnya. Idealnya, item sensitif ini akan disimpan dengan aman dengan HSM. Beberapa sertifikat perangkat dapat ditandatangani oleh sertifikat perantara yang sama. Setiap perangkat menyajikan sertifikat dan kunci privatnya, bersama dengan rantai sertifikat, saat mencoba provisi.
Untuk informasi selengkapnya tentang rantai sertifikat, lihat pengesahan sertifikat X.509.
Menyiapkan lingkungan X.509 OpenSSL
Di bagian ini, Anda membuat file konfigurasi Openssl, struktur direktori, dan file lain yang digunakan oleh perintah Openssl.
Buka perintah Git Bash dan navigasikan ke folder tempat Anda ingin membuat sertifikat dan kunci X.509 untuk tutorial ini.
Buat file konfigurasi OpenSSL bernama openssl_root_ca.cnf untuk sertifikat OS akar Anda. File konfigurasi OpenSSL berisi kebijakan dan definisi yang digunakan oleh perintah OpenSSL. Salin dan tempel teks berikut ke dalam file 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
Buat file konfigurasi OpenSSL bernama openssl_device_intermediate_ca.cnf untuk digunakan untuk sertifikat menengah dan perangkat. Salin dan tempel teks berikut ke dalam file 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
Buat struktur direktori, file database index.txt, dan serial file nomor seri yang digunakan oleh perintah OpenSSL dalam tutorial ini:
mkdir certs csr newcerts private touch index.txt openssl rand -hex 16 > serial
Buat sertifikat CA akar
Jalankan perintah berikut untuk membuat kunci privat CA akar dan sertifikat OS akar. Anda menggunakan sertifikat dan kunci ini untuk menandatangani sertifikat perantara Anda.
Di terminal Git Bash Anda, buat kunci privat CA akar:
openssl genrsa -aes256 -passout pass:1234 -out ./private/azure-iot-test-only.root.ca.key.pem 4096
Buat sertifikat OS akar:
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
Penting
Garis miring condong kanan ekstra yang diberikan untuk nama subjek (
//CN=Azure IoT Hub CA Cert Test Only
) hanya diperlukan untuk melewatkan string dengan Git pada platform Windows. Pada platform Linux, berikan nama subjek hanya dengan satu garis miring ke depan (/CN=Azure IoT Hub CA Cert Test Only
).Periksa sertifikat OS akar:
openssl x509 -noout -text -in ./certs/azure-iot-test-only.root.ca.cert.pem
Amati bahwa Penerbit dan Subjek keduanya adalah CA akar.
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)
Membuat sertifikat OS perantara
Jalankan perintah berikut untuk membuat kunci privat OS perantara dan sertifikat CA perantara. Anda menggunakan sertifikat dan kunci ini untuk menandatangani sertifikat perangkat Anda.
Di terminal Git Bash Anda, buat kunci privat CA perantara:
openssl genrsa -aes256 -passout pass:1234 -out ./private/azure-iot-test-only.intermediate.key.pem 4096
Buat permintaan penandatanganan sertifikat OS perantara (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
Penting
Garis miring condong kanan ekstra yang diberikan untuk nama subjek (
//CN=Azure IoT Hub Intermediate Cert Test Only
) hanya diperlukan untuk melewatkan string dengan Git pada platform Windows. Pada platform Linux, berikan nama subjek dengan satu garis miring/CN=Azure IoT Hub Intermediate Cert Test Only
().Menandatangani sertifikat perantara dengan sertifikat OS akar
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
Periksa sertifikat OS perantara:
openssl x509 -noout -text -in ./certs/azure-iot-test-only.intermediate.cert.pem
Amati bahwa Penerbit adalah CA akar, dan Subjek adalah CA perantara.
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)
Membuat sertifikat perangkat
Di bagian ini, Anda membuat dua sertifikat perangkat dan sertifikat rantai lengkapnya. Sertifikat rantai lengkap berisi sertifikat perangkat, sertifikat OS perantara, dan sertifikat OS akar. Perangkat harus menunjukkan sertifikat rantai penuhnya ketika mendaftar dengan DPS.
Buat kunci privat perangkat pertama.
openssl genrsa -out ./private/device-01.key.pem 4096
Buat CSR sertifikat perangkat.
Nama umum subjek (CN) sertifikat perangkat harus diatur ke ID pendaftaran yang digunakan perangkat Anda untuk mendaftar dengan DPS. ID pendaftaran adalah string karakter alfanumerik yang tidak peka huruf besar/kecil ditambah karakter khusus:
'-'
, ,'.'
'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
). Nama umum harus mematuhi format ini. DPS mendukung ID pendaftaran hingga 128 karakter; namun, panjang maksimum nama umum subjek dalam sertifikat X.509 adalah 64 karakter. OLEH KARENA ITU, ID pendaftaran dibatasi hingga 64 karakter saat menggunakan sertifikat X.509. Untuk pendaftaran grup, ID pendaftaran juga digunakan sebagai ID perangkat di IoT Hub.Nama umum subjek diatur menggunakan
-subj
parameter . Dalam perintah berikut, nama umum diatur ke 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
Penting
Garis miring condong kanan ekstra yang diberikan untuk nama subjek (
//CN=device-01
) hanya diperlukan untuk melewatkan string dengan Git pada platform Windows. Pada platform Linux, berikan nama subjek dengan satu garis miring/CN=device-01
().Tanda tangani sertifikat perangkat.
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
Periksa sertifikat perangkat:
openssl x509 -noout -text -in ./certs/device-01.cert.pem
Amati bahwa Penerbit adalah CA perantara, dan Subjek adalah ID pendaftaran perangkat,
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)
Perangkat harus menunjukkan rantai sertifikat lengkap saat diautentikasi dengan DPS. Gunakan perintah berikut untuk membuat rantai sertifikat:
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
Buka file rantai sertifikat, ./certs/device-01-full-chain.cert.pem, di editor teks untuk memeriksanya. Teks rantai sertifikat berisi rantai lengkap dari ketiga sertifikat. Anda menggunakan rantai sertifikat ini nanti dalam tutorial ini untuk memprovisikan
device-01
.Teks rantai lengkap memiliki format berikut:
-----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-----
Untuk membuat kunci privat, sertifikat X.509, dan sertifikat rantai penuh untuk perangkat kedua, salin dan tempel skrip ini ke prompt perintah Git Bash Anda. Untuk membuat sertifikat untuk lebih banyak perangkat, Anda dapat memodifikasi variabel yang
registration_id
dideklarasikan di awal skrip.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
Penting
Garis miring condong kanan ekstra yang diberikan untuk nama subjek (
//CN=$registration_id
) hanya diperlukan untuk melewatkan string dengan Git pada platform Windows. Pada platform Linux, berikan nama subjek dengan satu garis miring/CN=$registration_id
().Catatan
Skrip ini menggunakan ID pendaftaran sebagai nama file dasar untuk kunci privat dan file sertifikat. Jika ID pendaftaran Berisi karakter yang bukan karakter nama file yang valid, Anda harus mengubah skrip yang sesuai.
Peringatan
Teks untuk sertifikat hanya berisi informasi kunci publik.
Namun, perangkat juga harus memiliki akses ke kunci privat untuk sertifikat perangkat. Ini diperlukan karena perangkat harus melakukan verifikasi menggunakan kunci tersebut saat runtime ketika mencoba menyediakan. Sensitivitas kunci ini adalah salah satu alasan utama perlunya menggunakan penyimpanan berbasis perangkat keras dalam HSM nyata untuk membantu mengamankan kunci privat.
Anda menggunakan file berikut di sisa tutorial ini:
Sertifikat | File | Deskripsi |
---|---|---|
sertifikat OS akar. | certs/azure-iot-test-only.root.ca.cert.pem | Diunggah ke DPS dan diverifikasi. |
sertifikat OS menengah | certs/azure-iot-test-only.intermediate.cert.pem | Digunakan untuk membuat grup pendaftaran di DPS. |
kunci privat perangkat-01 | private/device-01.key.pem | Digunakan oleh perangkat untuk memverifikasi kepemilikan sertifikat perangkat selama autentikasi dengan DPS. |
sertifikat rantai lengkap device-01 | certs/device-01-full-chain.cert.pem | Disajikan oleh perangkat untuk mengautentikasi dan mendaftar dengan DPS. |
kunci privat device-02 | private/device-02.key.pem | Digunakan oleh perangkat untuk memverifikasi kepemilikan sertifikat perangkat selama autentikasi dengan DPS. |
sertifikat rantai lengkap device-02 | certs/device-02-full-chain.cert.pem | Disajikan oleh perangkat untuk mengautentikasi dan mendaftar dengan DPS. |
Memverifikasi kepemilikan sertifikat akar
Agar DPS dapat memvalidasi rantai sertifikat perangkat selama autentikasi, Anda harus mengunggah dan memverifikasi kepemilikan sertifikat OS akar. Untuk menambahkan sertifikat OS akar ke instans DPS Anda, ikuti langkah-langkah berikut:
Di portal Azure, navigasikan ke instans Device Provisioning Service Anda.
Buka Sertifikat dari menu sebelah kiri lalu pilih Tambahkan untuk menambahkan sertifikat baru.
Masukkan nama tampilan yang ramah untuk sertifikat Anda. Telusuri ke lokasi file
certs/azure-iot-test-only.root.ca.cert.pem
sertifikat OS akar . Pilih Unggah.Pilih kotak untuk Mengatur status sertifikat ke diverifikasi saat diunggah.
Pilih Simpan.
Pastikan sertifikat Anda ditampilkan di tab sertifikat dengan status Terverifikasi.
Memperbarui penyimpanan sertifikat di perangkat berbasis Windows
Di perangkat non-Windows, Anda dapat melewati rantai sertifikat dari kode sebagai penyimpanan sertifikat.
Di perangkat berbasis Windows, Anda harus menambahkan sertifikat penandatanganan (akar dan perantara) ke penyimpanan sertifikat Windows. Jika tidak, sertifikat penandatanganan tidak akan dikirim ke DPS oleh saluran aman dengan Keamanan Lapisan Transportasi (TLS).
Tip
Anda juga dapat menggunakan OpenSSL alih-alih saluran aman (Schannel) dengan C SDK. Untuk informasi selengkapnya tentang cara menggunakan OpenSSL, lihat Menggunakan OpenSSL di SDK.
Untuk menambahkan sertifikat penandatanganan ke penyimpanan sertifikat di perangkat berbasis Windows:
Di terminal Git Bash Anda, konversikan sertifikat penandatanganan Anda menjadi
.pfx
sebagai berikut.Sertifikat CA akar:
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
Sertifikat OS perantara:
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
Klik kanan tombol Mulai Windows, lalu pilih Jalankan. Masukkan certmgr.msc dan pilih Ok untuk memulai pengelola sertifikat.
Di manajer sertifikat, di bawah Sertifikat - Pengguna Saat Ini, pilih Otoritas Sertifikasi Akar Tepercaya. Lalu pada menu, pilih Tindakan>Semua Tugas>Impor.
Ikuti langkah-langkah Wizard Impor Sertifikat untuk mengimpor
root.pfx
.- Pastikan untuk mencari berdasarkan Personal Information Exchange (.pfx)
- Gunakan
1234
sebagai kata sandi. - Tempatkan sertifikat di penyimpanan sertifikat Otoritas Sertifikasi Akar Tepercaya.
Ulangi langkah-langkah manajer sertifikat ini untuk mengimpor
intermediate.pfx
.- Tempatkan sertifikat di penyimpanan sertifikat Otoritas Sertifikasi Perantara.
Sertifikat penandatanganan Anda kini dipercaya di perangkat berbasis Windows dan rantai lengkap dapat diangkut ke DPS.
Membuat grup pendaftaran
Masuk ke portal Microsoft Azure dan navigasikan ke instans Device Provisioning Service.
Pilih Kelola pendaftaran dari bagian Pengaturan menu navigasi.
Di bagian atas halaman, pilih Tambahkan grup pendaftaran.
Pada tab Pendaftaran + provisi halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk mengonfigurasi detail grup pendaftaran:
Bidang Deskripsi Pengesahan Pilih sertifikat perantara X.509 sebagai mekanisme Pengesahan jika Anda ingin mengunggah sertifikat perantara yang akan digunakan hanya untuk grup pendaftaran ini, atau pilih sertifikat X.509 yang diunggah ke Device Provisioning Service ini jika Anda sudah mengunggah sertifikat perantara. Pengaturan sertifikat X.509 Bergantung pada metode pengesahan yang Anda pilih, unggah atau pilih sertifikat perantara utama dan sekunder untuk grup pendaftaran ini. Nama grup Berikan nama untuk grup perangkat. Nama grup pendaftaran adalah string yang tidak peka huruf besar/kecil (panjangnya hingga 128 karakter) dari karakter alfanumerik ditambah karakter khusus: '-'
, ,'.'
'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
).Status provisi Centang kotak Aktifkan pendaftaran ini jika Anda ingin grup pendaftaran ini tersedia untuk menyediakan perangkat. Hapus centang pada kotak ini jika Anda ingin grup dinonaktifkan. Anda dapat mengubah pengaturan ini nanti. Kebijakan provisi ulang Pilih kebijakan provisi ulang yang mencerminkan bagaimana Anda ingin DPS menangani perangkat yang meminta provisi ulang. Untuk informasi selengkapnya, lihat Kebijakan provisi ulang Pilih Berikutnya: Hub IoT.
Pada tab hub IoT di halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk menentukan hub IoT mana yang dapat disediakan oleh grup pendaftaran untuk:
Bidang Deskripsi Hub IoT target Pilih satu atau beberapa hub IoT tertaut Anda, atau tambahkan tautan baru ke hub IoT. Untuk mempelajari selengkapnya tentang menautkan hub IoT ke instans DPS Anda, lihat Cara menautkan dan mengelola hub IoT. Kebijakan alokasi Jika Anda memilih lebih dari satu hub IoT tertaut, pilih bagaimana Anda ingin menetapkan perangkat ke hub yang berbeda. Untuk mempelajari selengkapnya tentang kebijakan alokasi, lihat Cara menggunakan kebijakan alokasi.
Jika Anda hanya memilih satu hub IoT tertaut, sebaiknya gunakan kebijakan distribusi Tertimbang Merata.Pilih Berikutnya: Pengaturan perangkat
Pada tab Pengaturan perangkat di halaman Tambahkan grup pendaftaran, berikan informasi berikut untuk menentukan bagaimana perangkat yang baru disediakan akan dikonfigurasi:
Bidang Deskripsi IoT Edge Periksa Aktifkan IoT Edge pada perangkat yang disediakan jika semua perangkat yang disediakan melalui grup ini akan menjalankan Azure IoT Edge. Hapus centang pada kotak ini jika grup ini hanya untuk perangkat yang tidak mendukung IoT Edge. Baik semua perangkat dalam grup akan diaktifkan IoT Edge atau tidak ada yang bisa. Tag perangkat Gunakan kotak teks ini untuk menyediakan tag apa pun yang ingin Anda terapkan ke perangkat kembar perangkat yang disediakan. Properti yang diinginkan Gunakan kotak teks ini untuk menyediakan properti yang diinginkan yang ingin Anda terapkan ke perangkat kembar perangkat yang disediakan. Untuk informasi selengkapnya, lihat Memahami dan menggunakan perangkat kembar di IoT Hub.
Pilih Berikutnya: Tinjau + buat.
Pada tab Tinjau + buat , verifikasi semua nilai Anda lalu pilih Buat.
Menyiapkan dan menjalankan kode provisi perangkat
Di bagian ini, Anda akan memperbarui kode sampel dengan informasi instans Layanan Provisi Perangkat Anda. Jika perangkat diautentikasi, perangkat ditetapkan ke hub IoT yang ditautkan ke instans Device Provisioning Service yang dikonfigurasi di bagian ini.
Di bagian ini, Anda menggunakan perintah Git Bash dan IDE Visual Studio.
Mengonfigurasi kode perangkat provisi
Di bagian ini, Anda akan memperbarui kode sampel dengan informasi instans Layanan Provisi Perangkat Anda.
Di portal Azure, pilih tab Gambaran Umum untuk instans Device Provisioning Service Anda dan catat nilai Cakupan ID.
Luncurkan Visual Studio dan buka file solusi baru yang dibuat di direktori
cmake
yang Anda buat di akar repositori git azure-iot-sdk-c. File solusi diberi bernamaazure_iot_sdks.sln
.Di Penjelajah Solusi untuk Visual Studio, navigasikan ke Provision_Samples > prov_dev_client_sample > File Sumber dan buka prov_dev_client_sample.c.
Cari konstanta
id_scope
, dan ganti nilainya dengan nilai Cakupan ID yang telah Anda salin sebelumnya. Contohnya:static const char* id_scope = "0ne00000A0A";
Temukan definisi untuk fungsi
main()
dalam file yang sama. Pastikanhsm_type
variabel diatur keSECURE_DEVICE_TYPE_X509
dan bahwa semua baris lainhsm_type
dikomentari. Misalnya:SECURE_DEVICE_TYPE hsm_type; //hsm_type = SECURE_DEVICE_TYPE_TPM; hsm_type = SECURE_DEVICE_TYPE_X509; //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
Simpan perubahan.
Klik kanan proyek prov_dev_client_sample dan pilih Atur sebagai Proyek Startup.
Mengonfigurasi kode rintisan HSM kustom
Spesifikasi berinteraksi dengan penyimpanan berbasis perangkat keras aman aktual bervariasi tergantung pada perangkat keras perangkat. Rantai sertifikat yang digunakan oleh perangkat yang disimulasikan dalam tutorial ini akan dikodekan secara permanen dalam kode stub HSM kustom. Dalam skenario dunia nyata, rantai sertifikat akan disimpan dalam perangkat keras HSM aktual untuk memberikan keamanan yang lebih baik untuk informasi sensitif. Metode yang sama dengan metode rintisan yang digunakan dalam sampel ini kemudian akan diimplementasikan untuk membaca rahasia dari penyimpanan berbasis perangkat keras tersebut.
Meskipun perangkat keras HSM tidak diperlukan, disarankan untuk melindungi informasi sensitif seperti kunci privat sertifikat. Jika HSM aktual sedang dipanggil oleh sampel, kunci privat tidak akan ada dalam kode sumber. Memiliki kunci dalam kode sumber akan mengekspos kunci kepada siapa pun yang dapat melihat kode. Ini hanya dilakukan dalam tutorial ini untuk membantu pembelajaran.
Untuk memperbarui kode stub HSM kustom untuk mensimulasikan identitas perangkat dengan ID device-01
:
Di Penjelajah Solusi untuk Visual Studio, navigasi ke Provision_Samples > custom_hsm_example > File Sumber dan buka custom_hsm_example.c.
Perbarui nilai string konstanta string
COMMON_NAME
menggunakan nama umum yang Anda gunakan saat membuat sertifikat perangkat.static const char* const COMMON_NAME = "device-01";
Di terminal Git Bash Anda, jalankan perintah berikut untuk menghasilkan konstanta string untuk sertifikat perangkat Anda:
sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' ./certs/device-01-full-chain.cert.pem
Salin output perintah ini.
Perbarui nilai string string
CERTIFICATE
konstanta menggunakan rantai sertifikat yang Anda simpan di ./certs/device-01-full-chain.cert.pem setelah membuat sertifikat Anda. Gunakan teks sertifikat output dari langkah sebelumnya untuk nilai konstanta.Sintaks teks sertifikat harus cocok dengan pola berikut tanpa spasi tambahan atau penguraian yang dilakukan oleh 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-----";
Di Git Bash, jalankan perintah berikut untuk menghasilkan konstanta string untuk kunci privat perangkat Anda:
sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' ./private/device-01.key.pem
Salin output perintah ini.
Perbarui nilai
PRIVATE_KEY
string konstanta dengan kunci privat untuk sertifikat perangkat Anda. Gunakan teks kunci privat output dari langkah sebelumnya untuk nilai konstanta.Sintaks teks kunci privat harus cocok dengan pola berikut tanpa spasi tambahan atau penguraian yang dilakukan oleh Visual Studio.
static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n" "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" "-----END RSA PRIVATE KEY-----";
Simpan perubahan.
Klik kanan proyek custom_hsm_example dan pilih Bangun.
Penting
Anda harus membangun proyek custom_hsm_example sebelum membangun solusi lainnya di bagian berikutnya.
Jalankan sampel
Pada menu Visual Studio, pilih Debug>Mulai tanpa penelusuran kesalahan untuk menjalankan solusinya. Jika diminta untuk membuat kembali proyek, pilih Ya untuk membuat kembali proyek sebelum dijalankan.
Output berikut adalah contoh perangkat
device-01
simulasi yang berhasil di-boot dan terhubung ke layanan provisi. Perangkat ditetapkan untuk hub IoT dan terdaftar: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:
Ulangi langkah-langkah dalam Mengonfigurasi kode stub HSM kustom untuk perangkat kedua Anda (
device-02
) dan jalankan sampel lagi. Gunakan nilai berikut untuk perangkat tersebut:Deskripsi Nilai Nama umum "device-02"
Rantai sertifikat lengkap Buat teks menggunakan ./certs/device-02-full-chain.cert.pem Kunci privat Hasilkan teks menggunakan ./private/device-02.key.pem Output berikut adalah contoh perangkat simulasi
device-02
yang berhasil di-boot, dan terhubung ke layanan provisi. Perangkat ditetapkan untuk hub IoT dan terdaftar: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:
Kode sampel C# disiapkan untuk menggunakan sertifikat X.509 yang disimpan dalam file berformat PKCS#12 yang dilindungi kata sandi (.pfx). Sertifikat rantai lengkap yang Anda buat sebelumnya berada dalam format PEM. Untuk mengonversi sertifikat rantai penuh ke format PKCS#12, masukkan perintah berikut di prompt Git Bash Anda dari direktori tempat Anda sebelumnya menjalankan perintah 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
Di sisa bagian ini, gunakan prompt perintah Windows Anda.
Di portal Azure, pilih tab Gambaran Umum untuk Device Provisioning Service Anda.
Salin nilai Cakupan ID.
Di prompt perintah Windows Anda, ubah ke direktori X509Sample . Direktori ini terletak di repositori SDK yang Anda kloning di langkah sebelumnya: .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample.
Masukkan perintah berikut untuk membangun dan menjalankan sampel provisi perangkat X.509. Ganti
<id-scope>
dengan Cakupan ID yang Anda salin dari portal Azure. Ganti<your-certificate-folder>
dengan jalur ke folder tempat Anda menjalankan perintah OpenSSL Anda.dotnet run -- -s <id-scope> -c <your-certificate-folder>\certs\device-01-full-chain.cert.pfx -p 1234
Perangkat terhubung ke DPS dan ditetapkan ke hub IoT. Kemudian, perangkat mengirim pesan telemetri ke hub IoT. Anda harus melihat output yang mirip dengan berikut ini:
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.
Catatan
Jika Anda tidak menentukan sertifikat dan kata sandi pada baris perintah, file sertifikat akan default ke ./certificate.pfx dan Anda akan dimintai kata sandi Anda.
Parameter tambahan dapat diteruskan untuk mengubah TransportType (-t) dan GlobalDeviceEndpoint (-g). Untuk daftar lengkap jenis
dotnet run -- --help
parameter .Untuk mendaftarkan perangkat kedua Anda, jalankan ulang sampel menggunakan sertifikat rantai penuhnya.
dotnet run -- -s <id-scope> -c <your-certificate-folder>\certs\device-02-full-chain.cert.pfx -p 1234
Dalam langkah-langkah berikut, gunakan prompt perintah Windows Anda.
Di portal Azure, pilih tab Gambaran Umum untuk Device Provisioning Service Anda.
Salin nilai Cakupan ID.
Di prompt perintah Windows Anda, buka direktori sampel, dan instal paket yang diperlukan oleh sampel. Jalur yang ditampilkan relatif terhadap lokasi tempat Anda mengkloning SDK.
cd .\azure-iot-sdk-node\provisioning\device\samples npm install
Di folder provisioning\device\samples, buka register_x509.js dan tinjau kode.
Sampel default ke MQTT sebagai protokol transportasi. Jika Anda ingin menggunakan protokol yang berbeda, komentari baris berikut dan batalkan komentar baris untuk protokol yang sesuai.
var ProvisioningTransport = require('azure-iot-provisioning-device-mqtt').Mqtt;
Sampel menggunakan lima variabel lingkungan untuk mengautentikasi dan memprovisikan perangkat IoT menggunakan DPS. Variabel lingkungan ini adalah:
Nama variabel Deskripsi PROVISIONING_HOST
Titik akhir yang digunakan untuk menyambungkan ke instans DPS Anda. Untuk tutorial ini, gunakan titik akhir global, global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Cakupan ID untuk instans DPS Anda. PROVISIONING_REGISTRATION_ID
ID pendaftaran untuk perangkat Anda. Ini harus cocok dengan nama umum subjek dalam sertifikat perangkat. CERTIFICATE_FILE
Jalur ke file sertifikat rantai penuh perangkat Anda. KEY_FILE
Jalur ke file kunci privat sertifikat perangkat Anda. Metode ini
ProvisioningDeviceClient.register()
mencoba mendaftarkan perangkat Anda.Tambahkan variabel lingkungan untuk titik akhir perangkat global dan cakupan ID. Ganti
<id-scope>
dengan nilai yang Anda salin dari portal Azure.set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<id-scope>
Atur variabel lingkungan untuk ID pendaftaran perangkat. ID pendaftaran untuk perangkat IoT harus cocok dengan nama umum subjek pada sertifikat perangkatnya. Untuk tutorial ini, perangkat-01 adalah nama subjek dan ID pendaftaran untuk perangkat.
set PROVISIONING_REGISTRATION_ID=device-01
Atur variabel lingkungan untuk sertifikat rantai penuh perangkat dan file kunci privat perangkat yang Anda buat sebelumnya. Ganti
<your-certificate-folder>
dengan jalur ke folder tempat Anda menjalankan perintah OpenSSL Anda.set CERTIFICATE_FILE=<your-certificate-folder>\certs\device-01-full-chain.cert.pem set KEY_FILE=<your-certificate-folder>\private\device-01.key.pem
Jalankan sampel dan verifikasi bahwa perangkat berhasil disediakan.
node register_x509.js
Anda harus melihat output yang mirip dengan berikut ini:
registration succeeded assigned hub=contoso-hub-2.azure-devices.net deviceId=device-01 Client connected send status: MessageEnqueued
Perbarui variabel lingkungan untuk perangkat kedua Anda (
device-02
) sesuai dengan tabel berikut dan jalankan sampel lagi.Variabel lingkungan Nilai 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
Dalam langkah-langkah berikut, gunakan prompt perintah Windows Anda.
Di portal Azure, pilih tab Gambaran Umum untuk Device Provisioning Service Anda.
Salin Cakupan ID.
Di prompt perintah Windows Anda, buka direktori sampel provision_x509.py . Jalur yang ditampilkan relatif terhadap lokasi tempat Anda mengkloning SDK.
cd .\azure-iot-sdk-python\samples\async-hub-scenarios
Sampel ini menggunakan enam variabel lingkungan untuk mengautentikasi dan memprovisikan perangkat IoT menggunakan DPS. Variabel lingkungan ini adalah:
Nama variabel Deskripsi PROVISIONING_HOST
Titik akhir yang digunakan untuk menyambungkan ke instans DPS Anda. Untuk tutorial ini, gunakan titik akhir global, global.azure-devices-provisioning.net
.PROVISIONING_IDSCOPE
Cakupan ID untuk instans DPS Anda. DPS_X509_REGISTRATION_ID
ID pendaftaran untuk perangkat Anda. Ini harus cocok dengan nama umum subjek dalam sertifikat perangkat. X509_CERT_FILE
Jalur ke file sertifikat rantai penuh perangkat Anda. X509_KEY_FILE
Jalur ke file kunci privat sertifikat perangkat Anda. PASS_PHRASE
Frasa pass yang digunakan untuk mengenkripsi file kunci privat (jika digunakan). Tidak diperlukan untuk tutorial ini. Tambahkan variabel lingkungan untuk titik akhir perangkat global dan cakupan ID. Untuk variabel cakupan ID, gunakan nilai yang Anda salin dari portal Azure.
set PROVISIONING_HOST=global.azure-devices-provisioning.net set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
Atur variabel lingkungan untuk ID pendaftaran perangkat. ID pendaftaran untuk perangkat IoT harus cocok dengan nama umum subjek pada sertifikat perangkatnya. Untuk tutorial ini, perangkat-01 adalah nama subjek dan ID pendaftaran untuk perangkat.
set DPS_X509_REGISTRATION_ID=device-01
Atur variabel lingkungan untuk sertifikat rantai penuh perangkat dan file kunci privat perangkat yang Anda buat sebelumnya. Ganti
<your-certificate-folder>
dengan jalur ke folder tempat Anda menjalankan perintah OpenSSL Anda.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
Tinjau kode untuk provision_x509.py. Jika Anda tidak menggunakan Python versi 3.7 atau yang lebih baru, buat perubahan kode yang disebutkan di sini untuk mengganti
asyncio.run(main())
.Jalankan sampel. Sampel terhubung ke DPS, yang akan memprovisikan perangkat ke hub IoT. Setelah perangkat disediakan, sampel mengirim beberapa pesan pengujian ke hub IoT.
python provision_x509.py
Anda harus melihat output yang mirip dengan berikut ini:
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
Perbarui variabel lingkungan untuk perangkat kedua Anda (
device-02
) sesuai dengan tabel berikut dan jalankan sampel lagi.Variabel lingkungan Nilai 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
Dalam langkah-langkah berikut, Anda menggunakan prompt perintah Windows dan permintaan Git Bash Anda.
Di portal Azure, pilih tab Gambaran Umum untuk Device Provisioning Service Anda.
Salin Cakupan ID.
Di prompt perintah Windows Anda, navigasikan ke folder proyek sampel. Jalur yang ditampilkan relatif terhadap lokasi tempat Anda mengkloning SDK
cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
Masukkan layanan provisi dan informasi identitas X.509 dalam kode sampel. Ini digunakan selama provisi, untuk pengesahan perangkat yang disimulasikan, sebelum pendaftaran perangkat.
Buka file
.\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java
di editor favorit Anda.Perbarui nilai berikut. Untuk
idScope
, gunakan Cakupan ID yang Anda salin sebelumnya. Untuk titik akhir global, gunakan Titik akhir perangkat global. Titik akhir ini sama untuk setiap instans 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]";
Sampel default untuk menggunakan HTTPS sebagai protokol transportasi. Jika Anda ingin mengubah protokol, komentari baris berikut, dan batalkan komentar baris untuk protokol yang ingin Anda gunakan.
private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
Perbarui nilai
leafPublicPem
string konstanta dengan nilai sertifikat perangkat Anda, device-01.cert.pem.Sintaks teks sertifikat harus cocok dengan pola berikut tanpa spasi atau karakter tambahan.
private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Memperbarui nilai string ini secara manual dapat rentan terhadap kesalahan. Untuk menghasilkan sintaks yang tepat, Anda dapat menyalin dan menempelkan perintah berikut ke permintaan Git Bash Anda, dan menekan ENTER. Perintah ini menghasilkan sintaks untuk
leafPublicPem
nilai konstanta string dan menulisnya ke output.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/device-01.cert.pem
Salin dan tempel teks sertifikat output untuk nilai konstanta.
Perbarui nilai
leafPrivateKey
string konstanta dengan kunci privat yang tidak terenkripsi untuk sertifikat perangkat Anda, unencrypted-device-key.pem.Sintaks teks kunci privat harus cocok dengan pola berikut tanpa spasi atau karakter tambahan.
private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" + "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" + ... "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" + "-----END PRIVATE KEY-----";
Untuk menghasilkan sintaks yang tepat, Anda dapat menyalin dan menempelkan perintah berikut ke permintaan Git Bash Anda, dan menekan ENTER. Perintah ini menghasilkan sintaks untuk
leafPrivateKey
nilai konstanta string dan menulisnya ke output.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./private/device-01.key.pem
Salin dan tempel teks kunci privat output untuk nilai konstanta.
rootPublicPem
Tambahkan string konstanta dengan nilai sertifikat CA akar Anda, azure-iot-test-only.root.ca.cert.pem. Anda dapat menambahkannya tepat setelahleafPrivateKey
konstanta.Sintaks teks sertifikat harus cocok dengan pola berikut tanpa spasi atau karakter tambahan.
private static final String rootPublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Untuk menghasilkan sintaks yang tepat, Anda dapat menyalin dan menempelkan perintah berikut ke permintaan Git Bash Anda, dan menekan ENTER. Perintah ini menghasilkan sintaks untuk
rootPublicPem
nilai konstanta string dan menulisnya ke output.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/azure-iot-test-only.root.ca.cert.pem
Salin dan tempel teks sertifikat output untuk nilai konstanta.
intermediatePublicPem
Tambahkan string konstanta dengan nilai sertifikat OS menengah Anda, azure-iot-test-only.intermediate.cert.pem. Anda dapat menambahkannya tepat setelah konstanta sebelumnya.Sintaks teks sertifikat harus cocok dengan pola berikut tanpa spasi atau karakter tambahan.
private static final String intermediatePublicPem = "-----BEGIN CERTIFICATE-----\n" "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" ... "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" "-----END CERTIFICATE-----";
Untuk menghasilkan sintaks yang tepat, Anda dapat menyalin dan menempelkan perintah berikut ke permintaan Git Bash Anda, dan menekan ENTER. Perintah ini menghasilkan sintaks untuk
intermediatePublicPem
nilai konstanta string dan menulisnya ke output.sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' ./certs/azure-iot-test-only.intermediate.cert.pem
Salin dan tempel teks sertifikat output untuk nilai konstanta.
Temukan baris berikut dalam
main
metode .// For group enrollment uncomment this line //signerCertificatePemList.add("<Your Signer/intermediate Certificate Here>");
Tambahkan kedua baris ini langsung di bawahnya untuk menambahkan sertifikat OS menengah dan akar Anda ke rantai penandatanganan. Rantai penandatanganan Anda harus menyertakan seluruh rantai sertifikat hingga dan menyertakan sertifikat yang telah Anda verifikasi dengan DPS.
signerCertificatePemList.add(intermediatePublicPem); signerCertificatePemList.add(rootPublicPem);
Catatan
Urutan bahwa sertifikat penandatanganan ditambahkan penting. Sampel akan gagal jika diubah.
Simpan perubahan.
Buat sampel, lalu buka
target
folder .mvn clean install cd target
Build menghasilkan file .jar di
target
folder dengan format file berikut:provisioning-x509-sample-{version}-with-deps.jar
; misalnya:provisioning-x509-sample-1.8.1-with-deps.jar
. Jalankan file .jar. Anda mungkin perlu mengganti versi dalam perintah berikut.java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
Sampel terhubung ke DPS, yang memprovisikan perangkat ke hub IoT. Setelah perangkat disediakan, sampel akan mengirim beberapa pesan pengujian ke hub IoT.
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!
Perbarui konstanta untuk perangkat kedua Anda (
device-02
) sesuai dengan tabel berikut, bangun ulang, dan jalankan sampel lagi.Terus-menerus File yang akan digunakan leafPublicPem
./certs/device-02.cert.pem leafPrivateKey
./private/device-02.key.pem
Konfirmasi pendaftaran provisi perangkat Anda
Periksa catatan pendaftaran grup pendaftaran untuk melihat detail pendaftaran untuk perangkat Anda:
Di portal Azure, buka instans Device Provisioning Service Anda.
Di menu Pengaturan, pilih Kelola pendaftaran.
Pilih Grup pendaftaran. Entri grup pendaftaran X.509 yang Anda buat sebelumnya akan muncul dalam daftar.
Pilih entri pendaftaran. Kemudian pilih Detail di samping Status pendaftaran untuk melihat perangkat yang telah didaftarkan melalui grup pendaftaran. Hub IoT tempat masing-masing perangkat Anda ditetapkan, ID perangkat mereka, serta tanggal dan waktu mereka terdaftar muncul dalam daftar.
Anda dapat memilih salah satu perangkat untuk melihat detail lebih lanjut untuk perangkat tersebut.
Untuk memverifikasi perangkat di hub IoT Anda:
Di portal Azure, buka hub IoT tempat perangkat Anda ditetapkan.
Di menu Manajemen perangkat , pilih Perangkat.
Jika perangkat Anda berhasil disediakan, ID perangkat, perangkat-01, dan perangkat-02, akan muncul dalam daftar, dengan Status diatur sebagai diaktifkan. Jika Anda tidak melihat perangkat, pilih Refresh.
Membersihkan sumber daya
Setelah selesai menguji dan menjelajahi sampel klien perangkat ini, gunakan langkah-langkah berikut untuk menghapus semua sumber daya yang dibuat oleh tutorial ini.
- Tutup jendela output sampel klien perangkat di komputer Anda.
Menghapus grup pendaftaran Anda
Dari menu sebelah kiri di portal Azure, pilih Semua sumber daya.
Pilih instans DPS Anda.
Di menu Pengaturan, pilih Kelola pendaftaran.
Pilih tab Grup pendaftaran.
Pilih grup pendaftaran yang Anda gunakan untuk tutorial ini.
Pada halaman Detail pendaftaran, pilih Detail di samping status Pendaftaran. Lalu pilih kotak centang di samping header kolom Id Perangkat untuk memilih semua rekaman pendaftaran untuk grup pendaftaran. Pilih Hapus di bagian atas halaman untuk menghapus rekaman pendaftaran.
Penting
Menghapus grup pendaftaran tidak menghapus catatan pendaftaran yang terkait dengannya. Catatan yatim piatu ini akan dihitung terhadap kuota pendaftaran untuk instans DPS. Untuk alasan ini, ini adalah praktik terbaik untuk menghapus semua catatan pendaftaran yang terkait dengan grup pendaftaran sebelum Anda menghapus grup pendaftaran itu sendiri.
Kembali ke halaman Kelola pendaftaran dan pastikan tab Grup pendaftaran dipilih.
Pilih kotak centang di samping nama grup grup pendaftaran yang Anda gunakan untuk tutorial ini.
Di bagian atas halaman, pilih Hapus.
Menghapus sertifikat CA terdaftar dari DPS
- Pilih Sertifikat dari menu sebelah kiri instans DPS Anda. Untuk setiap sertifikat yang Anda unggah dan verifikasi dalam tutorial ini, pilih sertifikat dan pilih Hapus dan konfirmasikan pilihan Anda untuk menghapusnya.
Menghapus pendaftaran perangkat dari IoT Hub
Dari menu sebelah kiri di portal Azure, pilih Semua sumber daya.
Pilih IoT hub Anda.
Di menu Explorers, pilih Perangkat IoT.
Pilih kotak centang di samping ID perangkat perangkat yang Anda daftarkan dalam tutorial ini. Misalnya, perangkat-01 dan perangkat-02.
Di bagian atas halaman, pilih Hapus.
Langkah berikutnya
Dalam tutorial ini, Anda memprovisikan beberapa perangkat X.509 ke hub IoT Anda menggunakan grup pendaftaran. Selanjutnya, pelajari cara memprovisikan perangkat IoT di beberapa hub.