إنشاء وتوفير أجهزة IoT Edge على نطاق واسع على Linux باستخدام شهادات X.509

ينطبق على: أيقونة نعم IoT Edge 1.1

هام

كان تاريخ انتهاء دعم IoT Edge 1.1 هو 13 ديسمبر 2022. تحقق من دورة حياة المنتج من Microsoft للحصول على معلومات حول كيفية دعم هذا المنتج أو الخدمة أو التقنية أو API. لمزيد من المعلومات حول التحديث إلى أحدث إصدار من IoT Edge، راجع تحديث IoT Edge.

توفر هذه المقالة إرشادات شاملة للتزويد التلقائي لجهاز واحد أو أكثر من أجهزة Linux IoT Edge باستخدام شهادات X.509. يمكنك توفير أجهزة Azure IoT Edge تلقائيا باستخدام خدمة توفير جهاز Azure IoT Hub (DPS). إذا لم تكن على دراية بعملية التزويد التلقائي، فراجع نظرة عامة على التوفير قبل المتابعة.

المهام هي كما يلي:

  1. إنشاء الشهادات والمفاتيح.
  2. إنشاء تسجيل فردي لجهاز واحد أو تسجيل مجموعة لمجموعة من الأجهزة.
  3. تثبيت وقت تشغيل IoT Edge وتسجيل الجهاز باستخدام IoT Hub.

يعد استخدام شهادات X.509 كآلية إثبات طريقة ممتازة لتوسيع نطاق الإنتاج وتبسيط تزويد الأجهزة. عادة ما يتم ترتيب شهادات X.509 في سلسلة شهادات الثقة. بدءا من شهادة جذر موقعة ذاتيا أو موثوق بها، توقع كل شهادة في السلسلة الشهادة السفلية التالية. ينشئ هذا النمط سلسلة ثقة مفوضة من شهادة الجذر وصولا إلى كل شهادة وسيطة إلى شهادة جهاز انتقال البيانات النهائية النهائية المثبتة على جهاز.

تلميح

إذا كان جهازك يحتوي على وحدة أمان الأجهزة (HSM) مثل TPM 2.0، فإننا نوصي بتخزين مفاتيح X.509 بشكل آمن في HSM. تعرف على المزيد حول كيفية تنفيذ توفير اللمس الصفري على نطاق واسع الموضح في هذا المخطط باستخدام نموذج iotedge-tpm2cloud .

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

موارد السحابة

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

متطلبات الجهاز

جهاز Linux فعلي أو ظاهري ليكون جهاز IoT Edge.

إنشاء شهادات هوية الجهاز

شهادة هوية الجهاز هي شهادة جهاز انتقال البيانات من الخادم تتصل من خلال سلسلة شهادات الثقة بشهادة المرجع المصدق X.509 الأعلى (CA). يجب أن يكون اسم شهادة هوية الجهاز (CN) معينا على معرف الجهاز الذي تريد أن يكون للجهاز في مركز IoT الخاص بك.

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

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

تحتاج إلى الملفات التالية لإعداد التوفير التلقائي باستخدام X.509:

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

إشعار

حاليا، يمنع تقييد في libiothsm استخدام الشهادات التي تنتهي صلاحيتها في 1 يناير 2038 أو بعد ذلك.

استخدام شهادات الاختبار (اختياري)

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

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

  • <WRKDIR>/certs/iot-edge-device-identity-<name>-full-chain.cert.pem
  • <WRKDIR>/private/iot-edge-device-identity-<name>.key.pem

تحتاج إلى هاتين الشهادتين على جهاز IoT Edge. إذا كنت ستستخدم التسجيل الفردي في DPS، فستحمل ملف .cert.pem. إذا كنت ستستخدم تسجيل المجموعة في DPS، فأنت بحاجة أيضا إلى شهادة CA وسيطة أو جذر في نفس سلسلة الشهادات من الثقة لتحميلها. إذا كنت تستخدم شهادات تجريبية، فاستخدم الشهادة <WRKDIR>/certs/azure-iot-test-only.root.ca.cert.pem لتسجيل المجموعة.

إنشاء تسجيل DPS

استخدم الشهادات والمفاتيح التي تم إنشاؤها لإنشاء تسجيل في DPS لجهاز IoT Edge واحد أو أكثر.

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

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

لمزيد من المعلومات حول التسجيلات في خدمة توفير الجهاز، راجع كيفية إدارة تسجيلات الجهاز.

إنشاء تسجيل فردي ل DPS

تأخذ التسجيلات الفردية الجزء العام من شهادة هوية الجهاز وتطابق ذلك مع الشهادة على الجهاز.

تلميح

الخطوات الواردة في هذه المقالة مخصصة لمدخل Azure، ولكن يمكنك أيضا إنشاء عمليات تسجيل فردية باستخدام Azure CLI. لمزيد من المعلومات، راجع تسجيل az iot dps. كجزء من أمر CLI، استخدم العلامة الممكنة للحافة لتحديد أن التسجيل لجهاز IoT Edge.

  1. في مدخل Microsoft Azure، انتقل إلى مثيل خدمة توفير جهاز IoT Hub.

  2. ضمن Settings، حدد Manage enrollments.

  3. حدد Add individual enrollment ثم أكمل الخطوات التالية لتكوين التسجيل:

    • آلية: حدد X.509.

    • الشهادة الأساسية .pem أو ملف .cer: تحميل الملف العام من شهادة هوية الجهاز. إذا استخدمت البرامج النصية لإنشاء شهادة اختبار، فاختر الملف التالي:

      <WRKDIR>\certs\iot-edge-device-identity-<name>.cert.pem

    • معرف جهاز IoT Hub: قم بتوفير معرف لجهازك إذا كنت ترغب في ذلك. يمكنك استخدام معرفات الجهاز لاستهداف جهاز فردي لنشر الوحدة النمطية. إذا لم توفر معرف جهاز، يتم استخدام الاسم الشائع (CN) في شهادة X.509.

    • جهاز IoT Edge: حدد True للإعلان عن أن التسجيل لجهاز IoT Edge.

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

    • حالة الجهاز المزدوج الأولية: أضف قيمة علامة لإضافتها إلى توأم الجهاز إذا كنت ترغب في ذلك. يمكنك استخدام العلامات لاستهداف مجموعات من الأجهزة للتوزيع التلقائي. على سبيل المثال:

      {
          "tags": {
             "environment": "test"
          },
          "properties": {
             "desired": {}
          }
      }
      
  4. حدد حفظ.

ضمن إدارة التسجيلات، يمكنك مشاهدة معرف التسجيل للتسجيل الذي أنشأته للتو. دون ذلك، حيث يمكن استخدامه عند توفير جهازك.

الآن بعد وجود تسجيل لهذا الجهاز، يمكن لوقت تشغيل IoT Edge توفير الجهاز تلقائيا أثناء التثبيت.

تثبيت IoT Edge

في هذا القسم، يمكنك إعداد جهاز Linux الظاهري أو الجهاز الفعلي ل IoT Edge. بعد ذلك، يمكنك تثبيت IoT Edge.

قم بتشغيل الأوامر التالية لإضافة مستودع الحزمة ثم إضافة مفتاح توقيع حزمة Microsoft إلى قائمة المفاتيح الموثوق بها.

هام

في 30 يونيو 2022 تم إيقاف Raspberry Pi OS Stretch من قائمة دعم نظام التشغيل من المستوى 1. لتجنب الثغرات الأمنية المحتملة، قم بتحديث نظام التشغيل المضيف إلى Bullseye.

يمكن إجراء التثبيت باستخدام بعض الأوامر. افتح محطة طرفية ثم قم بتشغيل الأوامر التالية:

  • 20.04:

    wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    
  • 18.04:

    wget https://packages.microsoft.com/config/ubuntu/18.04/multiarch/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    

إشعار

تخضع حزم برامج Azure IoT Edge لشروط الترخيص الموجودة في كل حزمة LICENSE (usr/share/doc/{package-name}أو الدليل). اقرأ شروط الترخيص قبل استخدام الحزمة. تركيب واستخدامك للحزمة يشكل قبولك لهذه الشروط. في حال عدم موافقتك على شروط الترخيص، فلا تستخدم هذه الحزمة.

ثبِّت محرك حاوية

تعتمد Azure IoT Edge على وقت تشغيل حاوية متوافق مع OCI. بالنسبة لسيناريوهات الإنتاج، نوصي باستخدام محرك Moby. محرك Moby هو محرك الحاوية الوحيد المدعوم رسميا مع IoT Edge. تتوافق صور حاوية Docker CE/EE مع وقت تشغيل Moby.

ثبِّت محرك Moby.

sudo apt-get update; \
  sudo apt-get install moby-engine

بمجرد تثبيت محرك Moby بنجاح، قم بتكوينه لاستخدام local برنامج تشغيل التسجيل كآلية تسجيل. لمعرفة المزيد حول تكوين التسجيل، راجع قائمة التحقق من نشر الإنتاج.

  • قم بإنشاء أو فتح ملف تكوين Docker daemon في /etc/docker/daemon.json.

  • قم بتعيين برنامج تشغيل التسجيل الافتراضي إلى local برنامج تشغيل التسجيل كما هو موضح في المثال أدناه.

       {
          "log-driver": "local"
       }
    
  • أعد تشغيل محرك الحاوية حتى تسري التغييرات.

    sudo systemctl restart docker
    

    تلميح

    إذا تلقيت أخطاء عند تثبيت محرك حاوية Moby، فتحقق من توافق Linux kernel ل Moby. تشحن بعض الشركات المُصنّعة للأجهزة المضمنة صور الأجهزة التي تحتوي على أنوية Linux مخصصة دون الميزات المطلوبة لتوافق محرك الحاوية. شغَّل الأمر التالي، والذي يستخدم البرنامج النصي check-config الذي يزوده Moby، للتحقق من تكوين kernel خاصتك:

    curl -ssl https://raw.githubusercontent.com/moby/moby/master/contrib/check-config.sh -o check-config.sh
    chmod +x check-config.sh
    ./check-config.sh
    

    في إخراج البرنامج النصي، تحقق من أن جميع العناصر الموجودة تحت Generally Necessary و Network Drivers ممكنة. إذا كنت تفتقد إلى الميزات، فقم بتمكينها عن طريق إعادة إنشاء نواة من المصدر وتحديد الوحدات النمطية المقترنة لتضمينها في kernel .config المناسب. وبالمثل، إذا كنت تستخدم منشئ تكوين kernel مثل defconfig أو menuconfig، فابحث عن الميزات المعنية وقم بتمكينها وأعد بناء النواة وفقا لذلك. بعد نشر نواة المعدلة حديثا، قم بتشغيل البرنامج النصي check-config مرة أخرى للتحقق من تمكين جميع الميزات المطلوبة بنجاح.

قم بتثبيت وقت تشغيل IoT Edge

يقدم برنامج الأمان الخفي IoT Edge معايير الأمان على جهاز IoT Edge ويحافظ عليها. يبدأ البرنامج الخفي في كل عملية تمهيد ويمهد الجهاز عن طريق بدء بقية وقت تشغيل IoT Edge.

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

تثبيت إصدار IoT Edge 1.1.* مع حزمة libiothsm-std :

sudo apt-get update; \
  sudo apt-get install iotedge

إشعار

IoT Edge الإصدار 1.1 هو فرع الدعم طويل الأجل من IoT Edge. إذا كنت تقوم بتشغيل إصدار أقدم، نوصي بالتثبيت أو التحديث إلى أحدث تصحيح لأن الإصدارات القديمة لم تعد مدعومة.

تزويد الجهاز بهويته السحابية

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

جهز المعلومات التالية:

  • قيمة نطاق معرف DPS. يمكنك استرداد هذه القيمة من صفحة النظرة العامة لمثيل DPS في مدخل Microsoft Azure.
  • ملف سلسلة شهادات هوية الجهاز على الجهاز.
  • ملف مفتاح هوية الجهاز على الجهاز.
  1. افتح ملف التكوين على جهاز IoT Edge.

    sudo nano /etc/iotedge/config.yaml
    
  2. ابحث عن قسم تكوينات التزويد في الملف. قم بإلغاء تعليق أسطر توفير شهادة DPS X.509، وتأكد من التعليق على أي أسطر توفير أخرى.

    provisioning: يجب ألا يحتوي السطر على مسافة بيضاء مسبوقة، ويجب أن تكون العناصر المتداخلة مسافة بادئة بمسافة اثنين.

    # DPS X.509 provisioning configuration
    provisioning:
      source: "dps"
      global_endpoint: "https://global.azure-devices-provisioning.net"
      scope_id: "SCOPE_ID_HERE"
      attestation:
        method: "x509"
    #   registration_id: "OPTIONAL_REGISTRATION_ID_LEAVE_COMMENTED_OUT_TO_REGISTER_WITH_CN_OF_IDENTITY_CERT"
        identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE_HERE"
        identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY_HERE"
    
    # always_reprovision_on_startup: true
    # dynamic_reprovisioning: false
    
  3. قم بتحديث قيم scope_idو identity_certو identity_pk بمعلومات DPS والجهاز.

    عند إضافة شهادة X.509 والمعلومات الرئيسية إلى ملف config.yaml، يجب توفير المسارات كعناوين URL للملف. على سبيل المثال:

    file:///<path>/identity_certificate_chain.pem file:///<path>/identity_key.pem

  4. اختياريا، قم بتوفير registration_id للجهاز، الذي يحتاج إلى مطابقة الاسم الشائع (CN) لشهادة الهوية. إذا تركت هذا السطر معلقا، تطبيق CN تلقائيا.

  5. اختياريا، استخدم الأسطر always_reprovision_on_startup أو dynamic_reprovisioning لتكوين سلوك إعادة توفير جهازك. إذا تم تعيين جهاز لإعادة التزويد عند بدء التشغيل، فسيحاول دائما تزويده ب DPS أولا ثم الرجوع إلى النسخ الاحتياطي للتوفير إذا فشل ذلك. إذا تم تعيين جهاز على إعادة توفير نفسه ديناميكيا، فسيعاد تشغيل IoT Edge (وجميع الوحدات النمطية) وإعادة التوفير إذا تم الكشف عن حدث إعادة توفير، مثل ما إذا تم نقل الجهاز من مركز IoT إلى آخر. على وجه التحديد، يتحقق IoT Edge من bad_credential SDK أو device_disabled أخطاء منه للكشف عن حدث إعادة التزويد. لتشغيل هذا الحدث يدويا، قم بتعطيل الجهاز في IoT Hub. لمزيد من المعلومات، راجع مفاهيم إعادة توفير جهاز IoT Hub.

  6. احفظ الملف config.yaml وأغلقه.

  7. أعد تشغيل وقت تشغيل IoT Edge بحيث يلتقط جميع تغييرات التكوين التي أجريتها على الجهاز.

    sudo systemctl restart iotedge
    

التحقق من التثبيت الناجح

إذا بدأ وقت التشغيل بنجاح، يمكنك الانتقال إلى IoT Hub والبدء في نشر وحدات IoT Edge على جهازك.

يمكنك التحقق من استخدام التسجيل الفردي الذي قمت بإنشائه في خدمة توفير الجهاز. انتقل إلى مثيل خدمة توفير الجهاز في مدخل Microsoft Azure. افتح تفاصيل التسجيل للتسجيل الفردي الذي قمت بإنشائه. لاحظ أنه تم تعيين حالة التسجيل وإدراج معرف الجهاز.

استخدم الأوامر التالية على جهازك للتحقق من تثبيت IoT Edge وبدء تشغيله بنجاح.

تحقق من حالة خدمة IoT Edge.

systemctl status iotedge

فحص سجلات الخدمة.

journalctl -u iotedge --no-pager --no-full

سرد الوحدات النمطية قيد التشغيل.

iotedge list

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

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