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

Bu kılavuzda, Azure IoT DPS cihaz SDK'sı kullanmadan, HTTPS üzerinden x.509 sertifikalarını kullanarak bir cihaz yapılandıracağı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.

  • Hızlı Başlangıç: 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 python --versionkomutunu çalıştırarak python3 --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. Yazılım Özgürlüğü Koruması'nın Git istemci araçlarına bakın, bu araçların en son sürümünü yüklemek için. Bu, yerel Git deponuzla etkileşim kurmak için kullanabileceğiniz komut satırı uygulaması git'i içerir. Windows'ta, yerel sisteminizdeki tüm komutları Git Bash 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 biri için farklıdı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 X.509 sertifikası kullanırsınız.

Bireysel kayıt kullanıyorsanız, kendi imzasını taşıyan bir X.509 sertifikası veya cihaz sertifikasının yanı sıra bir veya daha fazla imzalama sertifikası içeren bir sertifika zinciri 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 sorulduğunda: geçiş tümceciğini kullanın.

  3. Doğrulama - PEM geçiş tümceciğini girmeniz sorulduğunda, geçiş tümceciğini 1234 tekrar kullanın.

    Artık komutu çalıştırdığınız dizinde bir ortak anahtar sertifika dosyası (device-cert.pem) ve özel anahtar dosyası (openssl) 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 sertifikasının sahipliğini DPS ile kimlik doğrulaması sırasında doğrulamak için cihaz tarafından 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 makale için kullanmak üzere bireysel bir kayıt oluşturmak amacıyla `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}

Dikkat

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ı yerine koyun.

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

Dikkat

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

Dikkat

İsterseniz, daha önce DPS ile 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, --ca-name ile sertifika adını belirtir ve --certificate-path komutunda az iot dps enrollment-group create parametresini atlarsınız.

İmzalama sertifikasını yükle ve doğrula

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.

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

  • Bir kayıt grubu için bu sertifika, kayıt grubunda ayarlanan sertifika 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ı yerine koyun.

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

Dikkat

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

Dikkat

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

Cihazınızı kaydedin

Cihazınızı DPS aracılığıyla sağlamak için Register Device 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

Nerede:

  • -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 bu komutun 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. Aygıtınızın özel anahtarı bir parola ile korunuyorsa, bu parolayı, örneğin: --cert my-device.pem:1234 şeklinde sertifika yolu sonuna iki nokta ekleyerek ekleyebilirsiniz.

    • Otomatik olarak imzalanan bir sertifika kullanıyorsanız, cihaz sertifika dosyanız tek bir X.509 sertifikası içerir. Otomatik olarak imzalanan sertifika kullanma başlığı altında yer alan yönergeleri izlediyseniz, dosya adı device-cert.pem, özel anahtar geçiş tümceciği ise olur1234, bu nedenle kullanın--cert device-cert.pem:1234.

    • Örneğin, bir kayıt grubu aracılığıyla kimlik doğrulaması yaparken bir sertifika zinciri kullanıyorsanız, cihaz sertifika dosyanız geçerli bir sertifika zinciri içermelidir. Sertifika zinciri, cihaz sertifikasını ve doğrulanmış sertifikaya kadar tüm imzalama sertifikalarını içermelidir. Sertifika zincirini oluşturmak için sertifika zinciri kullanma başlığı altında yer alan yönergeleri izlediyseniz dosya yolu certs/device-01-full-chain.cert.pem şeklindedir, bu nedenle kullanın--cert certs/device-01-full-chain.cert.pem.

  • --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ınır; 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. [dps_scope_id] ve [registration_id] ile uygun değerlerle değiştirmeniz gerekiyor.

Ö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ğıdaki örneğe benzer bir yanıt sağlar:

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ı, potansiyel olarak uzun süren bir işlem olduğundan eşzamansız 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. errorCode ve errorMessage, başarısız olanı belirtmek için yanıt içinde bir registrationState kayıtta 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 ve sertifikanın ve anahtarın aynısını kullanırsı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ışta, başarıyla atanan bir cihazın yanıtı gösterilmektedir. ö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

Nerede:

  • -X POST curl'e bu komutun 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. Aygıtınızın özel anahtarı bir parola ile korunuyorsa, bu parolayı, örneğin: --cert my-device.pem:1234 şeklinde sertifika yolu sonuna iki nokta ekleyerek ekleyebilirsiniz.

    • Otomatik olarak imzalanan bir sertifika kullanıyorsanız, cihaz sertifika dosyanız tek bir X.509 sertifikası içerir. Otomatik olarak imzalanan sertifika kullanma başlığı altında yer alan yönergeleri izlediyseniz, dosya adı device-cert.pem, özel anahtar geçiş tümceciği ise olur1234, bu nedenle kullanın--cert device-cert.pem:1234.

    • Sertifika zinciri kullanıyorsanız, cihaz sertifika dosyanız geçerli bir sertifika zinciri içermelidir. Sertifika zincirini oluşturmak için sertifika zinciri kullanma başlığı altında yer alan yönergeleri izlediyseniz dosya yolu certs/device-01-full-chain.cert.pem şeklindedir, bu nedenle kullanın--cert certs/device-01-full-chain.cert.pem.

  • --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önderdiğimizi ve bunun 'application/json' olarak tanımlanması gerektiğini belirtiyoruz.

  • -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ınır; 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.

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

    • 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ğidir. 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ğıdaki örneğe benzer bir yanıta sahiptir:

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