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 di Mulai Cepat: 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 atau python3 --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 memasukkan semua perintah pada sistem lokal Anda dalam permintaan Git Bash.

  • 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 di mulai cepat Cloud Shell untuk mulai Cloud Shell dan pilih lingkungan Bash.
    • 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 berada di lingkungan Windows, buka prompt GitBash.

Gambaran Umum

Ada tiga skenario yang dibahas dalam artikel ini dan langkah-langkah awal yang Anda lakukan berbeda untuk masing-masing skenario. Jika Anda ingin:

Setelah menyelesaikan langkah-langkah untuk skenario yang Anda pilih, Anda dapat melanjutkan ke Mendaftarkan perangkat Anda dan Mengirim pesan telemetri.

Membuat sertifikat perangkat

Untuk artikel ini, Anda 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 otentikasi pendaftaran X.509, nama umum subjek (CN) dari sertifikat perangkat digunakan sebagai ID pendaftaran untuk perangkat. ID pendaftaran adalah string karakter alfanumerik yang tidak membedakan huruf besar/kecil dan 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:

  1. 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 ekstra yang digunakan untuk nama subjek (//CN=my-x509-device) hanya diperlukan untuk menghindari string dengan Git pada platform Windows.

  2. Jika diminta untuk Memasukkan kata kunci PEM:, gunakan kata kunci 1234.

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

  4. 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 CA 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 Diajukan oleh perangkat untuk mengautentikasi dan mendaftar dengan sistem 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.

  • Jalur sertifikat adalah jalur ke sertifikat perangkat Anda.

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.

Cuplikan layar yang memperlihatkan tombol unggah file di Azure Cloud Shell.

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

Cuplikan layar yang memperlihatkan tombol unggah file di Azure Cloud Shell.

Catatan

Jika mau, Anda dapat membuat grup pendaftaran berdasarkan sertifikat penandatanganan yang sebelumnya 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, sertifikat ini dapat menjadi sertifikat penandatanganan apa pun dalam rantai sertifikat perangkat.

  • Untuk grup pendaftaran, sertifikat ini dapat menjadi sertifikat yang ditetapkan pada grup pendaftaran atau sertifikat apa pun dalam rantai pendaftarannya hingga dan termasuk sertifikat CA 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 CA 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.

Cuplikan layar yang memperlihatkan tombol unggah file di Azure Cloud Shell.

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 CA menengah atau root.

Mendaftarkan perangkat Anda

Anda memanggil REST API Register Device 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

Dimana:

  • -L memerintahkan curl untuk mengikuti pengalihan HTTP.

  • –i menginstruksikan curl untuk menyertakan header protokol dalam output. Header ini tidak benar-benar diperlukan, tetapi dapat berguna.

  • -X PUT memberi tahu curl bahwa perintah 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 berisi satu sertifikat X.509. Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama file 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 semua sertifikat penandatanganan yang relevan 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 'application/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, umumnya utf-8.

  • -d '{"registrationId": "[registration_id]"}' –d, parameternya adalah 'data' atau isi pesan yang kami posting. Harus JSON, dalam bentuk '{"registrationId":"[registration_id"}'. Untuk curl, itu dibungkus dalam tanda kutip tunggal; jika tidak, Anda perlu menghindari tanda kutip ganda di JSON. Untuk pendaftaran X.509, identitas pendaftaran adalah nama lazim subjek (CN) dari 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. 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 memberikan respons yang mirip dengan contoh berikut:

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 berpotensi menjadi operasi jangka panjang, sehingga dilakukan secara asinkron. Biasanya, Anda melakukan polling untuk status menggunakan REST API Pencarian Status Operasi untuk menentukan kapan perangkat Anda ditugaskan atau apakah terjadi kegagalan.

Nilai status yang valid untuk DPS adalah:

  • assigned: nilai pengembalian dari panggilan status menunjukkan IoT Hub tempat perangkat ditetapkan.

  • assigning: operasi masih berjalan.

  • disabled: catatan pendaftaran tidak aktif di DPS, sehingga perangkat tidak bisa dialokasikan.

  • failed: penugasan gagal. errorCode dan errorMessage dikembalikan dalam rekaman registrationState 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 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 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

Dimana:

  • -X POST memberi tahu curl bahwa perintah 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 berisi satu sertifikat X.509. Jika Anda mengikuti instruksi dalam Menggunakan sertifikat yang ditandatangani sendiri, nama file 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' menyampaikan kepada IoT Hub bahwa kami memposting konten JSON dan formatnya harus 'application/json'.

  • -H 'Content-Encoding: utf-8' memberitahukan IoT Hub tentang pengodean yang kami gunakan untuk isi pesan kami. Atur ke nilai yang tepat untuk OS/klien Anda; namun, umumnya utf-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. Untuk curl, itu 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 adalah 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 memiliki respons yang mirip dengan contoh berikut:

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