Share via


Hızlı Başlangıç: X.509 sertifikası simülasyon cihazı sağlama

Bu hızlı başlangıçta, Windows makinenizde bir sanal cihaz oluşturacaksınız. Simülasyon cihazı, kimlik doğrulaması için X.509 sertifika kanıtlamasını kullanacak şekilde yapılandırılmıştır. Cihazınızı yapılandırdıktan sonra Azure IoT Hub Cihazı Sağlama Hizmeti'ni kullanarak IoT hub'ınıza sağlarsınız.

Sağlama işlemini bilmiyorsanız, sağlama genel bakışını gözden geçirin. Ayrıca devam etmeden önce IoT Hub Cihazı Sağlama Hizmetini Azure portalıyla ayarlama bölümünde bulunan adımları tamamladığınızdan emin olun.

Bu hızlı başlangıçta Windows tabanlı iş istasyonu için bir çözüm gösterilmektedir. Ancak, Linux'ta yordamları da gerçekleştirebilirsiniz. Linux örneği için bkz . Öğretici: Coğrafi gecikme süresi için sağlama.

Önkoşullar

Aşağıdaki önkoşullar bir Windows geliştirme ortamı içindir. Linux veya macOS için SDK belgelerindeki Geliştirme ortamınızı hazırlama bölümündeki uygun bölüme bakın.

  • 'C++ile masaüstü geliştirme' iş yükü etkinken Visual Studio 2022'yi yükleyin. Visual Studio 2015, Visual Studio 2017 ve Visual Studio 19 da desteklenir. Linux veya macOS için SDK belgelerindeki Geliştirme ortamınızı hazırlama bölümündeki uygun bölüme bakın.

  • En son CMake derleme sistemini yükleyin. CMake yürütülebilir dosyasını yolunuza ekleyen seçeneği işaretlediğinizden emin olun.

    Önemli

    Yüklemeyi başlatmadan CMake önce makinenizde Visual Studio önkoşullarının (Visual Studio ve 'C++ile masaüstü geliştirme' iş yükü) yüklü olduğunu onaylayın. Önkoşullar sağlandıktan ve indirme doğrulandıktan sonra, CMake derleme sistemini yükleyin. Ayrıca, CMake derleme sisteminin eski sürümlerinin bu makalede kullanılan çözüm dosyasını oluşturamaya çalışmadığını unutmayın. CMake'nin en son sürümünü kullandığınızdan emin olun.

Aşağıdaki önkoşullar bir Windows geliştirme ortamı içindir. Linux veya macOS için SDK belgelerindeki Geliştirme ortamınızı hazırlama bölümündeki uygun bölüme bakın.

  • Windows tabanlı makinenize .NET SDK 6.0 veya üzerini yükleyin. Sürümünüzü denetlemek için aşağıdaki komutu kullanabilirsiniz.

    dotnet --info
    

Aşağıdaki önkoşullar bir Windows geliştirme ortamı içindir. Linux veya macOS için SDK belgelerindeki Geliştirme ortamınızı hazırlama bölümündeki uygun bölüme bakın.

  • Makinenize Node.js v4.0 veya üzerini yükleyin.

Aşağıdaki önkoşullar bir Windows geliştirme ortamı içindir.

Aşağıdaki önkoşullar bir Windows geliştirme ortamı içindir. Linux veya macOS için SDK belgelerindeki Geliştirme ortamınızı hazırlama bölümündeki uygun bölüme bakın.

  • En son Git 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.

  • Makinenizde OpenSSL'nin yüklü olduğundan emin olun. Windows'da, Git yüklemeniz openSSL yüklemesini içerir. OpenSSL'ye Git Bash isteminden erişebilirsiniz. OpenSSL'nin yüklü olduğunu doğrulamak için bir Git Bash istemi açın ve girin openssl version.

    Not

    OpenSSL hakkında bilgi sahibi değilseniz ve Windows makinenizde zaten yüklü değilse Git Bash isteminden OpenSSL kullanmanızı öneririz. Alternatif olarak, kaynak kodu indirmeyi ve OpenSSL oluşturmayı seçebilirsiniz. Daha fazla bilgi edinmek için OpenSSL İndirmeleri sayfasına bakın. Alternatif olarak, üçüncü taraflardan önceden oluşturulmuş OpenSSL'i de indirebilirsiniz. Daha fazla bilgi edinmek için OpenSSL wiki'sine bakın. Microsoft, üçüncü taraflardan indirilen paketlerin geçerliliği konusunda hiçbir garantide bulunmaz. OpenSSL oluşturmayı veya indirmeyi seçerseniz, OpenSSL ikili dosyasının yolunuzda erişilebilir olduğundan ve ortam değişkeninin OPENSSL_CNF openssl.cnf dosyanızın yoluna ayarlandığından emin olun.

  • Hem Windows komut istemini hem de Git Bash istemini açın.

    Bu hızlı başlangıçtaki adımlarda, Git'in bir parçası olarak yüklenen bir Windows makinesi ve OpenSSL yüklemesi kullandığınız varsayılır. OpenSSL komutlarını vermek için Git Bash istemini ve diğer her şey için Windows komut istemini kullanırsınız. Linux kullanıyorsanız, bash kabuğundan tüm komutları yayımlayabilirsiniz.

Geliştirme ortamınızı hazırlama

Bu bölümde, Azure IoT C SDK'sını oluşturmak için kullanılan bir geliştirme ortamı hazırlamış olursunuz. Örnek kod, cihazın önyükleme sırası sırasında cihazı sağlamayı dener.

  1. Bir web tarayıcısı açın ve Azure IoT C SDK'sının Yayın sayfasına gidin.

  2. Sayfanın üst kısmındaki Etiketler sekmesini seçin.

  3. Azure IoT C SDK'sının en son sürümünün etiket adını kopyalayın.

  4. Windows komut isteminizde aşağıdaki komutları çalıştırarak C GitHub deposu için Azure IoT Cihaz SDK'sının en son sürümünü kopyalayın. değerini önceki adımda kopyaladığınız etiketle değiştirin <release-tag> , örneğin: lts_01_2023.

    git clone -b <release-tag> https://github.com/Azure/azure-iot-sdk-c.git
    cd azure-iot-sdk-c
    git submodule update --init
    

    Bu işlemin tamamlanması birkaç dakika sürebilir.

  5. İşlem tamamlandığında dizinden azure-iot-sdk-c aşağıdaki komutları çalıştırın:

    mkdir cmake
    cd cmake
    
  6. Kod örneği, X.509 kimlik doğrulaması aracılığıyla kanıtlama sağlamak için bir X.509 sertifikası kullanır. Sdk'nın geliştirme platformunuza özgü ve cihaz sağlama istemcisini içeren bir sürümünü oluşturmak için aşağıdaki komutu çalıştırın. Dizinde cmake simülasyon cihazı için bir Visual Studio çözümü oluşturulur.

    Aşağıdaki komutta ile -Dhsm_custom_lib kullanılan yolu belirtirken, daha önce oluşturduğunuz dizindeki kitaplığın mutlak yolunu kullandığınızdan cmake emin olun. Gösterilen yol, C SDK'sını C sürücüsünün kök dizinine kopyaladığınız varsayılır. Başka bir dizin kullandıysanız yolu buna göre ayarlayın.

    cmake -Duse_prov_client:BOOL=ON -Dhsm_custom_lib=c:/azure-iot-sdk-c/cmake/provisioning_client/samples/custom_hsm_example/Debug/custom_hsm_example.lib ..
    

İpucu

cmake C++ derleyicinizi bulamazsanız, yukarıdaki komutu çalıştırırken derleme hataları alabilirsiniz. Böyle bir durumda Visual Studio komut isteminde komutunu çalıştırmayı deneyin.

  1. Derleme başarılı olduğunda, son birkaç çıkış satırı aşağıdaki çıkışa benzer şekilde görünür:

    -- Building for: Visual Studio 17 2022
    -- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.22000.
    -- The C compiler identification is MSVC 19.32.31329.0
    -- The CXX compiler identification is MSVC 19.32.31329.0
    
    ...
    
    -- Configuring done
    -- Generating done
    -- Build files have been written to: C:/azure-iot-sdk-c/cmake
    

Windows komut isteminizde aşağıdaki komutu kullanarak C# GitHub deposu için Azure IoT SDK'sını kopyalayın:

git clone https://github.com/Azure/azure-iot-sdk-csharp.git

Windows komut isteminizde, aşağıdaki komutu kullanarak Node.js GitHub deposu için Azure IoT SDK'sını kopyalayın:

git clone https://github.com/Azure/azure-iot-sdk-node.git

Windows komut isteminizde aşağıdaki komutu kullanarak Python GitHub deposu için Azure IoT Cihaz SDK'sını kopyalayın:

git clone -b v2 https://github.com/Azure/azure-iot-sdk-python.git --recursive

Not

Bu öğreticide kullanılan örnekler azure-iot-sdk-python deposunun v2 dalında yer alır. Python SDK'sının V3'leri beta sürümünde kullanılabilir.

  1. Windows komut isteminizde aşağıdaki komutu kullanarak Java GitHub deposu için Azure IoT Örnekleri'ni kopyalayın:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  2. Kök azure-iot-sdk-java dizine gidin ve gerekli tüm paketleri indirmek için projeyi oluşturun.

    cd azure-iot-sdk-java
    mvn install -DskipTests=true
    

Otomatik olarak imzalanan X.509 sertifikası oluşturma

Bu bölümde, otomatik olarak imzalanan bir X.509 sertifikası ve özel anahtar oluşturmak için OpenSSL kullanacaksınız. Bu sertifika sağlama hizmeti örneğine yüklenir ve hizmet tarafından doğrulanır.

Dikkat

Yalnızca geliştirme testi için bu hızlı başlangıçta OpenSSL ile oluşturulan sertifikaları kullanın. Bu sertifikaları üretim ortamında kullanmayın. Bu sertifikaların süresi 30 gün sonra dolar ve 1234 gibi sabit kodlanmış parolalar içerebilir. Üretimde kullanıma uygun sertifikalar alma hakkında bilgi edinmek için Azure IoT Hub belgelerinde X.509 CA sertifikası alma bölümüne bakın.

Bu bölümdeki adımları Git Bash isteminizde gerçekleştirin.

  1. Git Bash isteminizde, sertifikalarınızı oluşturmak istediğiniz dizine gidin.

  2. Ş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.

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

  4. 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. X.509 tabanlı kayıtlar için Kayıt Kimliği ortak ada ayarlanı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. Ortak ad bu biçime uymalıdır. DPS, 128 karakter uzunluğunda kayıt kimliklerini destekler; ancak, X.509 sertifikasındaki konu ortak adının uzunluğu üst sınırı 64 karakterdir. Bu nedenle, X.509 sertifikaları kullanılırken kayıt kimliği 64 karakterle sınırlıdır.

  5. Sertifika dosyası Base 64 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
    
  1. Örnek kod, şifrelenmemiş bir özel anahtar gerektirir. Şifrelenmemiş bir özel anahtar oluşturmak için aşağıdaki komutu çalıştırın:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. device-key.pem: için geçiş tümceciği girmeniz istendiğinde, daha önce 1234yaptığınız geçiş tümceciğiyle aynı parola tümceciği kullanın.

Git Bash istemini açık tutun. Bu hızlı başlangıçta ihtiyacınız olacak.

C# örnek kodu, parola korumalı PKCS#12 biçimli bir dosyada (certificate.pfx ) depolanan X.509 sertifikalarını kullanacak şekilde ayarlanır. Bu hızlı başlangıcın ilerleyen bölümlerinde tek bir kayıt girdisi oluşturmak için oluşturduğunuz PEM biçimli ortak anahtar sertifika dosyasına (device-cert.pem) yine de ihtiyacınız vardır.

  1. Örnek tarafından beklenen PKCS12 biçimlendirilmiş dosyasını oluşturmak için aşağıdaki komutu girin:

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. device-key.pem: için geçiş tümceciği girmeniz istendiğinde, daha önce 1234yaptığınız geçiş tümceciğiyle aynı parola tümceciği kullanın.

  3. Dışarı Aktarma Parolası: girmeniz istendiğinde, parolasını 1234kullanın.

  4. Doğrulama - Parolayı Dışarı Aktar: girin sorulduğunda parolayı 1234 yeniden kullanın.

    Artık komutu çalıştırdığınız openssl dizinde PKCS12 biçimli bir sertifika dosyası (certificate.pfx) oluşturulmalıdır.

  5. PKCS12 biçimlendirilmiş sertifika dosyasını X.509 cihaz sağlama örneği için proje dizinine kopyalayın. Verilen yol, örnek depoyu indirdiğiniz konuma göredir.

    cp certificate.pfx ./azure-iot-sdk-csharp/provisioning/device/samples/"Getting Started"/X509Sample
    

Bu hızlı başlangıcın geri kalanında Git Bash istemine ihtiyacınız yoktur. Ancak, sonraki adımlarda sorun yaşıyorsanız sertifikanızı denetlemek için sertifikanızı açık tutmak isteyebilirsiniz.

  1. Örnek kod, şifrelenmemiş bir özel anahtar gerektirir. Şifrelenmemiş bir özel anahtar oluşturmak için aşağıdaki komutu çalıştırın:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. device-key.pem: için geçiş tümceciği girmeniz istendiğinde, daha önce 1234yaptığınız geçiş tümceciğiyle aynı parola tümceciği kullanın.

  3. X.509 cihaz sağlama örneği için cihaz sertifikasını ve şifrelenmemiş özel anahtarı proje dizinine kopyalayın. Verilen yol, SDK'yi indirdiğiniz konuma göredir.

    cp device-cert.pem ./azure-iot-sdk-node/provisioning/device/samples
    cp unencrypted-device-key.pem ./azure-iot-sdk-node/provisioning/device/samples
    

Bu hızlı başlangıcın geri kalanında Git Bash istemine ihtiyacınız yoktur. Ancak, sonraki adımlarda sorun yaşıyorsanız sertifikanızı denetlemek için sertifikanızı açık tutmak isteyebilirsiniz.

  1. X.509 cihaz sağlama örneği için cihaz sertifikasını ve özel anahtarı proje dizinine kopyalayın. Verilen yol, SDK'yi indirdiğiniz konuma göredir.

    cp device-cert.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
    cp device-key.pem ./azure-iot-sdk-python/samples/async-hub-scenarios
    

Bu hızlı başlangıcın geri kalanında Git Bash istemine ihtiyacınız yoktur. Ancak, sonraki adımlarda sorun yaşıyorsanız sertifikanızı denetlemek için sertifikanızı açık tutmak isteyebilirsiniz.

  1. Java örnek kodu şifrelenmemiş bir özel anahtar gerektirir. Şifrelenmemiş bir özel anahtar oluşturmak için aşağıdaki komutu çalıştırın:

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. device-key.pem: için geçiş tümceciği girmeniz istendiğinde, daha önce 1234yaptığınız geçiş tümceciğiyle aynı parola tümceciği kullanın.

Git Bash istemini açık tutun. Bu hızlı başlangıçta ihtiyacınız olacak.

Cihaz kaydı oluşturma

Azure IoT Cihaz Sağlama Hizmeti iki tür kaydı destekler:

Bu makalede, ioT hub'ı ile sağlanacak tek bir cihaz için bireysel kayıt gösterilmektedir.

  1. Azure portalında oturum açın ve Cihaz Sağlama Hizmeti örneğine gidin.

  2. Gezinti menüsünün Ayarlar bölümünde Kayıtları yönet'i seçin.

  3. Bireysel kayıtlar sekmesini ve ardından Bireysel kayıt ekle'yi seçin.

    Bireysel kayıt ekle seçeneğini gösteren ekran görüntüsü.

  4. Kayıt ekle sayfasının Kayıt + sağlamasayfasında, kayıt ayrıntılarını yapılandırmak için aşağıdaki bilgileri sağlayın:

    Alan Açıklama
    Tasdik Kanıtlama mekanizması olarak X.509 istemci sertifikalarını seçin.
    X.509 sertifika ayarları Bu kaydın cihazını doğrulamak için kullanılacak bir veya iki sertifikayı karşıya yükleyin.
    Sağlama durumu Bu kaydın cihazını sağlamak için kullanılabilir olmasını istiyorsanız Bu kaydı etkinleştir kutusunu işaretleyin. Kaydın devre dışı bırakılmasını istiyorsanız bu kutunun işaretini kaldırın. Bu ayarı daha sonra değiştirebilirsiniz.
    yeniden sağlama ilkesi DPS'nin yeniden sağlama isteyen cihazları nasıl işlemesini istediğinizi yansıtan bir yeniden sağlama ilkesi seçin. Daha fazla bilgi için bkz . İlkeleri yeniden sağlama.
  5. İleri: IoT hub'ları'ı seçin.

  6. Kayıt ekle sayfasının IoT hub'ları sekmesinde, kaydın cihazları hangi IoT hub'larına sağlayabileceğini belirlemek için aşağıdaki bilgileri sağlayın:

    Alan Açıklama
    Hedef IoT hub'ları Bağlı IoT hub'larınızdan birini veya daha fazlasını seçin veya bir IoT hub'ına yeni bir bağlantı ekleyin. IoT hub'larını DPS örneğinize bağlama hakkında daha fazla bilgi edinmek için bkz . IoT hub'larını bağlama ve yönetme.
    Ayırma ilkesi Birden fazla bağlı IoT hub'ı seçtiyseniz cihazları farklı hub'lara nasıl atamak istediğinizi seçin. Ayırma ilkeleri hakkında daha fazla bilgi edinmek için bkz . Ayırma ilkelerini kullanma.

    Yalnızca bir bağlantılı IoT hub'ı seçtiyseniz, Eşit ağırlıklı dağıtım ilkesini kullanmanızı öneririz.
  7. İleri: Cihaz ayarları'nı seçin

  8. Kayıt ekle sayfasının Cihaz ayarları sekmesinde, yeni sağlanan cihazların nasıl yapılandırılacağını tanımlamak için aşağıdaki bilgileri sağlayın:

    Alan Açıklama
    Cihaz Kimliği IoT Hub'da sağlanan cihaza atanacak bir cihaz kimliği sağlayın. Cihaz kimliği sağlamazsanız kayıt kimliği kullanılır.
    IoT Edge Sağlanan cihaz Azure IoT Edge çalıştıracaksa Sağlanan cihazlarda IoT Edge'i etkinleştir'i denetleyin. Bu kayıt IoT Edge özellikli olmayan bir cihaza yönelikse bu kutunun işaretini kaldırın.
    Cihaz etiketleri Sağlanan cihazın cihaz ikizi için uygulamak istediğiniz etiketleri sağlamak için bu metin kutusunu kullanın.
    İstenen özellikler Sağlanan cihazın cihaz ikizi için uygulamak istediğiniz tüm istenen özellikleri sağlamak için bu metin kutusunu kullanın.

    Daha fazla bilgi için bkz. IoT Hub'ındaki cihaz ikizlerini kavrama ve kullanma.

  9. Sonraki: Gözden geçirme ve oluşturma’yı seçin.

  10. Gözden Geçir + oluştur sekmesinde tüm değerlerinizi doğrulayın ve Oluştur'u seçin.

Cihaz sağlama kodunu hazırlama ve çalıştırma

Bu bölümde, cihazın önyükleme sırasını Cihaz Sağlama Hizmeti örneğine göndermek için örnek kodu güncelleştirin. Bu önyükleme sırası, cihazın tanınmasına ve DPS örneğine bağlı bir IoT hub'ına atanmalarına neden olur.

Bu bölümde Git Bash isteminizi ve Visual Studio IDE'yi kullanacaksınız.

Sağlama cihaz kodunu yapılandırma

Bu bölümde, örnek kodu Cihaz Sağlama Hizmeti örnek bilgilerinizle güncelleştirin.

  1. Azure portalında, Cihaz Sağlama Hizmetiniz için Genel Bakış sekmesini seçin.

  2. Kimlik Kapsamı değerini kopyalayın.

    Azure portalındaki kimlik kapsamının ekran görüntüsü.

  3. Visual Studio'yu başlatın ve azure-iot-sdk-c git deposunun kökünde oluşturduğunuz dizinde oluşturulan cmake yeni çözüm dosyasını açın. Çözüm dosyası olarak adlandırılır azure_iot_sdks.sln.

  4. Visual Studio için Çözüm Gezgini Provision_Samples prov_dev_client_sample Kaynak Dosyaları'na > gidin ve prov_dev_client_sample.c dosyasını açın.>

  5. Sabiti id_scope bulun ve değerini 2. adımda kopyaladığınız Kimlik Kapsamı değerinizle değiştirin.

    static const char* id_scope = "0ne00000A0A";
    
  6. Aynı dosyada main() işlevinin tanımını bulun. değişkeninin olarak SECURE_DEVICE_TYPE_X509ayarlandığından hsm_type emin olun.

    SECURE_DEVICE_TYPE hsm_type;
    //hsm_type = SECURE_DEVICE_TYPE_TPM;
    hsm_type = SECURE_DEVICE_TYPE_X509;
    //hsm_type = SECURE_DEVICE_TYPE_SYMMETRIC_KEY;
    
  7. Değişikliklerinizi kaydedin.

  8. prov_dev_client_sample projesine sağ tıklayın ve Başlangıç Projesi Olarak Ayarla'yı seçin.

Özel HSM saplama kodunu yapılandırma

Gerçek güvenli donanım tabanlı depolama alanıyla etkileşim kurmanın özellikleri, donanıma bağlı olarak değişir. Sonuç olarak, bu hızlı başlangıçta simülasyon cihazı tarafından kullanılan sertifika ve özel anahtar, özel Donanım Güvenlik Modülü (HSM) saptama kodunda sabit olarak kodlanır.

Özel HSM saplama kodunu, kimliğiyle my-x509-devicecihazın kimliğinin benzetimini yapmak üzere güncelleştirmek için:

  1. Visual Studio için Çözüm Gezgini'nde Provision_Samples custom_hsm_example Kaynak Dosyaları'na gidin ve custom_hsm_example.c dosyasını açın.>>

  2. Dize sabitinin COMMON_NAME dize değerini, cihaz sertifikasını my-x509-deviceoluştururken kullandığınız ortak adı kullanarak güncelleştirin.

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. Sabit dizenin CERTIFICATE dize değerini, daha önce oluşturduğunuz device-cert.pem cihaz sertifikasını kullanarak güncelleştirin.

    Örnekteki sertifika metninin söz dizimi, Visual Studio tarafından fazladan boşluk veya ayrıştırma yapılmadan aşağıdaki desene uygun olmalıdır.

    static const char* const CERTIFICATE = "-----BEGIN CERTIFICATE-----\n"
    "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n"
        ...
    "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n"
    "-----END CERTIFICATE-----";        
    

    Bu dize değerini el ile güncelleştirmek hataya eğilimli olabilir. Doğru söz dizimini oluşturmak için aşağıdaki komutu kopyalayıp Git Bash isteminize yapıştırabilir ve ENTER tuşuna basabilirsiniz. Bu komut, dize sabit değeri için söz dizimini CERTIFICATE oluşturur ve çıkışa yazar.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' device-cert.pem
    

    Sabit değer için çıkış sertifikası metnini kopyalayıp yapıştırın.

  4. Sabitin dize değerini PRIVATE_KEY cihaz sertifikanızın şifrelenmemiş özel anahtarı olan unencrypted-device-key.pem ile güncelleştirin.

    Özel anahtar metninin söz dizimi, Visual Studio tarafından fazladan boşluk veya ayrıştırma yapılmadan aşağıdaki desene uygun olmalıdır.

    static const char* const PRIVATE_KEY = "-----BEGIN RSA PRIVATE KEY-----\n"
    "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n"
        ...
    "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n"
    "-----END RSA PRIVATE KEY-----";
    

    Bu dize değerini el ile güncelleştirmek hataya eğilimli olabilir. Doğru söz dizimini oluşturmak için aşağıdaki komutu kopyalayıp Git Bash isteminize yapıştırabilir ve ENTER tuşuna basabilirsiniz. Bu komut, dize sabit değeri için söz dizimini PRIVATE_KEY oluşturur ve çıkışa yazar.

    sed -e 's/^/"/;$ !s/$/""\\n"/;$ s/$/"/' unencrypted-device-key.pem
    

    Sabit değer için çıkış özel anahtar metnini kopyalayıp yapıştırın.

  5. Değişikliklerinizi kaydedin.

  6. custom_hsm_-_example projesine sağ tıklayın ve Oluştur'a tıklayın.

    Önemli

    Sonraki bölümde çözümün geri kalanını derlemeden önce custom_hsm_example projesini oluşturmanız gerekir.

Örneği çalıştırma

  1. Çözümü çalıştırmak için Visual Studio menüsünde Hata Ayıkla>Hata ayıklama olmadan başlat'ı seçin. Projeyi yeniden oluşturmanız istenirse, çalıştırmadan önce projeyi yeniden derlemek için Evet'i seçin.

    Aşağıdaki çıkış, simülasyon cihazının my-x509-device başarıyla önyüklenmesi ve sağlama hizmetine bağlanması örneğidir. Cihaz bir IoT hub'ına atanır ve kaydedilir:

    Provisioning API Version: 1.8.0
    
    Registering Device
    
    Provisioning Status: PROV_DEVICE_REG_STATUS_CONNECTED
    Provisioning Status: PROV_DEVICE_REG_STATUS_ASSIGNING
    
    Registration Information received from service: contoso-iot-hub-2.azure-devices.net, deviceId: my-x509-device
    Press enter key to exit:
    

Bu bölümde Windows komut isteminizi kullanacaksınız.

  1. Azure portalında, Cihaz Sağlama Hizmetiniz için Genel Bakış sekmesini seçin.

  2. Kimlik Kapsamı değerini kopyalayın.

    Azure portalındaki kimlik kapsamının ekran görüntüsü.

  3. Windows komut isteminizde X509Sample dizinine geçin. Bu dizin, bilgisayarınızdaki örnekleri kopyaladığınız dizinden .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample dizininde bulunur.

  4. X.509 cihaz sağlama örneğini derlemek ve çalıştırmak için aşağıdaki komutu girin (değeri önceki bölümde kopyaladığınız Kimlik Kapsamı ile değiştirin <IDScope> . Sertifika dosyası varsayılan olarak ./certificate.pfx olarak belirlenmiştir ve .pfx parolasını ister.

    dotnet run -- -s <IDScope>
    

    Sertifikayı ve parolayı parametre olarak geçirmek istiyorsanız aşağıdaki biçimi kullanabilirsiniz.

    Not

    TransportType (-t) ve GlobalDeviceEndpoint 'i (-g) değiştirmek için uygulama çalıştırılırken ek parametreler geçirilebilir.

    dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
    
  5. Cihaz DPS'ye bağlanır ve bir IoT hub'ına atanır. Ardından cihaz IoT hub'ına bir telemetri iletisi gönderir.

    Loading the certificate...
    Enter the PFX password for certificate.pfx:
    ****
    Found certificate: A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device; PrivateKey: True
    Using certificate A33DB11B8883DEE5B1690ACFEAAB69E8E928080B CN=my-x509-device
    Initializing the device provisioning client...
    Initialized for registration Id my-x509-device.
    Registering with the device provisioning service...
    Registration status: Assigned.
    Device my-x509-device registered to MyExampleHub.azure-devices.net.
    Creating X509 authentication for IoT Hub...
    Testing the provisioned device with IoT Hub...
    Sending a telemetry message...
    Finished.
    

Bu bölümde Windows komut isteminizi kullanacaksınız.

  1. Azure portalında, Cihaz Sağlama Hizmetiniz için Genel Bakış sekmesini seçin.

  2. Kimlik Kapsamı değerini kopyalayın.

    Azure portalındaki kimlik kapsamının ekran görüntüsü.

  3. Windows komut isteminizde örnek dizine gidin ve örneğin ihtiyaç duyduğu paketleri yükleyin. Gösterilen yol, SDK'yı kopyaladığınız konuma göredir.

    cd .\azure-iot-sdk-node\provisioning\device\samples
    npm install
    

    Örnek, DPS kullanarak bir IoT cihazının kimliğini doğrulamak ve sağlamak için beş ortam değişkeni kullanır. Bu ortam değişkenleri şunlardır:

    Değişken adı Açıklama
    PROVISIONING_HOST DPS örneğine bağlanmak için kullanılacak uç nokta. Bu hızlı başlangıç için genel uç nokta global.azure-devices-provisioning.netolan kullanın.
    PROVISIONING_IDSCOPE DPS örneğinizin Kimlik Kapsamı.
    PROVISIONING_REGISTRATION_ID Cihazınızın kayıt kimliği. Cihaz sertifikasındaki konu ortak adıyla eşleşmelidir.
    CERTIFICATE_FILE Cihaz sertifika dosyanızın yolu.
    KEY_FILE Cihazınızın özel anahtar dosyasının yolu.
  4. Genel cihaz uç noktası ve kimlik kapsamı için ortam değişkenleri ekleyin. değerini 2. adımda kopyaladığınız değerle değiştirin <id-scope> .

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<id-scope>
    
  5. Cihaz kayıt kimliği için ortam değişkenini ayarlayın. IoT cihazının kayıt kimliği, cihaz sertifikasındaki konu ortak adıyla eşleşmelidir. Otomatik olarak imzalanan bir test sertifikası oluşturmak için bu hızlı başlangıçtaki adımları izlediyseniz, my-x509-device cihazın hem konu adı hem de kayıt kimliğidir.

    set PROVISIONING_REGISTRATION_ID=my-x509-device
    
  6. Cihaz sertifikası ve (şifrelenmemiş) cihaz özel anahtar dosyaları için ortam değişkenlerini ayarlayın.

    set CERTIFICATE_FILE=.\device-cert.pem
    set KEY_FILE=.\unencrypted-device-key.pem
    
  7. Örneği çalıştırın ve cihazın başarıyla sağlandığını doğrulayın.

    node register_x509.js
    

    Aşağıdaki örneğe benzer bir çıktı görmeniz gerekir:

    registration succeeded
    assigned hub=contoso-hub-2.azure-devices.net
    deviceId=my-x509-device
    Client connected
    send status: MessageEnqueued
    

Bu bölümde Windows komut isteminizi kullanacaksınız.

  1. Azure portalında, Cihaz Sağlama Hizmetiniz için Genel Bakış sekmesini seçin.

  2. Kimlik Kapsamı ve Genel cihaz uç noktası değerlerini kopyalayın.

    Azure portalında kimlik kapsamının ve genel cihaz uç noktasının ekran görüntüsü.

  3. Windows komut isteminizde provision_x509.py örneğinin dizinine gidin. Gösterilen yol, SDK'yı kopyaladığınız konuma göredir.

    cd ./azure-iot-sdk-python/samples/async-hub-scenarios
    

    Bu örnek, DPS kullanarak bir IoT cihazının kimliğini doğrulamak ve sağlamak için altı ortam değişkeni kullanır. Bu ortam değişkenleri şunlardır:

    Değişken adı Açıklama
    PROVISIONING_HOST DPS örneğine bağlanmak için kullanılan genel uç nokta.
    PROVISIONING_IDSCOPE DPS örneğinizin Kimlik Kapsamı.
    DPS_X509_REGISTRATION_ID Cihazınızın kayıt kimliği. Cihaz sertifikasındaki konu adıyla da eşleşmesi gerekir.
    X509_CERT_FILE Cihaz sertifika dosyanızın yolu.
    X509_KEY_FILE Cihaz sertifikanızın özel anahtar dosyasının yolu.
    PASS_PHRASE Sertifikayı ve özel anahtar dosyasını (1234 ) şifrelemek için kullandığınız geçiş tümceciği.
  4. Genel cihaz uç noktası ve Kimlik Kapsamı için ortam değişkenlerini ekleyin.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
    
  5. Kayıt kimliği için ortam değişkenini ayarlayın. IoT cihazının kayıt kimliği, cihaz sertifikasındaki konu adıyla eşleşmelidir. Otomatik olarak imzalanan bir test sertifikası oluşturmak için bu hızlı başlangıçtaki adımları izlediyseniz, my-x509-device cihazın hem konu adı hem de kayıt kimliğidir.

    set DPS_X509_REGISTRATION_ID=my-x509-device
    
  6. Sertifika dosyası, özel anahtar dosyası ve geçiş tümceciği için ortam değişkenlerini ayarlayın.

    set X509_CERT_FILE=./device-cert.pem
    set X509_KEY_FILE=./device-key.pem
    set PASS_PHRASE=1234
    
  7. provision_x509.py kodunu gözden geçirin. Python sürüm 3.7 veya üzerini kullanmıyorsanız, değişikliklerinizi değiştirmek asyncio.run(main()) ve kaydetmek için burada belirtilen kod değişikliğini yapın.

  8. Örnek uygulamayı çalıştırın. Örnek, cihazı bir IoT hub'ına sağlayan DPS'ye bağlanır. Cihaz sağlandıktan sonra örnek, IoT hub'ına bazı test iletileri gönderir.

    $ python azure-iot-sdk-python/samples/async-hub-scenarios/provision_x509.py
    RegistrationStage(RequestAndResponseOperation): Op will transition into polling after interval 2.  Setting timer.
    The complete registration result is
    my-x509-device
    TestHub12345.azure-devices.net
    initialAssignment
    null
    Will send telemetry from the provisioned device
    sending message #4
    sending message #7
    sending message #2
    sending message #8
    sending message #5
    sending message #9
    sending message #1
    sending message #6
    sending message #10
    sending message #3
    done sending message #4
    done sending message #7
    done sending message #2
    done sending message #8
    done sending message #5
    done sending message #9
    done sending message #1
    done sending message #6
    done sending message #10
    done sending message #3
    

Bu bölümde hem Windows komut isteminizi hem de Git Bash isteminizi kullanacaksınız.

  1. Azure portalında, Cihaz Sağlama Hizmetiniz için Genel Bakış sekmesini seçin.

  2. Kimlik Kapsamı ve Genel cihaz uç noktası değerlerini kopyalayın.

    Azure portalında kimlik kapsamının ve genel cihaz uç noktasının ekran görüntüsü.

  3. Windows komut isteminizde örnek proje klasörüne gidin. Gösterilen yol, SDK'yı kopyaladığınız konuma göredir

    cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
    
  4. Sağlama hizmetini ve X.509 kimlik bilgilerini örnek koda girin. Bu bilgiler sağlama sırasında, cihaz kaydından önce simülasyon cihazının kanıtlaması için kullanılır.

    1. Dosyayı .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java sık kullandığınız düzenleyicide açın.

    2. Aşağıdaki değerleri daha önce kopyaladığınız Kimlik Kapsamı ve Sağlama Hizmeti Genel Uç Noktası ile güncelleştirin.

      private static final String idScope = "[Your ID scope here]";
      private static final String globalEndpoint = "[Your Provisioning Service Global Endpoint here]";
      private static final ProvisioningDeviceClientTransportProtocol PROVISIONING_DEVICE_CLIENT_TRANSPORT_PROTOCOL = ProvisioningDeviceClientTransportProtocol.HTTPS;
      
      
    3. Sabit dizenin leafPublicPem değerini device-cert.pem sertifikanızın değeriyle güncelleştirin.

      Sertifika metninin söz dizimi, fazladan boşluk veya karakter içermeyen aşağıdaki desene uygun olmalıdır.

      private static final String leafPublicPem = "-----BEGIN CERTIFICATE-----\n" +
      "MIIFOjCCAyKgAwIBAgIJAPzMa6s7mj7+MA0GCSqGSIb3DQEBCwUAMCoxKDAmBgNV\n" +
          ...
      "MDMwWhcNMjAxMTIyMjEzMDMwWjAqMSgwJgYDVQQDDB9BenVyZSBJb1QgSHViIENB\n" +
      "-----END CERTIFICATE-----";        
      

      Bu dize değerini el ile güncelleştirmek hataya eğilimli olabilir. Doğru söz dizimini oluşturmak için aşağıdaki komutu kopyalayıp Git Bash isteminize yapıştırabilir ve ENTER tuşuna basabilirsiniz. Bu komut, dize sabit değeri için söz dizimini leafPublicPem oluşturur ve çıkışa yazar.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' device-cert.pem
      

      Sabit değer için çıkış sertifikası metnini kopyalayıp yapıştırın.

    4. Sabitin dize değerini leafPrivateKey cihaz sertifikanızın şifrelenmemiş özel anahtarı olan unencrypted-device-key.pem ile güncelleştirin.

      Özel anahtar metninin söz dizimi, fazladan boşluk veya karakter içermeyen aşağıdaki desene uygun olmalıdır.

      private static final String leafPrivateKey = "-----BEGIN PRIVATE KEY-----\n" +
      "MIIJJwIBAAKCAgEAtjvKQjIhp0EE1PoADL1rfF/W6v4vlAzOSifKSQsaPeebqg8U\n" +
          ...
      "X7fi9OZ26QpnkS5QjjPTYI/wwn0J9YAwNfKSlNeXTJDfJ+KpjXBcvaLxeBQbQhij\n" +
      "-----END PRIVATE KEY-----";
      

      Bu dize değerini el ile güncelleştirmek hataya eğilimli olabilir. Doğru söz dizimini oluşturmak için aşağıdaki komutu kopyalayıp Git Bash isteminize yapıştırabilir ve ENTER tuşuna basabilirsiniz. Bu komut, dize sabit değeri için söz dizimini leafPrivateKey oluşturur ve çıkışa yazar.

      sed 's/^/"/;$ !s/$/\\n" +/;$ s/$/"/' unencrypted-device-key.pem
      

      Sabit değer için çıkış özel anahtar metnini kopyalayıp yapıştırın.

    5. Değişikliklerinizi kaydedin.

  5. Örneği derleyin ve ardından klasörüne target gidin.

    mvn clean install
    cd target
    
  6. Derleme, klasördeki target .jar dosyasını şu dosya biçiminde verir: provisioning-x509-sample-{version}-with-deps.jar; örneğin: provisioning-x509-sample-1.8.1-with-deps.jar. .jar dosyasını yürütür. Aşağıdaki komutta sürümü değiştirmeniz gerekebilir.

    java -jar ./provisioning-x509-sample-1.8.1-with-deps.jar
    

    Örnek, cihazı bir IoT hub'ına sağlayan DPS'ye bağlanır. Cihaz sağlandıktan sonra örnek, IoT hub'ına bazı test iletileri gönderir.

    Starting...
    Beginning setup.
    WARNING: sun.reflect.Reflection.getCallerClass is not supported. This will impact performance.
    2022-05-11 09:42:05,025 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Initialized a ProvisioningDeviceClient instance using SDK version 2.0.0
    2022-05-11 09:42:05,027 DEBUG (main) [com.microsoft.azure.sdk.iot.provisioning.device.ProvisioningDeviceClient] - Starting provisioning thread...
    Waiting for Provisioning Service to register
    2022-05-11 09:42:05,030 INFO (global.azure-devices-provisioning.net-6255a8ba-CxnPendingConnectionId-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Opening the connection to device provisioning service...
    2022-05-11 09:42:05,252 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Connection to device provisioning service opened successfully, sending initial device registration message
    2022-05-11 09:42:05,286 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-RegisterTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.RegisterTask] - Authenticating with device provisioning service using x509 certificates
    2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Waiting for device provisioning service to provision this device...
    2022-05-11 09:42:06,083 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Current provisioning status: ASSIGNING
    Waiting for Provisioning Service to register
    2022-05-11 09:42:15,685 INFO (global.azure-devices-provisioning.net-6255a8ba-Cxn6255a8ba-azure-iot-sdk-ProvisioningTask) [com.microsoft.azure.sdk.iot.provisioning.device.internal.task.ProvisioningTask] - Device provisioning service assigned the device successfully
    IotHUb Uri : MyExampleHub.azure-devices.net
    Device ID : java-device-01
    2022-05-11 09:42:25,057 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-05-11 09:42:25,080 INFO (main) [com.microsoft.azure.sdk.iot.device.transport.ExponentialBackoffWithJitter] - NOTE: A new instance of ExponentialBackoffWithJitter has been created with the following properties. Retry Count: 2147483647, Min Backoff Interval: 100, Max Backoff Interval: 10000, Max Time Between Retries: 100, Fast Retry Enabled: true
    2022-05-11 09:42:25,087 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Initialized a DeviceClient instance using SDK version 2.0.3
    2022-05-11 09:42:25,129 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - Opening MQTT connection...
    2022-05-11 09:42:25,150 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT CONNECT packet...
    2022-05-11 09:42:25,982 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT CONNECT packet was acknowledged
    2022-05-11 09:42:25,983 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sending MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/#
    2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.Mqtt] - Sent MQTT SUBSCRIBE packet for topic devices/java-device-01/messages/devicebound/# was acknowledged
    2022-05-11 09:42:26,068 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.mqtt.MqttIotHubConnection] - MQTT connection opened successfully
    2022-05-11 09:42:26,070 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - The connection to the IoT Hub has been established
    2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Updating transport status to new status CONNECTED with reason CONNECTION_OK
    2022-05-11 09:42:26,071 DEBUG (main) [com.microsoft.azure.sdk.iot.device.DeviceIO] - Starting worker threads
    2022-05-11 09:42:26,073 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking connection status callbacks with new status details
    2022-05-11 09:42:26,074 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Client connection opened successfully
    2022-05-11 09:42:26,075 INFO (main) [com.microsoft.azure.sdk.iot.device.DeviceClient] - Device client opened successfully
    Sending message from device to IoT Hub...
    2022-05-11 09:42:26,077 DEBUG (main) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Message was queued to be sent later ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    Press any key to exit...
    2022-05-11 09:42:26,079 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Sending message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    2022-05-11 09:42:26,422 DEBUG (MQTT Call: java-device-01) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - IotHub message was acknowledged. Checking if there is record of sending this message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] )
    2022-05-11 09:42:26,425 DEBUG (MyExampleHub.azure-devices.net-java-device-01-ee6c362d-Cxn7a1fb819-e46d-4658-9b03-ca50c88c0440-azure-iot-sdk-IotHubSendTask) [com.microsoft.azure.sdk.iot.device.transport.IotHubTransport] - Invoking the callback function for sent message, IoT Hub responded to message ( Message details: Correlation Id [54d9c6b5-3da9-49fe-9343-caa6864f9a02] Message Id [28069a3d-f6be-4274-a48b-1ee539524eeb] ) with status OK
    Message sent!
    

Cihaz sağlama kaydınızı onaylayın

Cihazınızın hangi IoT hub'ına sağlandığını görmek için daha önce oluşturduğunuz bireysel kaydın kayıt ayrıntılarını inceleyin:

  1. Azure portalında Cihaz Sağlama Hizmetinize gidin.

  2. Ayarlar menüsünde Kayıtları yönet'i seçin.

  3. Bireysel Kayıtlar'ı seçin. Daha önce oluşturduğunuz my-x509-device X.509 kayıt girişi listede görünmelidir.

  4. Kayıt girişini seçin. Cihazınızın atandığı IoT hub'ı ve cihaz kimliği Kayıt durumu altında görünür.

IoT hub'ınızdaki cihazı doğrulamak için:

  1. Azure portalında, cihazınızın atandığı IoT hub'ına gidin.

  2. Cihaz yönetimi menüsünde Cihazlar'ı seçin.

  3. Cihazınız başarıyla sağlandıysa cihaz kimliği (my-x509-device) listede Durum etkin olarak ayarlı olarak görünmelidir. Cihazınızı görmüyorsanız Yenile'yi seçin.

    Cihazın Azure portalında IoT hub'ına kaydedildiğini gösteren ekran görüntüsü.

Önemli

Cihazınız için başlangıç cihaz ikizi durumu ayarının kayıt girişindeki varsayılan değerini değiştirdiyseniz istenen ikili durumu hub'dan çekerek ona göre hareket edebilir. Daha fazla bilgi için bkz. IoT Hub'daki cihaz ikizlerini kavrama ve kullanma

Kaynakları temizleme

Cihaz istemci örneği üzerinde çalışmaya ve keşfetmeye devam etmek istiyorsanız, bu hızlı başlangıçta oluşturulan kaynakları temizlemeyin. Devam etmek istemiyorsanız, bu hızlı başlangıç tarafından oluşturulan tüm kaynakları silmek için aşağıdaki adımları kullanın.

Cihaz kaydınızı silme

  1. Makinenizde cihaz istemci örnek çıktı penceresini kapatın.

  2. Azure portalının sol tarafındaki menüden Tüm kaynaklar'ı seçin.

  3. Cihaz Sağlama Hizmetinizi seçin.

  4. Ayarlar menüsünde Kayıtları yönet'i seçin.

  5. Bireysel kayıtlar sekmesini seçin.

  6. Bu hızlı başlangıçta kaydettiğiniz cihazın kayıt kimliğinin yanındaki onay kutusunu seçin.

  7. Sayfanın üst kısmından Sil’i seçin.

IoT Hub'dan cihaz kaydınızı silme

  1. Azure portalının sol tarafındaki menüden Tüm kaynaklar'ı seçin.

  2. IoT hub'ınızı seçin.

  3. Explorers menüsünde IoT cihazları'nı seçin.

  4. Bu hızlı başlangıçta kaydettiğiniz cihazın cihaz kimliğinin yanındaki onay kutusunu seçin.

  5. Sayfanın üst kısmından Sil’i seçin.

Sonraki adımlar

Bu hızlı başlangıçta, tek bir kayıt kullanarak IoT hub'ınıza tek bir cihaz sağladınız. Ardından, birden çok hub'da birden çok cihaz sağlamayı öğrenin.