Aracılığıyla paylaş


SDK olmadan HTTPS üzerinden X.509 sertifikalarını kullanma

Bu nasıl yapılır makalesinde, Azure IoT DPS cihaz SDK'sı kullanmadan HTTPS üzerinden x.509 sertifikalarını kullanarak bir cihaz sağlayacağınız. Çoğu dil, HTTP istekleri göndermek için kitaplıklar sağlar, ancak bu makalede https üzerinden gönderip almak için belirli bir dile odaklanmak yerine cURL komut satırı aracını kullanacaksınız.

Linux veya Windows makinesinde bu makaledeki adımları izleyebilirsiniz. Linux için Windows Alt Sistemi (WSL) üzerinde veya Linux makinesinde çalıştırıyorsanız, yerel sisteminizdeki tüm komutları bash istemine girebilirsiniz. Windows'da çalıştırıyorsanız yerel sisteminizdeki tüm komutları GitBash istemine girin.

Bu makalede, kullanmayı seçtiğiniz kayıt girdisi ve X.509 sertifikalarının türüne bağlı olarak birden çok yol vardır. Önkoşulları yükledikten sonra devam etmeden önce Genel Bakış'ı okuduğunuzdan emin olun.

Önkoşullar

  • Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

  • Azure portalıyla IoT Hub Cihazı Sağlama Hizmeti'ni ayarlama makalesindeki adımları tamamlayın.

  • Makinenizde Python 3.7 veya üzeri yüklü olduğundan emin olun. veya python3 --versionkomutunu çalıştırarak python --version Python sürümünüzü de kontrol edebilirsiniz.

  • Windows'da çalıştırıyorsanız Git'in en son sürümünü yükleyin. Git'in komut penceresi tarafından erişilebilen ortam değişkenlerine eklendiğinden emin olun. Yüklenecek araçların en son sürümü git için, yerel Git deponuzla etkileşim kurmak için kullanabileceğiniz komut satırı uygulaması Git Bash'i içeren Yazılım Özgürlüğü Koruması'nın Git istemci araçlarına bakın. Windows'ta, yerel sisteminizdeki tüm komutları GitBash istemine girersiniz.

  • Azure CLI. Bu makalede Azure CLI komutlarını çalıştırmak için iki seçeneğiniz vardır:

    • Tarayıcınızda CLI komutlarını çalıştıran etkileşimli bir kabuk olan Azure Cloud Shell'i kullanın. Hiçbir şey yüklemeniz gerekmeyen bu seçenek önerilir. Cloud Shell'i ilk kez kullanıyorsanız Azure portalında oturum açın. Cloud Shell'i başlatmak ve Bash ortamını seçmek için Cloud Shell hızlı başlangıcındaki adımları izleyin.
    • İsteğe bağlı olarak yerel makinenizde Azure CLI'yı çalıştırın. Azure CLI zaten yüklüyse, CLI'yi ve uzantıları geçerli sürüme yükseltmek için komutunu çalıştırın az upgrade . Azure CLI'yı yüklemek için bkz . Azure CLI'yi yükleme.
  • Linux veya WSL ortamında çalıştırıyorsanız komutları yerel olarak çalıştırmak için bir Bash istemi açın. Windows ortamında çalıştırıyorsanız GitBash istemini açın.

Genel bakış

Bu makalede ele alınan üç senaryo vardır ve gerçekleştirdiğiniz ilk adımlar her birinde farklı olacaktır. Şunu yapmak istiyorsanız:

Seçtiğiniz senaryonun adımlarını tamamladıktan sonra Cihazınızı kaydetme ve Telemetri iletisi gönderme bölümüne devam edebilirsiniz.

Cihaz sertifikası oluşturma

Bu makalede, tek bir kayıt veya kayıt grubu kullanarak DPS ile kimlik doğrulaması yapmak için bir X.509 sertifikası kullanacaksınız.

Bireysel kayıt kullanıyorsanız, otomatik olarak imzalanan bir X.509 sertifikası veya cihaz sertifikasından oluşan bir sertifika zinciri ile bir veya daha fazla imzalama sertifikası kullanabilirsiniz. Kayıt grubu kullanıyorsanız bir sertifika zinciri kullanmanız gerekir.

Önemli

X.509 kayıt kimlik doğrulaması için cihaz sertifikasının konu ortak adı (CN), cihazın kayıt kimliği olarak kullanılır. Kayıt kimliği, alfasayısal karakterlerden oluşan büyük/küçük harfe duyarlı olmayan ve özel karakterler içeren bir dizedir: '-', '.', '_', ':'. Son karakter alfasayısal veya tire ('-') olmalıdır. DPS, 128 karakter uzunluğunda kayıt kimliklerini destekler; ancak, X.509 sertifikasının konu ortak adı 64 karakterle sınırlıdır. Aşağıdaki adımlarda cihaz sertifikanızın konu ortak adını değiştirirseniz, bu biçime uydığından emin olun.

Otomatik olarak imzalanan sertifika kullanma

Tek bir kayıtla kullanmak üzere otomatik olarak imzalanan bir sertifika oluşturmak için, sertifikanızı oluşturmak istediğiniz dizine gidin ve şu adımları izleyin:

  1. Şu komutu çalıştırın:

    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"
    

    Önemli

    Konu adı (//CN=my-x509-device) için verilen ek eğik çizgi yalnızca Windows platformlarında Git ile dizeden kaçmak için gereklidir.

  2. PEM geçiş tümceciği girin: sorulduğunda, geçiş tümceciği 1234kullanın.

  3. Doğrulama - PEM geçiş tümceciği girin: sorulduğunda, geçiş tümceciği 1234 yeniden kullanın.

    Artık komutu çalıştırdığınız openssl dizinde bir ortak anahtar sertifika dosyası (device-cert.pem) ve özel anahtar dosyası (device-key.pem) oluşturulmalıdır.

    Sertifika dosyasının konu ortak adı (CN) olarak ayarlanmıştır my-x509-device.

    Özel anahtar dosyası geçiş tümceciğiyle korunur: 1234.

  4. Sertifika dosyası Base64 kodlanmış. Sertifika dosyasının konu ortak adını (CN) ve diğer özelliklerini görüntülemek için aşağıdaki komutu girin:

    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
    

Sertifika zinciri kullanma

Kayıt grubu kullanıyorsanız, sertifika zinciriyle kimlik doğrulaması yapmanız gerekir. Tek bir kayıtta, sertifika zinciri veya otomatik olarak imzalanan bir sertifika kullanabilirsiniz.

Sertifika zinciri oluşturmak için X.509 sertifika zinciri oluşturma başlığındaki yönergeleri izleyin. İlk cihaz için özel anahtar ve sertifika zinciri oluşturduktan sonra durabilmeniz için bu makale için yalnızca bir cihaza ihtiyacınız vardır.

İşiniz bittiğinde aşağıdaki dosyalara sahip olmanız gerekir:

Sertifika Dosya Açıklama
kök CA sertifikası. certs/azure-iot-test-only.root.ca.cert.pem DPS'ye yüklenir ve doğrulanır.
ara CA sertifikası certs/azure-iot-test-only.intermediate.cert.pem DPS'de bir kayıt grubu oluşturmak için kullanılır.
device-01 özel anahtarı private/device-01.key.pem CIHAZ tarafından DPS ile kimlik doğrulaması sırasında cihaz sertifikasının sahipliğini doğrulamak için kullanılır.
device-01 sertifikası certs/device-01.cert.pem DPS ile tek tek kayıt girişi oluşturmak için kullanılır.
device-01 tam zincir sertifikası certs/device-01-full-chain.cert.pem Kimlik doğrulaması yapmak ve DPS'ye kaydolmak için cihaz tarafından sunulur.

Bireysel kayıt kullanma

Bu makalede kullanılacak tek bir kayıt oluşturmak için az iot dps enrollment create komutunu kullanın.

Aşağıdaki komut, belirttiğiniz cihaz sertifikasını kullanarak DPS örneğinin varsayılan ayırma ilkesine sahip tek bir kayıt girdisi oluşturur.

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}
  • Kaynak grubunuzun ve DPS örneğinizin adını kullanın.

  • Kayıt kimliği, cihazınızın kayıt kimliğidir ve X.509 kayıtları için cihaz sertifikasının konu ortak adıyla (CN) eşleşmelidir.

  • Sertifika yolu, cihaz sertifikanızın yoludur.

Not

Azure CLI komutlarını çalıştırmak için Cloud Shell kullanıyorsanız, komutunu çalıştırmadan önce sertifika dosyanızı bulut sürücünüze yüklemek için karşıya yükle düğmesini kullanabilirsiniz.

Azure Cloud Shell'de karşıya dosya yükle düğmesini gösteren ekran görüntüsü.

Kayıt grubu kullanma

Bu makalede kullanılacak bir kayıt grubu oluşturmak için az iot dps enrollment-group create komutunu kullanın.

Aşağıdaki komut, ara CA sertifikası kullanarak DPS örneğiniz için varsayılan ayırma ilkesine sahip bir kayıt grubu girdisi oluşturur:

az iot dps enrollment-group create -g {resource_group_name} --dps-name {dps_name} --enrollment-id {enrollment_id} --certificate-path {path_to_your_certificate}
  • Kaynak grubunuzun ve DPS örneğinizin adını kullanın.

  • Kayıt kimliği, alfasayısal karakterlerden oluşan büyük/küçük harfe duyarlı olmayan ve özel karakterler içeren bir dizedir: '-', '.', '_', ':'. Son karakter alfasayısal veya tire ('-') olmalıdır. Kayıt grubu için kullanmayı seçtiğiniz herhangi bir ad olabilir.

  • Sertifika yolu, ara sertifikanızın yoludur. Sertifika zinciri kullanma başlığı altında yer alan yönergeleri izlediyseniz, dosya adı certs/azure-iot-test-only.intermediate.cert.pem şeklindedir.

Not

Azure CLI komutlarını çalıştırmak için Cloud Shell kullanıyorsanız, komutunu çalıştırmadan önce sertifika dosyanızı bulut sürücünüze yüklemek için karşıya yükle düğmesini kullanabilirsiniz.

Azure Cloud Shell'de karşıya dosya yükle düğmesini gösteren ekran görüntüsü.

Not

İsterseniz, daha önce DPS ile karşıya yüklenmiş ve doğrulanmış bir imzalama sertifikasına dayalı bir kayıt grubu oluşturabilirsiniz (sonraki bölüme bakın). Bunu yapmak için, ile sertifika adını --ca-name belirtirsiniz ve komutunda parametresini --certificate-path atlarsınız az iot dps enrollment-group create .

İmzalama sertifikasını karşıya yükleme ve doğrulama

Tek bir kayıt veya kayıt grubu için sertifika zinciri kullanıyorsanız, cihaz sertifikasının imzalama zincirindeki en az bir sertifikayı DPS'ye yüklemeniz ve doğrulamanız gerekir.

  • Bireysel kayıt için bu, cihazın sertifika zincirindeki herhangi bir imzalama sertifikası olabilir.

  • Bir kayıt grubu için bu, kayıt grubundaki sertifika kümesi veya kök CA sertifikası dahil olmak üzere kayıt zincirindeki herhangi bir sertifika olabilir.

Sertifikanızı karşıya yüklemek ve doğrulamak için az iot dps certificate create komutunu kullanın:

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
  • Kaynak grubunuzun ve DPS örneğinizin adını kullanın.

  • Sertifika yolu, imzalama sertifikanızın yoludur. Bu makale için kök CA sertifikasını karşıya yüklemenizi öneririz. Sertifika zinciri kullanma başlığı altında yer alan yönergeleri izlediyseniz, dosya adı certs/azure-iot-test-only.root.ca.cert.pem şeklindedir.

  • Sertifika adı yalnızca alfasayısal karakterler veya şu özel karakterleri içerebilir: -._. Boşluklara izin verilmez. Örneğin, "azure-iot-test-only-root".

Not

Azure CLI komutlarını çalıştırmak için Cloud Shell kullanıyorsanız, komutunu çalıştırmadan önce sertifika dosyanızı bulut sürücünüze yüklemek için karşıya yükle düğmesini kullanabilirsiniz.

Azure Cloud Shell'de karşıya dosya yükle düğmesini gösteren ekran görüntüsü.

Not

Bu bölümdeki adımlar, karşıya yüklemede sertifikayı otomatik olarak doğrular. Sertifikayı el ile doğrulama da yapabilirsiniz. Daha fazla bilgi edinmek için bkz . Ara veya kök CA'nın el ile doğrulanması.

Cihazınızı kaydetme

Cihazınızı DPS aracılığıyla sağlamak için Cihazı Kaydetme REST API'sini çağırırsınız.

Aşağıdaki curl komutunu kullanın:

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

Where:

  • -L curl'e HTTP yeniden yönlendirmelerini izlemesini söyler.

  • –i curl'e çıkışa protokol üst bilgilerini eklemesini söyler. Bu üst bilgiler kesinlikle gerekli değildir, ancak yararlı olabilir.

  • -X PUT curl'e bunun bir HTTP PUT komutu olduğunu bildirir. Bu API çağrısı için gereklidir.

  • --cert [path_to_your_device_cert] curl'e cihazınızın X.509 sertifikasını nerede bulacağını söyler. Cihazınızın özel anahtarı bir geçiş tümceciğiyle korunuyorsa, geçiş tümceciği iki nokta üst üste önünde bulunan sertifika yolundan sonra ekleyebilirsiniz, örneğin: --cert my-device.pem:1234.

  • --key [path_to_your_device_private_key] curl'e cihazınızın özel anahtarını nerede bulacağını söyler.

  • -H 'Content-Type: application/json' DPS'ye JSON içeriği gönderiyoruz ve 'application/json' olması gerektiğini bildirir

  • -H 'Content-Encoding: utf-8' DPS'ye ileti gövdesi için kullanmakta olduğumuz kodlamayı bildirir. İşletim sisteminiz/istemciniz için uygun değere ayarlayın; ancak genel olarak utf-8şeklindedir.

  • -d '{"registrationId": "[registration_id]"}'–d parametresi, göndermekte olduğumuz iletinin 'verileri' veya gövdesidir. '{"registrationId":"[registration_id"}' biçiminde JSON olmalıdır. Curl için tek tırnak içine alındığını unutmayın; aksi takdirde, JSON'daki çift tırnak işaretinden kurtulmanız gerekir. X.509 kaydı için kayıt kimliği, cihaz sertifikanızın konu ortak adıdır (CN).

  • Son olarak, son parametre gönderilecek URL'dir. "Normal" (şirket içi değil) DPS için genel DPS uç noktası global.azure-devices-provisioning.net kullanılır: https://global.azure-devices-provisioning.net/[dps_id_scope]/registrations/[registration_id]/register?api-version=2019-03-31. ve [registration_id] değerlerini uygun değerlerle değiştirmeniz [dps_scope_id] gerekir.

Örneğin:

  • Otomatik olarak imzalanan sertifika kullanma başlığı altındaki yönergeleri izlediyseniz:

    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
    
  • Sertifika zinciri kullanma başlığı altındaki yönergeleri izlediyseniz:

    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
    

Başarılı bir çağrı aşağıdakine benzer bir yanıta sahip olur:

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"}

Yanıt bir işlem kimliği ve bir durum içerir. Bu durumda, durum olarak assigningayarlanır. DPS kaydı, büyük olasılıkla uzun süre çalışan bir işlem olduğundan zaman uyumsuz olarak gerçekleştirilir. Normalde, cihazınızın ne zaman atandığını veya bir hata oluşup oluşmadığını belirlemek için İşlem Durumu Arama REST API'sini kullanarak durumu yoklarsınız.

DPS için geçerli durum değerleri şunlardır:

  • assigned: durum çağrısından döndürülen değer, cihazın hangi IoT Hub'a atandığını gösterir.

  • assigning: işlem hala çalışıyor.

  • disabled: Kayıt kaydı DPS'de devre dışı bırakılmıştır, bu nedenle cihaz atanamaz.

  • failed: atama başarısız oldu. Neyin başarısız olduğunu errorCode belirtmek için yanıtta bir registrationState kayıtta ve errorMessage döndürülür.

  • unassigned

İşlem Durumu Arama API'sini çağırmak için aşağıdaki curl komutunu kullanın:

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

Cihaz Kaydetme isteğinde kullandığınız kimlik kapsamının, kayıt kimliğinin, sertifikanın ve anahtarın aynısını kullanacaksınız. Cihazı Kaydet yanıtında döndürülen işlem kimliğini kullanın.

Örneğin, aşağıdaki komut Otomatik olarak imzalanan sertifika kullanma bölümünde oluşturulan otomatik olarak imzalanan sertifikaya yöneliktir. (Kimlik kapsamını ve işlem kimliğini değiştirmeniz gerekir.)

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

Aşağıdaki çıkış, başarıyla atanmış bir cihazın yanıtını gösterir. özelliğinin status olduğuna assigned ve özelliğin registrationState.assignedHub cihazın sağlandığı IoT hub'ına ayarlandığına dikkat edin.

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="
   }
}

Cihaz kimliğini ve atanan IoT hub'ını not edin. Sonraki bölümde telemetri iletisi göndermek için bunları kullanacaksınız.

Telemetri iletisi gönderme

Cihaza telemetri göndermek için IoT Hub Cihaz Gönderme Olayı REST API'sini çağırırsınız.

Aşağıdaki curl komutunu kullanın:

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

Where:

  • -X POST curl'e bunun bir HTTP POST komutu olduğunu bildirir. Bu API çağrısı için gereklidir.

  • --cert [path_to_your_device_cert] curl'e cihazınızın X.509 sertifikasını nerede bulacağını söyler. Cihazınızın özel anahtarı bir geçiş tümceciğiyle korunuyorsa, geçiş tümceciği iki nokta üst üste önünde bulunan sertifika yolundan sonra ekleyebilirsiniz, örneğin: --cert my-device.pem:1234.

  • --key [path_to_your_device_private_key] curl'e cihazınızın özel anahtarını nerede bulacağını söyler.

  • -H 'Content-Type: application/json' IoT Hub'a JSON içeriği gönderiyoruz ve 'application/json' olması gerektiğini bildirir.

  • -H 'Content-Encoding: utf-8' IoT Hub'a ileti gövdesi için kullanmakta olduğumuz kodlamayı bildirir. İşletim sisteminiz/istemciniz için uygun değere ayarlayın; ancak genel olarak utf-8şeklindedir.

  • -d '{"temperature": 30}'–d parametresi, göndermekte olduğumuz iletinin 'verileri' veya gövdesidir. Bu makale için tek bir sıcaklık veri noktası gönderiyoruz. İçerik türü application/json olarak belirtildiğinden, bu istek için gövde JSON olur. Curl için tek tırnak içine alındığını unutmayın; aksi takdirde, JSON'daki çift tırnak işaretinden kurtulmanız gerekir.

  • Son parametre, gönderinin gönderiliyor olduğu URL'dir. Cihaz Olay Gönderme API'si için URL şöyledir: https://[assigned_iot_hub_name].azure-devices.net/devices/[device_id]/messages/events?api-version=2020-03-13.

    • değerini cihazınızın atandığı IoT hub'ının adıyla değiştirin [assigned_iot_hub_name] .

    • değerini, cihazınızı kaydettiğinizde atanan cihaz kimliğiyle değiştirin [device_id] . Kayıt grupları aracılığıyla sağlanan cihazlar için cihaz kimliği kayıt kimliği olacaktır. Bireysel kayıtlar için, isteğe bağlı olarak kayıt girişindeki kayıt kimliğinden farklı bir cihaz kimliği belirtebilirsiniz.

Örneğin:

  • Otomatik olarak imzalanan sertifika kullanma başlığı altındaki yönergeleri izlediyseniz:

    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
    
  • Sertifika zinciri kullanma başlığı altındaki yönergeleri izlediyseniz:

    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
    

Başarılı bir çağrı aşağıdakine benzer bir yanıta sahip olur:

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

Sonraki Adımlar