Cara menggunakan sertifikat X.509 melalui HTTPS tanpa SDK
Dalam artikel panduan ini, Anda akan menyediakan perangkat menggunakan sertifikat x.509 melalui HTTPS tanpa menggunakan SDK perangkat Azure IoT DPS. Sebagian besar bahasa menyediakan pustaka untuk mengirim permintaan HTTP, tetapi, daripada fokus pada bahasa tertentu, dalam artikel ini, Anda akan menggunakan alat baris perintah cURL untuk mengirim dan menerima melalui HTTPS.
Anda dapat mengikuti langkah-langkah dalam artikel ini di komputer Linux atau Windows. Jika Anda menjalankan Subsistem Windows untuk Linux (WSL) atau berjalan di komputer Linux, Anda dapat memasukkan semua perintah pada sistem lokal Anda dalam perintah Bash. Jika Anda menjalankan di Windows, masukkan semua perintah pada sistem lokal Anda dalam permintaan GitBash.
Ada beberapa jalur melalui artikel ini tergantung pada jenis entri pendaftaran dan sertifikat X.509 yang Anda pilih untuk digunakan. Setelah menginstal prasyarat, pastikan untuk membaca Gambaran Umum sebelum melanjutkan.
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.
Pastikan Anda memiliki Python 3.7 atau yang lebih baru yang terinstal di komputer Anda. Anda dapat memeriksa versi Python Anda dengan menjalankan
python --version
ataupython3 --version
.Jika Anda menjalankan di Windows, instal versi terbaru Git. Pastikan Git ditambahkan ke variabel lingkungan yang dapat diakses oleh jendela perintah. Lihat alat klien Git Software Freedom Conservancy untuk versi terbaru alat
git
yang akan diinstal, yang mencakup Git Bash, aplikasi baris perintah yang dapat Anda gunakan untuk berinteraksi dengan repositori Git lokal. Di Windows, Anda akan memasukkan semua perintah pada sistem lokal Anda dalam permintaan GitBash.Azure CLI. Anda memiliki dua opsi untuk menjalankan perintah Azure CLI dalam artikel ini:
- Gunakanlah Azure Cloud Shell, sebuah shell interaktif yang menjalankan perintah CLI di browser Anda. Opsi ini direkomendasikan karena Anda tidak butuh instal apapun. Jika Anda menggunakan Cloud Shell untuk pertama kalinya, log masuk ke portal Microsoft Azure. Ikutilah langkah-langkah tersebut di mulai cepat Cloud Shell menuju Mulai Cloud Shell dan Pilih lingkungan Azure CLI.
- Secara opsional, menjalankan Azure CLI pada mesin lokal Anda. Jika Azure CLI sudah diinstal, menjalankan
az upgrade
untuk meningkatkan CLI tersebut dan ekstensi menjadi versi terbaru. Untuk memasang Azure CLI, lihat Memasang Azure CLI.
Jika Anda menjalankan di lingkungan Linux atau WSL, buka perintah Bash untuk menjalankan perintah secara lokal. Jika Anda menjalankan di lingkungan Windows, buka permintaan GitBash.
Gambaran Umum
Ada tiga skenario yang dibahas dalam artikel ini dan langkah-langkah awal yang akan Anda lakukan akan berbeda untuk masing-masing skenario. Jika Anda ingin:
Provisi melalui pendaftaran individu menggunakan sertifikat yang ditandatangani sendiri, ikuti langkah-langkah di bagian ini:
- Gunakan sertifikat yang ditandatangani sendiri untuk membuat sertifikat yang ditandatangani sendiri.
- Gunakan pendaftaran individu untuk membuat pendaftaran individu.
Provisi melalui pendaftaran individu menggunakan rantai sertifikat, ikuti langkah-langkah di bagian ini:
- Gunakan rantai sertifikat untuk membuat rantai sertifikat.
- Gunakan pendaftaran individu untuk membuat pendaftaran individu.
- Unggah dan verifikasi sertifikat penandatanganan untuk mengunggah dan memverifikasi sertifikat OS akar Anda.
Provisi melalui grup pendaftaran, ikuti langkah-langkah di bagian ini:
- Gunakan rantai sertifikat untuk membuat rantai sertifikat.
- Gunakan grup pendaftaran untuk membuat grup pendaftaran.
- Unggah dan verifikasi sertifikat penandatanganan untuk mengunggah dan memverifikasi sertifikat OS akar Anda.
Setelah menyelesaikan langkah-langkah untuk skenario yang Dipilih, Anda dapat melanjutkan ke Mendaftarkan perangkat dan Mengirim pesan telemetri.
Membuat sertifikat perangkat
Untuk artikel ini, Anda akan menggunakan sertifikat X.509 untuk mengautentikasi dengan DPS menggunakan pendaftaran individu atau grup pendaftaran.
Jika Anda menggunakan pendaftaran individual, Anda dapat menggunakan sertifikat X.509 yang ditandatangani sendiri atau rantai sertifikat yang terdiri dari sertifikat perangkat ditambah satu atau beberapa sertifikat penandatanganan. Jika Anda menggunakan grup pendaftaran, Anda harus menggunakan rantai sertifikat.
Penting
Untuk autentikasi pendaftaran X.509, nama umum subjek (CN) sertifikat perangkat digunakan sebagai ID pendaftaran untuk perangkat. ID pendaftaran adalah string karakter alfanumerik yang tidak peka huruf besar/kecil ditambah karakter khusus: '-'
, , '.'
'_'
, ':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
). DPS mendukung ID pendaftaran hingga 128 karakter; namun, nama umum subjek sertifikat X.509 dibatasi hingga 64 karakter. Jika Anda mengubah nama umum subjek untuk sertifikat perangkat Anda dalam langkah-langkah berikut, pastikan itu mematuhi format ini.
Menggunakan sertifikat yang ditandatangani sendiri
Untuk membuat sertifikat yang ditandatangani sendiri untuk digunakan dengan pendaftaran individual, navigasikan ke direktori tempat Anda ingin membuat sertifikat dan ikuti langkah-langkah berikut:
Jalankan perintah berikut:
winpty openssl req -outform PEM -x509 -sha256 -newkey rsa:4096 -keyout device-key.pem -out device-cert.pem -days 30 -extensions usr_cert -addext extendedKeyUsage=clientAuth -subj "//CN=my-x509-device"
Penting
Garis miring condong kanan ekstra yang diberikan untuk nama subjek (
//CN=my-x509-device
) hanya diperlukan untuk melewatkan string dengan Git pada platform Windows.Jika diminta untuk Memasukkan kata kunci PEM:, gunakan kata kunci
1234
.Jika diminta Memverifikasi - Memasukkan kata kunci PEM:, gunakan kata kunci
1234
lagi.File sertifikat kunci publik (device-cert.pem) dan file kunci privat (device-key.pem) sekarang harus dibuat di direktori tempat Anda menjalankan
openssl
perintah.File sertifikat memiliki nama umum subjek (CN) yang diatur ke
my-x509-device
.File kunci privat dilindungi oleh frasa sandi:
1234
.File sertifikat dikodekan Base64. Untuk melihat nama umum subjek (CN) dan properti lain dari file sertifikat, masukkan perintah berikut:
winpty openssl x509 -in device-cert.pem -text -noout
Certificate: Data: Version: 3 (0x2) Serial Number: 77:3e:1d:e4:7e:c8:40:14:08:c6:09:75:50:9c:1a:35:6e:19:52:e2 Signature Algorithm: sha256WithRSAEncryption Issuer: CN = my-x509-device Validity Not Before: May 5 21:41:42 2022 GMT Not After : Jun 4 21:41:42 2022 GMT Subject: CN = my-x509-device Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public-Key: (4096 bit) Modulus: 00:d2:94:37:d6:1b:f7:43:b4:21:c6:08:1a:d6:d7: e6:40:44:4e:4d:24:41:6c:3e:8c:b2:2c:b0:23:29: ... 23:6e:58:76:45:18:03:dc:2e:9d:3f:ac:a3:5c:1f: 9f:66:b0:05:d5:1c:fe:69:de:a9:09:13:28:c6:85: 0e:cd:53 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE Netscape Comment: OpenSSL Generated Certificate X509v3 Subject Key Identifier: 63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Authority Key Identifier: keyid:63:C0:B5:93:BF:29:F8:57:F8:F9:26:44:70:6F:9B:A4:C7:E3:75:18 X509v3 Extended Key Usage: TLS Web Client Authentication Signature Algorithm: sha256WithRSAEncryption 82:8a:98:f8:47:00:85:be:21:15:64:b9:22:b0:13:cc:9e:9a: ed:f5:93:b9:4b:57:0f:79:85:9d:89:47:69:95:65:5e:b3:b1: ... cc:b2:20:9a:b7:f2:5e:6b:81:a1:04:93:e9:2b:92:62:e0:1c: ac:d2:49:b9:36:d2:b0:21
Menggunakan rantai sertifikat
Jika Anda menggunakan grup pendaftaran, Anda harus mengautentikasi dengan rantai sertifikat. Dengan pendaftaran individu, Anda dapat menggunakan rantai sertifikat atau sertifikat yang ditandatangani sendiri.
Untuk membuat rantai sertifikat, ikuti instruksi di Membuat rantai sertifikat X.509. Anda hanya memerlukan satu perangkat untuk artikel ini, sehingga Anda dapat berhenti setelah membuat kunci privat dan rantai sertifikat untuk perangkat pertama.
Setelah selesai, Anda harus memiliki file berikut:
Sertifikat | File | Deskripsi |
---|---|---|
sertifikat OS akar. | certs/azure-iot-test-only.root.ca.cert.pem | Akan diunggah ke DPS dan diverifikasi. |
sertifikat OS menengah | certs/azure-iot-test-only.intermediate.cert.pem | Akan 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 device-01 | certs/device-01.cert.pem | Digunakan untuk membuat entri pendaftaran individu dengan DPS. |
sertifikat rantai lengkap device-01 | certs/device-01-full-chain.cert.pem | Disajikan oleh perangkat untuk mengautentikasi dan mendaftar dengan DPS. |
Gunakan pendaftaran individu
Untuk membuat pendaftaran individu yang akan digunakan untuk artikel ini, gunakan perintah az iot dps enrollment create .
Perintah berikut membuat entri pendaftaran individual dengan kebijakan alokasi default untuk instans DPS Anda menggunakan sertifikat perangkat yang Anda tentukan.
az iot dps enrollment create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --attestation-type x509 --certificate-path {path to your certificate}
Ganti nama grup sumber daya dan instans DPS Anda.
ID pendaftaran adalah ID pendaftaran untuk perangkat Anda dan, untuk pendaftaran X.509, harus sesuai dengan nama umum subjek (CN) sertifikat perangkat.
Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, ID pendaftaran adalah my-x509-device.
Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, ID pendaftaran adalah perangkat-01.
Jalur sertifikat adalah jalur ke sertifikat perangkat Anda.
Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama filenya adalah device-cert.pem.
Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, nama file adalah certs/device-01.cert.pem.
Catatan
Jika Anda menggunakan Cloud Shell untuk menjalankan perintah Azure CLI, Anda dapat menggunakan tombol unggah untuk mengunggah file sertifikat ke drive cloud sebelum menjalankan perintah.
Menggunakan grup pendaftaran
Untuk membuat grup pendaftaran yang akan digunakan untuk artikel ini, gunakan perintah az iot dps enrollment-group create .
Perintah berikut membuat entri grup pendaftaran dengan kebijakan alokasi default untuk instans DPS Anda menggunakan sertifikat CA perantara:
az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
Ganti nama grup sumber daya dan instans DPS Anda.
ID pendaftaran adalah string karakter alfanumerik yang tidak peka huruf besar/kecil ditambah karakter khusus:
'-'
, ,'.'
'_'
,':'
. Karakter terakhir harus alfanumerik atau tanda hubung ('-'
). Ini bisa berupa nama apa pun yang Anda pilih untuk digunakan untuk grup pendaftaran.Jalur sertifikat adalah jalur ke sertifikat perantara Anda. Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, nama file adalah certs/azure-iot-test-only.intermediate.cert.pem.
Catatan
Jika Anda menggunakan Cloud Shell untuk menjalankan perintah Azure CLI, Anda dapat menggunakan tombol unggah untuk mengunggah file sertifikat ke drive cloud sebelum menjalankan perintah.
Catatan
Jika mau, Anda dapat membuat grup pendaftaran berdasarkan sertifikat penandatanganan yang sebelumnya telah diunggah dan diverifikasi dengan DPS (lihat bagian berikutnya). Untuk melakukannya, Anda menentukan nama sertifikat dengan --ca-name
dan menghilangkan --certificate-path
parameter dalam az iot dps enrollment-group create
perintah .
Mengunggah dan memverifikasi sertifikat penandatanganan
Jika Anda menggunakan rantai sertifikat untuk pendaftaran individu atau grup pendaftaran, Anda harus mengunggah dan memverifikasi setidaknya satu sertifikat dalam rantai penandatanganan sertifikat perangkat ke DPS.
Untuk pendaftaran individu, ini dapat menjadi sertifikat penandatanganan apa pun dalam rantai sertifikat perangkat.
Untuk grup pendaftaran, ini dapat menjadi sertifikat yang ditetapkan pada grup pendaftaran atau sertifikat apa pun dalam rantai pendaftarannya hingga dan termasuk sertifikat OS akar.
Untuk mengunggah dan memverifikasi sertifikat Anda, gunakan perintah az iot dps certificate create :
az iot dps certificate create -g {resource_group_name} --dps-name {dps_name} --certificate-name {friendly_name_for_your_certificate} --path {path_to_your_certificate} --verified true
Ganti nama grup sumber daya dan instans DPS Anda.
Jalur sertifikat adalah jalur ke sertifikat penandatanganan Anda. Untuk artikel ini, kami sarankan Anda mengunggah sertifikat OS akar. Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, nama file adalah certs/azure-iot-test-only.root.ca.cert.pem.
Nama sertifikat hanya dapat berisi karakter alfanumerik atau karakter khusus berikut:
-._
. Tidak ada spasi kosong yang diizinkan. Misalnya, "azure-iot-test-only-root".
Catatan
Jika Anda menggunakan Cloud Shell untuk menjalankan perintah Azure CLI, Anda dapat menggunakan tombol unggah untuk mengunggah file sertifikat ke drive cloud sebelum menjalankan perintah.
Catatan
Langkah-langkah di bagian ini secara otomatis memverifikasi sertifikat saat diunggah. Anda juga dapat melakukan verifikasi manual sertifikat. Untuk mempelajari lebih lanjut, lihat Verifikasi manual OS menengah atau root.
Mendaftarkan perangkat Anda
Anda memanggil Daftarkan REST API Perangkat untuk memprovisikan perangkat Anda melalui DPS.
Gunakan perintah curl berikut:
curl -L -i -X PUT --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"registrationId": "[registration_id]"}' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
Mana:
-L
memberi tahu curl untuk mengikuti pengalihan HTTP.–i
memberi tahu curl untuk menyertakan header protokol dalam output. Header ini tidak benar-benar diperlukan, tetapi dapat berguna.-X PUT
memberi tahu curl bahwa ini adalah perintah HTTP PUT. Diperlukan untuk panggilan API ini.--cert [path_to_your_device_cert]
memberi tahu curl tempat menemukan sertifikat X.509 perangkat Anda. Jika kunci privat perangkat Anda dilindungi oleh frasa pass, Anda dapat menambahkan frasa pass setelah jalur sertifikat yang didahului oleh titik dua, misalnya:--cert my-device.pem:1234
.Jika Anda menggunakan sertifikat yang ditandatangani sendiri, file sertifikat perangkat Anda hanya akan berisi satu sertifikat X.509. Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama filenya adalah device-cert.pem dan frasa sandi kunci privat adalah
1234
, jadi gunakan--cert device-cert.pem:1234
.Jika Anda menggunakan rantai sertifikat, misalnya, saat mengautentikasi melalui grup pendaftaran, file sertifikat perangkat Anda harus berisi rantai sertifikat yang valid. Rantai sertifikat harus menyertakan sertifikat perangkat dan sertifikat penandatanganan apa pun hingga dan termasuk sertifikat terverifikasi. Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat untuk membuat rantai sertifikat, jalur file adalah certs/device-01-full-chain.cert.pem, jadi gunakan
--cert certs/device-01-full-chain.cert.pem
.
--key [path_to_your_device_private_key]
memberi tahu curl tempat menemukan kunci privat perangkat Anda.Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama filenya adalah device-key.pem, jadi gunakan
--key device-cert.pem:1234
.Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, jalur kuncinya adalah certs/device-01-full-chain.cert.pem, jadi gunakan
--cert certs/device-01-full-chain.cert.pem
.
-H 'Content-Type: application/json'
memberi tahu DPS bahwa kami memposting konten JSON dan harus berupa 'aplikasi/json'-H 'Content-Encoding: utf-8'
memberi tahu DPS pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnyautf-8
.-d '{"registrationId": "[registration_id]"}'
–d
, parameternya adalah 'data' atau isi pesan yang kami posting. Harus JSON, dalam bentuk '{"registrationId":"[registration_id"}'. Perhatikan bahwa untuk curl, dibungkus dalam tanda kutip tunggal; jika tidak, Anda perlu menghindari tanda kutip ganda di JSON. Untuk pendaftaran X.509, ID pendaftaran adalah nama umum subjek (CN) sertifikat perangkat Anda.Terakhir, parameter terakhir adalah URL yang akan diposting. Untuk DPS "reguler" (yaitu bukan lokal), titik akhir DPS global, global.azure-devices-provisioning.net digunakan:
https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31
. Perhatikan bahwa Anda harus mengganti[dps_scope_id]
dan[registration_id]
dengan nilai yang sesuai.
Contohnya:
Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri:
curl -L -i -X PUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"registrationId": "my-x509-device"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register?api-version=2021-06-01
Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat:
curl -L -i -X PUT --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"registrationId": "device-01"}' https://global.azure-devices-provisioning.net/0ne00111111/registrations/device-01/register?api-version=2021-06-01
Panggilan yang berhasil akan memiliki respons yang mirip dengan yang berikut ini:
HTTP/1.1 202 Accepted
Date: Sat, 27 Aug 2022 17:53:18 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
Location: https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/register
Retry-After: 3
x-ms-request-id: 05cdec07-c0c7-48f3-b3cd-30cfe27cbe57
Strict-Transport-Security: max-age=31536000; includeSubDomains
{"operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a","status":"assigning"}
Respons berisi ID operasi dan status. Dalam hal ini, status diatur ke assigning
. Pendaftaran DPS adalah, berpotensi, operasi jangka panjang, sehingga dilakukan secara asinkron. Biasanya, Anda akan melakukan polling untuk status menggunakan REST API Pencarian Status Operasi untuk menentukan kapan perangkat Anda telah ditetapkan atau apakah kegagalan telah terjadi.
Nilai status yang valid untuk DPS adalah:
assigned
: nilai pengembalian dari panggilan status akan menunjukkan IoT Hub tempat perangkat ditetapkan.assigning
: operasi masih berjalan.disabled
: catatan pendaftaran dinonaktifkan di DPS, sehingga perangkat tidak dapat ditetapkan.failed
: penugasan gagal. AkanerrorCode
ada danerrorMessage
dikembalikan dalam rekamanregistrationState
dalam respons untuk menunjukkan apa yang gagal.unassigned
Untuk memanggil API Pencarian Status Operasi, gunakan perintah curl berikut:
curl -L -i -X GET --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/operations/[operation_id]?api-version=2019-03-31
Anda akan menggunakan cakupan ID, ID pendaftaran, dan sertifikat dan kunci yang sama seperti yang Anda lakukan dalam permintaan Daftarkan Perangkat . Gunakan ID operasi yang dikembalikan dalam respons Daftarkan Perangkat .
Misalnya, perintah berikut adalah untuk sertifikat yang ditandatangani sendiri yang dibuat di Menggunakan sertifikat yang ditandatangani sendiri. (Anda perlu mengubah cakupan ID dan ID operasi.)
curl -L -i -X GET --cert ./device-certPUT --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' https://global.azure-devices-provisioning.net/0ne00111111/registrations/my-x509-device/operations/5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a?api-version=2021-06-01
Output berikut menunjukkan respons untuk perangkat yang telah berhasil ditetapkan. Perhatikan bahwa status
properti adalah assigned
dan bahwa registrationState.assignedHub
properti diatur ke hub IoT tempat perangkat disediakan.
HTTP/1.1 200 OK
Date: Sat, 27 Aug 2022 18:10:49 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked
x-ms-request-id: 8f211bc5-3ed8-4c8b-9a79-e003e756e9e4
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"operationId":"5.506603669bd3e2bf.b3602f8f-76fe-4341-9214-bb6cfb891b8a",
"status":"assigned",
"registrationState":{
"x509":{
},
"registrationId":"my-x509-device",
"createdDateTimeUtc":"2022-08-27T17:53:19.5143497Z",
"assignedHub":"MyExampleHub.azure-devices.net",
"deviceId":"my-x509-device",
"status":"assigned",
"substatus":"initialAssignment",
"lastUpdatedDateTimeUtc":"2022-08-27T17:53:19.7519141Z",
"etag":"IjEyMDA4NmYyLTAwMDAtMDMwMC0wMDAwLTYzMGE1YTBmMDAwMCI="
}
}
Catat ID perangkat dan hub IoT yang ditetapkan. Anda akan menggunakannya untuk mengirim pesan telemetri di bagian berikutnya.
Mengirim pesan telemetri
Anda memanggil IoT Hub Send Device Event REST API untuk mengirim telemetri ke perangkat.
Gunakan perintah curl berikut:
curl -L -i -X POST --cert [path_to_your_device_cert] --key [path_to_your_device_private_key] -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"temperature": 30}' https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
Mana:
-X POST
memberi tahu curl bahwa ini adalah perintah HTTP POST. Diperlukan untuk panggilan API ini.--cert [path_to_your_device_cert]
memberi tahu curl tempat menemukan sertifikat X.509 perangkat Anda. Jika kunci privat perangkat Anda dilindungi oleh frasa pass, Anda dapat menambahkan frasa pass setelah jalur sertifikat yang didahului oleh titik dua, misalnya:--cert my-device.pem:1234
.Jika Anda menggunakan sertifikat yang ditandatangani sendiri, file sertifikat perangkat Anda hanya akan berisi satu sertifikat X.509. Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama filenya adalah device-cert.pem dan frasa sandi kunci privat adalah
1234
, jadi gunakan--cert device-cert.pem:1234
.Jika Anda menggunakan rantai sertifikat, file sertifikat perangkat Anda harus berisi rantai sertifikat yang valid. Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat untuk membuat rantai sertifikat, jalur file adalah certs/device-01-full-chain.cert.pem, jadi gunakan
--cert certs/device-01-full-chain.cert.pem
.
--key [path_to_your_device_private_key]
memberi tahu curl tempat menemukan kunci privat perangkat Anda.Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama filenya adalah device-key.pem, jadi gunakan
--key device-cert.pem:1234
.Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat, jalur kuncinya adalah certs/device-01-full-chain.cert.pem, jadi gunakan
--cert certs/device-01-full-chain.cert.pem
.
-H 'Content-Type: application/json'
memberi tahu IoT Hub bahwa kami memposting konten JSON dan harus 'application/json'.-H 'Content-Encoding: utf-8'
memberi tahu IoT Hub pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnyautf-8
.-d '{"temperature": 30}'
–d
, parameternya adalah 'data' atau isi pesan yang kami posting. Untuk artikel ini, kami memposting satu titik data suhu. Jenis konten ditentukan sebagai aplikasi/json, jadi, untuk permintaan ini, isinya adalah JSON. Perhatikan bahwa untuk curl, dibungkus dalam tanda kutip tunggal; jika tidak, Anda perlu menghindari tanda kutip ganda di JSON.Parameter terakhir adalah URL yang akan diposting. Untuk API Kirim Peristiwa Perangkat, URL-nya adalah:
https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13
.Ganti
[assigned_iot_hub_name]
dengan nama hub IoT tempat perangkat Anda ditetapkan.Ganti
[device_id]
dengan ID perangkat yang ditetapkan saat Anda mendaftarkan perangkat Anda. Untuk perangkat yang menyediakan melalui grup pendaftaran, ID perangkat akan menjadi ID pendaftaran. Untuk pendaftaran individual, Anda dapat, secara opsional, menentukan ID perangkat yang berbeda dari ID pendaftaran dalam entri pendaftaran.
Contohnya:
Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri:
curl -L -i -X POST --cert device-cert.pem:1234 --key device-key.pem -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
Jika Anda mengikuti instruksi dalam Menggunakan rantai sertifikat:
curl -L -i -X POST --cert certs/device-01-full-chain.cert.pem --key private/device-01.key.pem -H 'Content-Type: application/json' -H 'Content-Encoding: utf-8' -d '{"temperature": 30}' https://MyExampleHub.azure-devices.net/devices/my-x509-device/messages/events?api-version=2020-03-13
Panggilan yang berhasil akan memiliki respons yang mirip dengan yang berikut ini:
HTTP/1.1 204 No Content
Content-Length: 0
Vary: Origin
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: aa58c075-20d9-4565-8058-de6dc8524f14
Date: Wed, 31 Aug 2022 18:34:44 GMT
Langkah berikutnya
Untuk mempelajari selengkapnya tentang pengesahan dengan sertifikat X.509, lihat pengesahan sertifikat X.509.
Untuk mempelajari selengkapnya tentang mengunggah dan memverifikasi sertifikat X.509, lihat Mengonfigurasi sertifikat CA terverifikasi.