التشغيل السريع - توفير جهاز محاكاة لشهادة X.509

في هذا التشغيل السريع، يمكنك إنشاء جهاز محاكاة على جهاز Windows. تم تكوين جهاز المحاكاة لاستخدام شهادة شهادة X.509 للمصادقة. بعد تكوين جهازك، يمكنك توفيره إلى مركز IoT باستخدام خدمة توفير جهاز Azure IoT Hub.

إذا لم تكن على دراية بعملية التوفير، فراجع نظرة عامة على التوفير. التأكد أيضاً من إكمال الخطوات في Set up IoT Hub Device Provisioning Service with the Azure portal قبل المتابعة.

يوضح هذا التشغيل السريع حلاً لمحطة عمل تستند إلى Windows. ومع ذلك، يمكنك أيضاً تنفيذ الإجراءات على Linux. للحصول على مثال Linux، راجع البرنامج التعليمي: توفير زمن الانتقال الجغرافي.

المتطلبات الأساسية

المتطلبات الأساسية التالية هي لبيئة تطوير Windows. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

  • تثبيت Visual Studio 2022 مع تمكين حمل العمل "تطوير سطح المكتب مع C++". يتم أيضا دعم Visual Studio 2015 وVisual Studio 2017 وVisual Studio 19. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

  • تثبيت أحدث نظام بناء CMake. تأكد من التحقق من الخيار الذي يضيف CMake القابل للتنفيذ إلى المسار الخاص بك.

    هام

    تأكد من تثبيت المتطلبات الأساسية لبرنامج Visual Studio (حمل عمل Visual Studio و"تطوير سطح المكتب باستخدام C ++") على جهازك، قبل بدء تثبيت CMake. بمجرد أن يتم وضع المتطلبات الأساسية، ويتم التحقق من التنزيل، قم بتثبيت نظام بنية CMake. انتبه أيضًا إلى أن الإصدارات الأقدم من نظام بنية CMake تفشل في إنشاء ملف الحل المستخدم في هذه المقالة. تأكد من استخدام أحدث إصدار من CMake.

المتطلبات الأساسية التالية هي لبيئة تطوير Windows. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

  • قم بتثبيت .NET SDK 6.0 أو أحدث على جهازك المستند إلى Windows. يمكنك استخدام الأمر التالي للتحقق من الإصدار الخاص بك.

    dotnet --info
    

المتطلبات الأساسية التالية هي لبيئة تطوير Windows. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

المتطلبات الأساسية التالية هي لبيئة تطوير Windows.

المتطلبات الأساسية التالية هي لبيئة تطوير Windows. بالنسبة إلى Linux أو macOS، راجع القسم المناسب في إعداد بيئة التطوير في وثائق SDK.

  • ‏‏تثبيت آخر إصدار من Git. تأكد من إضافة Git إلى متغيرات البيئة التي يمكن الوصول إليها من نافذة الأمر. راجع أدوات عميل Software Freedom Conservancy's Git للحصول على أحدث إصدار من أدوات git للتثبيت، والتي تتضمن Git Bash، وهو تطبيق سطر الأوامر الذي يمكن استخدامه للتفاعل مع مستودع Git المحلي خاصتك.

  • تأكد من تثبيت OpenSSL على جهازك. على Windows، يتضمن تثبيت Git تثبيت OpenSSL. يمكنك الوصول إلى OpenSSL من موجه Git Bash. للتحقق من تثبيت OpenSSL، افتح موجه Git Bash وأدخل openssl version.

    إشعار

    ما لم تكن على دراية ب OpenSSL وقمت بتثبيته بالفعل على جهاز Windows، نوصي باستخدام OpenSSL من موجه Git Bash. بدلا من ذلك، يمكنك اختيار تنزيل التعليمات البرمجية المصدر وإنشاء OpenSSL. لمعرفة المزيد، راجع صفحة تنزيلات OpenSSL. أو يمكنك تنزيل OpenSSL الذي تم إنشاؤه مسبقا من جهة خارجية. لمعرفة المزيد، راجع OpenSSL wiki. لا تقدم Microsoft أي ضمانات حول صلاحية الحزم التي تم تنزيلها من جهات خارجية. إذا اخترت إنشاء OpenSSL أو تنزيله، فتأكد من إمكانية الوصول إلى ثنائي OpenSSL في المسار الخاص بك ومن OPENSSL_CNF تعيين متغير البيئة إلى مسار ملف openssl.cnf .

  • افتح كلا من موجه أوامر Windows ومطالبة Git Bash.

    تفترض الخطوات الواردة في هذا التشغيل السريع أنك تستخدم جهاز Windows وتثبيت OpenSSL المثبت كجزء من Git. يمكنك استخدام موجه Git Bash لإصدار أوامر OpenSSL وموجه أوامر Windows لكل شيء آخر. إذا كنت تستخدم Linux، يمكنك إصدار جميع الأوامر من Bash shell.

جهز بيئة التطوير الخاصة بك

في هذا القسم، تقوم بإعداد بيئة تطوير تستخدم لإنشاء Azure IoT C SDK. يحاول نموذج التعليمات البرمجية توفير الجهاز أثناء تسلسل التمهيد للجهاز.

  1. افتح مستعرض ويب، ثم انتقل إلى صفحة الإصدار من SDK Azure IoT C.

  2. حدد علامة التبويب علامات في الجزء العلوي من الصفحة.

  3. انسخ اسم العلامة لأحدث إصدار من Azure IoT C SDK.

  4. في موجه أوامر Windows، قم بتشغيل الأوامر التالية لاستنساخ أحدث إصدار من Azure IoT Device SDK لمستودع C GitHub. استبدل <release-tag> بالعلامة التي نسختها في الخطوة السابقة، على سبيل المثال: 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
    

    توقع أن تستغرق هذه العملية عدة دقائق لإكمالها.

  5. عند اكتمال العملية، قم بتشغيل الأوامر التالية من دليل azure-iot-sdk-c:

    mkdir cmake
    cd cmake
    
  6. يستخدم نموذج التعليمات البرمجية شهادة X.509 لتوفير المصادقة عبر مصادقة X.509. قم بتشغيل الأمر التالي لإنشاء إصدار من SDK خاص بمنصة التطوير الخاصة بك، والتي تتضمن عميل توفير الجهاز. يتم إنشاء حل Visual Studio للجهاز المحاكي في cmake الدليل.

    عند تحديد المسار المستخدم مع -Dhsm_custom_lib في الأمر التالي، تأكد من استخدام المسار المطلق إلى المكتبة في الدليل الذي cmake قمت بإنشائه مسبقا. يفترض المسار المعروض أنك قمت باستنساخ C SDK في الدليل الجذر لمحرك الأقراص C. إذا كنت تستخدم دليلا آخر، فاضبط المسار وفقا لذلك.

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

تلميح

إذا cmake لم يعثر على المحول البرمجي C++، فقد تحصل على أخطاء في الإنشاء أثناء تشغيل الأمر أعلاه. إذا حدث ذلك، فحاول تشغيل الأمر في موجه الأوامر Visual Studio.

  1. عند نجاح البناء، تبدو أسطر الإخراج القليلة الأخيرة مشابهة للإخراج التالي:

    -- 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، استنسخ مستودع Azure IoT SDK ل C#‎ GitHub باستخدام الأمر التالي:

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

في موجه أوامر Windows، استنسخ Azure IoT SDK لمستودع GitHub Node.js باستخدام الأمر التالي:

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

في موجه أوامر Windows، استنسخ Azure IoT Device SDK لمستودع Python GitHub باستخدام الأمر التالي:

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

إشعار

العينات المستخدمة في هذا البرنامج التعليمي موجودة في فرع v2 من مستودع azure-iot-sdk-python. يتوفر الإصدار 3 من Python SDK للاستخدام في الإصدار التجريبي.

  1. في موجه أوامر Windows، استنسخ مستودع Azure IoT Samples ل Java GitHub باستخدام الأمر التالي:

    git clone https://github.com/Azure/azure-iot-sdk-java.git --recursive
    
  2. بادر بالانتقال إلى الدليل azure-iot-sdk-javaالجذر وبناء المشروع لتنزيل جميع الحزم المطلوبة.

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

إنشاء شهادة جهاز X.509 موقعة ذاتياً

في هذا القسم، يمكنك استخدام OpenSSL لإنشاء شهادة X.509 موقعة ذاتيا ومفتاح خاص. يتم تحميل هذه الشهادة إلى مثيل خدمة التزويد الخاص بك والتحقق منها بواسطة الخدمة.

تنبيه

استخدم الشهادات التي تم إنشاؤها باستخدام OpenSSL في هذا التشغيل السريع لاختبار التطوير فقط. لا تستخدم هذه الشهادات في الإنتاج. تنتهي صلاحية هذه الشهادات بعد 30 يوما وقد تحتوي على كلمات مرور ذات تعليمات برمجية مضمنة، مثل 1234. للتعرف على الحصول على الشهادات المناسبة للاستخدام في الإنتاج، راجع كيفية الحصول على شهادة المرجع المصدق X.509 في وثائق Azure IoT Hub.

نفذ الخطوات الواردة في هذا القسم في موجه Git Bash.

  1. في موجه Git Bash، انتقل إلى دليل حيث تريد إنشاء شهاداتك.

  2. شغّل الأمر التالي:

    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"
    

    هام

    لا تكون الشرطة الإضافية المائلة للأمام المكتوبة مع اسم الموضوع (//CN=my-x509-device) ضرورية سوى لتخطي السلسة التي تحتوي على Git في منصات نظام Windows.

  3. عند مطالبتك بإدخال عبارة المرور PEM:، استخدم عبارة المرور1234.

  4. عند مطالبتك بالتحقق - إدخال عبارة المرور PEM:، استخدم عبارة المرور1234 مرةً أخرى.

    يجب الآن إنشاء ملف شهادة مفتاح عام (device-cert.pem) وملف المفتاح الخاص (device-key.pem) في الدليل حيث قمت بتشغيل openssl الأمر.

    تم تعيين اسم الموضوع الشائع لملف الشهادة (CN) إلى my-x509-device. بالنسبة للتسجيلات المستندة إلى X.509، يتم تعيين معرف التسجيل إلى الاسم الشائع. معرف التسجيل هو سلسلة غير حساسة لحالة الأحرف الأبجدية الرقمية بالإضافة إلى الأحرف الخاصة: '-'، '.'، ، '_'. ':' يجب أن يكون الحرف الأخير أبجديا رقميا أو شرطة ('-'). يجب أن يلتزم الاسم الشائع بهذا التنسيق. يدعم DPS معرفات التسجيل التي يصل طولها إلى 128 حرفا؛ ومع ذلك، فإن الحد الأقصى لطول الاسم الشائع للموضوع في شهادة X.509 هو 64 حرفا. لذلك، يقتصر معرف التسجيل على 64 حرفا عند استخدام شهادات X.509.

  5. ملف الشهادة مرمز ب Base 64. لعرض الاسم الشائع للموضوع (CN) والخصائص الأخرى لملف الشهادة، أدخل الأمر التالي:

    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. يتطلب نموذج التعليمات البرمجية مفتاحا خاصا غير مشفر. قم بتشغيل الأمر التالي لإنشاء مفتاح خاص غير مشفر:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. عند مطالبتك بإدخال عبارة المرور ل device-key.pem:، استخدم نفس عبارة المرور التي قمت بها سابقا، 1234.

اترك موجه Git Bash مفتوحا. تحتاج إليها لاحقا في هذا التشغيل السريع.

تم إعداد نموذج التعليمات البرمجية C# لاستخدام شهادات X.509 المخزنة في ملف PKCS#12 محمي بكلمة مرور (certificate.pfx). لا تزال بحاجة إلى ملف شهادة المفتاح العام بتنسيق PEM (device-cert.pem) الذي قمت بإنشائه للتو لإنشاء إدخال تسجيل فردي لاحقا في هذا التشغيل السريع.

  1. لإنشاء الملف المنسق PKCS12 المتوقع من قبل العينة، أدخل الأمر التالي:

    winpty openssl pkcs12 -inkey device-key.pem -in device-cert.pem -export -out certificate.pfx
    
  2. عند مطالبتك بإدخال عبارة المرور ل device-key.pem:، استخدم نفس عبارة المرور التي قمت بها سابقا، 1234.

  3. عند مطالبتك بإدخال تصدير كلمة المرور: استخدم كلمة المرور 1234.

  4. عند سؤالك التحقق - أدخل تصدير كلمة المرور:، استخدم كلمة المرور 1234 مرة أخرى.

    يجب الآن إنشاء ملف شهادة بتنسيق PKCS12 (certificate.pfx) في الدليل حيث قمت بتشغيل openssl الأمر.

  5. انسخ ملف الشهادة المنسق PKCS12 إلى دليل المشروع لعينة توفير جهاز X.509. المسار المحدد مرتبط بالموقع الذي قمت بتنزيل نموذج المستودع فيه.

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

لا تحتاج إلى مطالبة Git Bash لبقية هذا التشغيل السريع. ومع ذلك، قد ترغب في إبقائها مفتوحة للتحقق من شهادتك إذا واجهت مشاكل في الخطوات اللاحقة.

  1. يتطلب نموذج التعليمات البرمجية مفتاحا خاصا غير مشفر. قم بتشغيل الأمر التالي لإنشاء مفتاح خاص غير مشفر:

    winpty openssl rsa -in device-key.pem -out unencrypted-device-key.pem
    
  2. عند مطالبتك بإدخال عبارة المرور ل device-key.pem:، استخدم نفس عبارة المرور التي قمت بها سابقا، 1234.

  3. انسخ شهادة الجهاز والمفتاح الخاص غير المشفرة إلى دليل المشروع لعينة توفير جهاز X.509. المسار المحدد مرتبط بالموقع الذي قمت بتنزيل SDK فيه.

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

لا تحتاج إلى مطالبة Git Bash لبقية هذا التشغيل السريع. ومع ذلك، قد ترغب في إبقائها مفتوحة للتحقق من شهادتك إذا واجهت مشاكل في الخطوات اللاحقة.

  1. انسخ شهادة الجهاز والمفتاح الخاص إلى دليل المشروع لعينة توفير جهاز X.509. المسار المحدد مرتبط بالموقع الذي قمت بتنزيل SDK فيه.

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

لا تحتاج إلى مطالبة Git Bash لبقية هذا التشغيل السريع. ومع ذلك، قد ترغب في إبقائها مفتوحة للتحقق من شهادتك إذا واجهت مشاكل في الخطوات اللاحقة.

  1. يتطلب نموذج التعليمات البرمجية ل Java مفتاحا خاصا غير مشفر. قم بتشغيل الأمر التالي لإنشاء مفتاح خاص غير مشفر:

    winpty openssl pkey -in device-key.pem -out unencrypted-device-key.pem
    
  2. عند مطالبتك بإدخال عبارة المرور ل device-key.pem:، استخدم نفس عبارة المرور التي قمت بها سابقا، 1234.

اترك موجه Git Bash مفتوحا. تحتاج إليها لاحقا في هذا التشغيل السريع.

إنشاء تسجيل جهاز

تدعم خدمة توفير أجهزة Azure IoT نوعين من التسجيلات:

توضح هذه المقالة طريقة تسجيل فردي لجهاز واحد ليتم إمداده بمركز IoT.

  1. سجل الدخول إلى مدخل Microsoft Azure وانتقل إلى مثيل خدمة تزويد الأجهزة.

  2. حدد إدارة التسجيلات من قسم الإعدادات من قائمة التنقل.

  3. حدد علامة التبويب التسجيلات الفردية، ثم حدد إضافة تسجيل فردي.

    لقطة شاشة تعرض خيار إضافة تسجيل فردي.

  4. في صفحة Registration + provisioning لصفحة Add enrollment ، قم بتوفير المعلومات التالية لتكوين تفاصيل التسجيل:

    الحقل ‏‏الوصف
    شهاده حدد X.509 client certificates كآلية التصديق.
    إعدادات شهادة X.509 تحميل شهادة واحدة أو شهادتين سيتم استخدامها للتحقق من الجهاز لهذا التسجيل.
    حالة التوفير حدد المربع تمكين هذا التسجيل إذا كنت تريد أن يكون هذا التسجيل متوفرا لتوفير جهازه. قم بإلغاء تحديد هذا المربع إذا كنت تريد تعطيل التسجيل. يمكنك تغيير هذا الإعداد لاحقا.
    نهج إعادة التزويد اختر نهج إعادة توفير يعكس الطريقة التي تريد أن تتعامل بها DPS مع الأجهزة التي تطلب إعادة التزويد. لمزيد من المعلومات، راجع نهج إعادة التوفير.
  5. حدد Next: IoT hubs.

  6. في علامة التبويب IoT hubs في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد مراكز IoT التي يمكن للتسجيل توفير الأجهزة إليها:

    الحقل ‏‏الوصف
    مراكز IoT المستهدفة حدد واحدا أو أكثر من مراكز IoT المرتبطة، أو أضف ارتباطا جديدا إلى مركز IoT. لمعرفة المزيد حول ربط مراكز IoT بمثيل DPS، راجع كيفية ربط مراكز IoT وإدارتها.
    نهج التخصيص إذا حددت أكثر من مركز IoT مرتبط واحد، فحدد الطريقة التي تريد بها تعيين الأجهزة إلى المراكز المختلفة. لمعرفة المزيد حول نهج التخصيص، راجع كيفية استخدام نهج التخصيص.

    إذا حددت مركز IoT مرتبطا واحدا فقط، نوصي باستخدام نهج التوزيع المرجح بالتساوي.
  7. حدد Next: Device settings

  8. في علامة التبويب Device settings في صفحة Add enrollment ، قم بتوفير المعلومات التالية لتحديد كيفية تكوين الأجهزة التي تم توفيرها حديثا:

    الحقل ‏‏الوصف
    معرف الجهاز قم بتوفير معرف الجهاز الذي سيتم تعيينه إلى الجهاز المقدم في IoT Hub. إذا لم توفر معرف جهاز، فسيتم استخدام معرف التسجيل.
    IoT Edge تحقق من تمكين IoT Edge على الأجهزة المتوفرة إذا كان الجهاز المقدم سيشغل Azure IoT Edge. قم بإلغاء تحديد هذا المربع إذا كان هذا التسجيل لجهاز غير ممكن ل IoT Edge.
    علامات الجهاز استخدم مربع النص هذا لتوفير أي علامات تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.
    الخصائص المطلوبة استخدم مربع النص هذا لتوفير أي خصائص مطلوبة تريد تطبيقها على توأم الجهاز للجهاز الذي تم توفيره.

    لمزيد من المعلومات، راجع فهم واستخدام الجهاز المزدوج في IoT Hub.

  9. حدّد Next: Review + create.

  10. في علامة التبويب Review + create ، تحقق من جميع القيم الخاصة بك ثم حدد Create.

إعداد وتشغيل التعليمات البرمجية لتوفير الجهاز

في هذا القسم، يمكنك تحديث نموذج التعليمات البرمجية لإرسال تسلسل تمهيد الجهاز إلى مثيل خدمة توفير الجهاز. يؤدي تسلسل التمهيد هذا إلى التعرف على الجهاز وتعيينه إلى مركز IoT المرتبط بمثيل DPS.

في هذا القسم، يمكنك استخدام موجه Git Bash وVisual Studio IDE.

تكوين التعليمات البرمجية لإعدادات تشغيل الجهاز

في هذا المقطع، يمكنك تحديث نموذج التعليمات البرمجية مع معلومات مثيل خدمة تكوين إعدادات تشغيل الجهاز.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    لقطة شاشة لنطاق المعرف على مدخل Microsoft Azure.

  3. شغّل Visual Studio وافتح ملف الحل الجديد الذي تمَّ إنشاؤه في cmakeالدليل الذي أنشأته في جذر مخزن azure-lot-sdk-c git. ملف الحل اسمه azure_iot_sdks.sln.

  4. في مستكشف الحلول ل Visual Studio، انتقل إلى Provision_Samples > prov_dev_client_sample > Source Files وافتح prov_dev_client_sample.c.

  5. ابحث عن الثابت id_scope ، واستبدل القيمة بقيمة نطاق المعرف التي نسختها في الخطوة 2.

    static const char* id_scope = "0ne00000A0A";
    
  6. ابحث عن تعريف الدالة main() في نفس الملف. تأكد من hsm_type تعيين المتغير إلى SECURE_DEVICE_TYPE_X509.

    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. احفظ تغييراتك.

  8. انقر بزر الماوس الأيمن فوق مشروع prov_dev_client_sample وحدد تعيين كمشروع بدء التشغيل.

تكوين التعليمات البرمجية المتبقية لوحدة أمان الأجهزة المخصصة

تختلف تفاصيل التفاعل مع التخزين الفعلي المستند إلى الأجهزة الآمنة وفقًا للأجهزة. ونتيجة لذلك، يتم ترميز الشهادة والمفتاح الخاص المستخدم من قبل الجهاز المحاكي في هذا التشغيل السريع في التعليمات البرمجية كعب الروتين المخصص لوحدة أمان الأجهزة (HSM).

لتحديث رمز كعب HSM المخصص لمحاكاة هوية الجهاز بالمعرف my-x509-device:

  1. في مستكشف الحلول ل Visual Studio، انتقل إلى Provision_Samples > custom_hsm_example > Source Files وافتح custom_hsm_example.c.

  2. قم بتحديث قيمة COMMON_NAME سلسلة ثابت السلسلة باستخدام الاسم الشائع الذي استخدمته عند إنشاء شهادة الجهاز، my-x509-device.

    static const char* const COMMON_NAME = "my-x509-device";
    
  3. قم بتحديث قيمة السلسلة للسلسلة CERTIFICATE الثابتة باستخدام شهادة الجهاز، device-cert.pem، التي قمت بإنشاءها مسبقا.

    يجب أن يتبع بناء جملة نص الشهادة في النموذج النمط التالي دون مسافات إضافية أو تحليل تم بواسطة Visual Studio.

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

    يمكن أن يكون تحديث قيمة السلسلة هذه يدويا عرضة للخطأ. لإنشاء بناء الجملة المناسب، يمكنك نسخ الأمر التالي ولصقه في موجه Git Bash، واضغط على ENTER. ينشئ هذا الأمر بناء الجملة للقيمة CERTIFICATE الثابتة للسلسلة ويكتبها في الإخراج.

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

    انسخ والصق نص شهادة الإخراج للقيمة الثابتة.

  4. قم بتحديث قيمة PRIVATE_KEY سلسلة الثابت باستخدام المفتاح الخاص غير المشفرة لشهادة جهازك، unencrypted-device-key.pem.

    يجب أن يتبع بناء جملة نص المفتاح الخاص النمط التالي بدون مسافات إضافية أو تحليل تم بواسطة Visual Studio.

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

    يمكن أن يكون تحديث قيمة السلسلة هذه يدويا عرضة للخطأ. لإنشاء بناء الجملة المناسب، يمكنك نسخ الأمر التالي ولصقه في موجه Git Bash، واضغط على ENTER. ينشئ هذا الأمر بناء الجملة للقيمة PRIVATE_KEY الثابتة للسلسلة ويكتبها في الإخراج.

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

    انسخ والصق نص المفتاح الخاص للإخراج للقيمة الثابتة.

  5. احفظ تغييراتك.

  6. انقر بزر الماوس الأيمن فوق مشروع custom_hsm_-_example وحدد إنشاء.

    هام

    يجب إنشاء مشروع custom_hsm_example قبل إنشاء بقية الحل في القسم التالي.

تشغيل تطبيق العرض التوضيحي

  1. في القائمة Visual Studio حدد Debug> البدء من دون تصحيح الأخطاء لتشغيل الحل. إذا تمت مطالبتك بإعادة إنشاء المشروع، فحدد نعم لإعادة إنشاء المشروع قبل التشغيل.

    الإخراج التالي هو مثال على جهاز my-x509-device المحاكاة الذي تم تمهيده بنجاح، والاتصال بخدمة التزويد. تم تعيين الجهاز إلى مركز IoT وتسجيله:

    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:
    

في هذا القسم، يمكنك استخدام موجه أوامر Windows.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    لقطة شاشة لنطاق المعرف على مدخل Microsoft Azure.

  3. في موجه أوامر Windows، قم بالتغيير إلى دليل X509Sample. يقع هذا الدليل في دليل .\azure-iot-sdk-csharp\provisioning\device\samples\getting started\X509Sample من الدليل حيث نسخت العينات على الكمبيوتر.

  4. أدخل الأمر التالي لإنشاء نموذج توفير جهاز X.509 وتشغيله (استبدل <IDScope> القيمة مع نطاق المعرف الذي نسخته في القسم السابق. ملف الشهادة افتراضيا إلى ./certificate.pfx ويطالب بكلمة مرور .pfx.

    dotnet run -- -s <IDScope>
    

    إذا كنت تريد تمرير الشهادة وكلمة المرور كمعلمة، يمكنك استخدام التنسيق التالي.

    إشعار

    يمكن تمرير معلمات إضافية أثناء تشغيل التطبيق لتغيير TransportType (-t) و GlobalDeviceEndpoint (-g).

    dotnet run -- -s 0ne00000A0A -c certificate.pfx -p 1234
    
  5. يتصل الجهاز ب DPS ويتم تعيينه إلى مركز IoT. ثم يرسل الجهاز رسالة بيانات تتبع الاستخدام إلى مركز IoT.

    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.
    

في هذا القسم، يمكنك استخدام موجه أوامر Windows.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. انسخ قيمة ID Scope.

    لقطة شاشة لنطاق المعرف على مدخل Microsoft Azure.

  3. في موجه أوامر Windows، انتقل إلى نموذج الدليل، وقم بتثبيت الحزم التي يحتاجها النموذج. المسار المعروض نسبة إلى الموقع الذي نسخت فيه SDK.

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

    يستخدم النموذج خمسة متغيرات بيئة لمصادقة وتوفير جهاز IoT باستخدام DPS. متغيرات البيئة هذه هي:

    اسم المتغير ‏‏الوصف
    PROVISIONING_HOST نقطة النهاية التي يجب استخدامها للاتصال بمثيل DPS. لهذا التشغيل السريع، استخدم نقطة النهاية العمومية، global.azure-devices-provisioning.net.
    PROVISIONING_IDSCOPE نطاق المعرف لمثيل DPS الخاص بك.
    PROVISIONING_REGISTRATION_ID معرف التسجيل لجهازك. يجب أن يتطابق مع الاسم الشائع للموضوع في شهادة الجهاز.
    CERTIFICATE_FILE المسار إلى ملف شهادة جهازك.
    KEY_FILE المسار إلى ملف المفتاح الخاص بجهازك.
  4. إضافة متغيرات البيئة لنقطة نهاية الجهاز العمومي ونطاق المعرف. استبدل <id-scope> بالقيمة التي نسختها في الخطوة 2.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<id-scope>
    
  5. تعيين متغير البيئة لمعرف تسجيل الجهاز. يجب أن يتطابق معرف التسجيل لجهاز IoT مع الاسم الشائع للموضوع على شهادة الجهاز الخاصة به. إذا اتبعت الخطوات الواردة في هذا التشغيل السريع لإنشاء شهادة اختبار موقعة ذاتيا، my-x509-device فهو اسم الموضوع ومعرف التسجيل للجهاز.

    set PROVISIONING_REGISTRATION_ID=my-x509-device
    
  6. تعيين متغيرات البيئة لشهادة الجهاز وملفات المفاتيح الخاصة بالجهاز (غير المشفرة).

    set CERTIFICATE_FILE=.\device-cert.pem
    set KEY_FILE=.\unencrypted-device-key.pem
    
  7. قم بتشغيل العينة وتحقق من توفير الجهاز بنجاح.

    node register_x509.js
    

    يجب أن ترى مخرجات مماثلة للمثال التالي:

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

في هذا القسم، يمكنك استخدام موجه أوامر Windows.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. نسخ قيم نطاق المعرف و نقطة نهاية الجهاز العمومي.

    لقطة شاشة لنطاق المعرف ونقطة نهاية الجهاز العمومية على مدخل Microsoft Azure.

  3. في موجه أوامر Windows، انتقل إلى دليل نموذج provision_x509.py . المسار المعروض نسبة إلى الموقع الذي نسخت فيه SDK.

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

    يستخدم هذا النموذج سنة متغيرات بيئة لمصادقة وتوفير جهاز IoT باستخدام DPS. متغيرات البيئة هذه هي:

    اسم المتغير ‏‏الوصف
    PROVISIONING_HOST نقطة النهاية العمومية المستخدمة للاتصال بمثيل DPS.
    PROVISIONING_IDSCOPE نطاق المعرف لمثيل DPS الخاص بك.
    DPS_X509_REGISTRATION_ID معرف التسجيل لجهازك. يجب أن يتطابق أيضا مع اسم الموضوع على شهادة الجهاز.
    X509_CERT_FILE المسار إلى ملف شهادة جهازك.
    X509_KEY_FILE المسار إلى ملف المفتاح الخاص بشهادة جهازك.
    PASS_PHRASE عبارة المرور التي استخدمتها لتشفير الشهادة وملف المفتاح الخاص (1234).
  4. أضف متغيرات البيئة لنقطة نهاية الجهاز العمومية ونطاق المعرف.

    set PROVISIONING_HOST=global.azure-devices-provisioning.net
    set PROVISIONING_IDSCOPE=<ID scope for your DPS resource>
    
  5. تعيين متغير البيئة لمعرف التسجيل. يجب أن يتطابق معرف التسجيل لجهاز IoT مع اسم الموضوع في شهادة الجهاز الخاصة به. إذا اتبعت الخطوات الواردة في هذا التشغيل السريع لإنشاء شهادة اختبار موقعة ذاتيا، my-x509-device فهو اسم الموضوع ومعرف التسجيل للجهاز.

    set DPS_X509_REGISTRATION_ID=my-x509-device
    
  6. تعيين متغيرات البيئة لملف الشهادة وملف المفتاح الخاص وعبارة المرور.

    set X509_CERT_FILE=./device-cert.pem
    set X509_KEY_FILE=./device-key.pem
    set PASS_PHRASE=1234
    
  7. راجع التعليمات البرمجية لـ provision_x509.py. إذا كنت لا تستخدم الإصدار 3.7 من Python أو أحدث، فقم بإجراء تغيير التعليمات البرمجية المذكور هنا لاستبدال asyncio.run(main()) التغييرات وحفظها.

  8. قم بتشغيل العينة. تتصل العينة ب DPS، والتي توفر الجهاز إلى مركز IoT. بعد توفير الجهاز، يرسل النموذج بعض رسائل الاختبار إلى مركز IoT.

    $ 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
    

في هذا القسم، يمكنك استخدام كل من موجه أوامر Windows ومطالبة Git Bash.

  1. في مدخل Azure، حدد علامة تبويب Overview لخدمة تكوين إعدادات تشغيل الجهاز لديك.

  2. نسخ قيم نطاق المعرف و نقطة نهاية الجهاز العمومي.

    لقطة شاشة لنطاق المعرف ونقطة نهاية الجهاز العمومية على مدخل Microsoft Azure.

  3. في موجه أوامر Windows، انتقل إلى مجلد نموذج المشروع. المسار المعروض مرتبط بالموقع الذي نسخت فيه SDK

    cd .\azure-iot-sdk-java\provisioning\provisioning-device-client-samples\provisioning-X509-sample
    
  4. أدخل خدمة التزويد ومعلومات هوية X.509 في نموذج التعليمات البرمجية. يتم استخدام هذه المعلومات أثناء التزويد، لإثبات جهاز المحاكاة، قبل تسجيل الجهاز.

    1. افتح الملف .\src\main\java\samples\com\microsoft\azure\sdk\iot\ProvisioningX509Sample.java في المحرر المفضل لديك.

    2. قم بتحديث القيم التالية باستخدام نطاق المعرف ونقطة النهاية العمومية لخدمة التزويد التي نسختها مسبقا.

      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. تحديث قيمة leafPublicPem السلسلة الثابتة بقيمة الشهادة الخاصة بك، device-cert.pem.

      يجب أن يتبع بناء جملة نص الشهادة النمط التالي بدون مسافات أو أحرف إضافية.

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

      يمكن أن يكون تحديث قيمة السلسلة هذه يدويا عرضة للخطأ. لإنشاء بناء الجملة المناسب، يمكنك نسخ الأمر التالي ولصقه في موجه Git Bash، واضغط على ENTER. ينشئ هذا الأمر بناء الجملة للقيمة leafPublicPem الثابتة للسلسلة ويكتبها في الإخراج.

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

      انسخ والصق نص شهادة الإخراج للقيمة الثابتة.

    4. قم بتحديث قيمة leafPrivateKey سلسلة الثابت باستخدام المفتاح الخاص غير المشفرة لشهادة جهازك، unencrypted-device-key.pem.

      يجب أن يتبع بناء جملة نص المفتاح الخاص النمط التالي بدون مسافات أو أحرف إضافية.

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

      يمكن أن يكون تحديث قيمة السلسلة هذه يدويا عرضة للخطأ. لإنشاء بناء الجملة المناسب، يمكنك نسخ الأمر التالي ولصقه في موجه Git Bash، واضغط على ENTER. ينشئ هذا الأمر بناء الجملة للقيمة leafPrivateKey الثابتة للسلسلة ويكتبها في الإخراج.

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

      انسخ والصق نص المفتاح الخاص للإخراج للقيمة الثابتة.

    5. احفظ تغييراتك.

  5. أنشئ النموذج، ثم انتقل إلى target المجلد.

    mvn clean install
    cd target
    
  6. مخرجات البنية .jar الملف في target المجلد بتنسيق الملف التالي: provisioning-x509-sample-{version}-with-deps.jar؛ على سبيل المثال: provisioning-x509-sample-1.8.1-with-deps.jar. تنفيذ ملف .jar. قد تحتاج إلى استبدال الإصدار في الأمر التالي.

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

    تتصل العينة ب DPS، والتي توفر الجهاز إلى مركز IoT. بعد توفير الجهاز، يرسل النموذج بعض رسائل الاختبار إلى مركز IoT.

    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!
    

تأكد من تسجيل توفير جهازك

لمعرفة مركز IoT الذي تم توفير جهازك له، افحص تفاصيل التسجيل الفردي الذي أنشأته سابقا:

  1. في مدخل Microsoft Azure، انتقل إلى Device Provisioning Service.

  2. في قائمة الإعدادات، حدد ⁧⁩"إدارة التسجيلات"⁧⁩.

  3. حدد التسجيلات الفردية. يجب أن يظهر إدخال التسجيل X.509 الذي قمت بإنشائه مسبقا، my-x509-device، في القائمة.

  4. حدد إدخال التسجيل. يظهر مركز IoT الذي تم تعيين جهازك له ومعرف الجهاز الخاص به ضمن حالة التسجيل.

للتحقق من الجهاز في مركز IoT الخاص بك:

  1. في مدخل Microsoft Azure، انتقل إلى مركز IoT الذي تم تعيين جهازك إليه.

  2. في قائمة إدارة الأجهزة، حدد الأجهزة.

  3. إذا تم توفير جهازك بنجاح، يجب أن يظهر معرف الجهاز الخاص به، my-x509-device، في القائمة، مع تعيين الحالة على أنه ممكن. إذا لم تتمكن من رؤية جهازك، فحدد تحديث.

    لقطة شاشة تظهر أن الجهاز مسجل في مركز IoT في مدخل Microsoft Azure.

هام

إذا غيّرت حالة الجهاز التوأم الأولية من القيمة الافتراضية في إدخال التسجيل لجهازك، يمكنها سحب الحالة التوأم المطلوبة من المركز والتصرف وفقًا لذلك. لمزيد من المعلومات، راجع فهم واستخدام توائم الجهاز في IoT Hub

تنظيف الموارد

إذا كنت تخطط لمتابعة العمل على نموذج عميل الجهاز واستكشافه، فلا تنظف الموارد التي تم إنشاؤها في هذه البداية السريعة. إذا لم تكن تخطط للمتابعة، فاستخدم الخطوات التالية لحذف جميع الموارد التي تم إنشاؤها بواسطة هذه البداية السريعة.

احذف تسجيل جهازك

  1. أغلق نموذج إطار إخراج نموذج الجهاز على الجهاز.

  2. في مدخل Azure، حدد All resources في القائمة اليسرى.

  3. تحديد خدمة تزويد الأجهزة خاصتك.

  4. في قائمة الإعدادات، حدد ⁧⁩"إدارة التسجيلات"⁧⁩.

  5. حدد علامة التبويب التسجيلات الفردية.

  6. حدد خانة الاختيار بجوار معرف التسجيل للجهاز الذي سجلته في هذا التشغيل السريع.

  7. في الجزء العلوي من الصفحة، حدد حذف.

احذف تسجيل جهازك من مركز IoT

  1. في مدخل Azure، حدد All resources في القائمة اليسرى.

  2. حدد مركز IoT.

  3. في قائمة Explorers، حدد IoT devices.

  4. حدد خانة الاختيار بجوار معرف الجهاز الخاص بالجهاز الذي سجلته في هذا التشغيل السريع.

  5. في الجزء العلوي من الصفحة، حدد حذف.

الخطوات التالية

في هذا التشغيل السريع، قمت بتوفير جهاز واحد لمركز IoT الخاص بك باستخدام تسجيل فردي. بعد ذلك، تعرف على كيفية توفير أجهزة متعددة عبر مراكز متعددة.