إنشاء أجهزة IoT Edge وتوفيرها على نطاق واسع على Linux باستخدام شهادات X.509
ينطبق على:
IoT Edge 1.1 الإصدارات الأخرى:IoT Edge 1.2
ينطبق على:
IoT Edge 1.2 الإصدارات الأخرى:IoT Edge 1.1
توفر هذه المقالة إرشادات شاملة للتزويد التلقائي لجهاز واحد أو أكثر من أجهزة Linux IoT Edge باستخدام شهادات X.509. يمكنك توفير أجهزة Azure IoT Edge تلقائيا باستخدام خدمة توفير جهاز Azure IoT Hub (DPS). إذا لم تكن معتادا على عملية التوفير التلقائي، فراجع نظرة عامة على التوفير قبل المتابعة.
المهام هي كما يلي:
- إنشاء الشهادات والمفاتيح.
- إنشاء إما تسجيل فردي لجهاز واحد أو تسجيل مجموعة لمجموعة من الأجهزة.
- ثبت وقت تشغيل IoT Edge وسجل الجهاز باستخدام IoT Hub.
يعد استخدام شهادات X.509 كآلية إثبات طريقة ممتازة لتوسيع نطاق الإنتاج وتبسيط تزويد الأجهزة. عادة ما يتم ترتيب شهادات X.509 في سلسلة شهادات الثقة. بدءا من شهادة جذر موقعة ذاتيا أو موثوق بها، توقع كل شهادة في السلسلة الشهادة السفلية التالية. ينشئ هذا النمط سلسلة تفويض من الثقة من شهادة الجذر وصولا إلى كل شهادة وسيطة إلى الشهادة النهائية "الطرفية" المثبتة على جهاز.
المتطلبات الأساسية
موارد السحابة
- مركز 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.
- شهادة CA متوسطة أو جذرية من سلسلة شهادات الثقة. يتم تحميل هذه الشهادة إلى 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.
في مدخل Microsoft Azure، انتقل إلى مثيل خدمة توفير جهاز IoT Hub.
ضمن الإعدادات، حدد إدارة التسجيلات.
حدد 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": {} } }
حدد حفظ.
ضمن إدارة التسجيلات، يمكنك مشاهدة معرف التسجيل للتسجيل الذي أنشأته للتو. دون ذلك، حيث يمكن استخدامه عند توفير جهازك.
الآن بعد وجود تسجيل لهذا الجهاز، يمكن لوقت تشغيل IoT Edge توفير الجهاز تلقائيا أثناء التثبيت.
تثبيت IoT Edge
في هذا القسم، يمكنك إعداد جهاز Linux الظاهري أو الجهاز الفعلي ل IoT Edge. بعد ذلك، يمكنك تثبيت IoT Edge.
أولا، قم بتشغيل الأوامر التالية لإضافة مستودع الحزمة ثم إضافة مفتاح توقيع حزمة Microsoft إلى قائمة المفاتيح الموثوق بها.
يمكن إجراء التثبيت باستخدام بعض الأوامر. افتح محطة طرفية ثم قم بتشغيل الأوامر التالية:
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.deb18.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" }أعد تشغيل محرك الحاوية حتى تسري التغييرات.
تلميح
إذا تلقيت أخطاء عند تثبيت محرك حاوية 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ممكنة. إذا كنت تفتقد إلى الميزات، فمكنها عن طريق إعادة إنشاء نواة من المصدر وتحديد الوحدات النمطية المقترنة لتضمينها في .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 Edge معايير الأمان وتحافظ عليها على جهاز IoT Edge. تبدأ الخدمة على كل تمهيد وتشغل الجهاز عن طريق بدء بقية وقت تشغيل IoT Edge.
تم تقديم خدمة هوية IoT مع الإصدار 1.2 من IoT Edge. تعالج هذه الخدمة توفير الهوية وإدارتها ل IoT Edge ومكونات الأجهزة الأخرى التي تحتاج إلى الاتصال ب IoT Hub.
تمثل الخطوات الواردة في هذا القسم العملية النموذجية لتثبيت أحدث إصدار على جهاز متصل بالإنترنت. إذا كنت بحاجة إلى تثبيت إصدار معين، مثل إصدار ما قبل الإصدار، أو تحتاج إلى التثبيت أثناء عدم الاتصال، فاتبع خطوات تثبيت الإصدار غير المتصل أو المحدد لاحقا في هذه المقالة.
ملاحظة
توضح لك الخطوات الواردة في هذا القسم كيفية تثبيت الإصدار 1.2 من IoT Edge.
إذا كان لديك بالفعل جهاز IoT Edge يعمل بإصدار أقدم وتريد الترقية إلى 1.2، فاستخدم الخطوات الواردة في تحديث البرنامج الخفي لأمان IoT Edge ووقت التشغيل. يختلف الإصدار 1.2 بشكل كاف عن الإصدارات السابقة من IoT Edge التي تعد خطوات محددة ضرورية للترقية.
تثبيت أحدث إصدار من IoT Edge وحزمة خدمة هوية IoT:
sudo apt-get update; \
sudo apt-get install aziot-edge
لسرد الإصدارات الأخرى من IoT Edge وخدمة هوية IoT المتوفرة، استخدم الأمر التالي:
apt list -a aziot-edge aziot-identity-service
تزويد الجهاز بهويته السحابية
بمجرد تثبيت وقت التشغيل على جهازك، قم بتكوين الجهاز بالمعلومات التي يستخدمها للاتصال بخدمة توفير الجهاز ومركز IoT.
جهز المعلومات التالية:
- قيمة نطاق معرف DPS. يمكنك استرداد هذه القيمة من صفحة النظرة العامة لمثيل DPS في مدخل Microsoft Azure.
- ملف سلسلة شهادات هوية الجهاز على الجهاز.
- ملف مفتاح هوية الجهاز على الجهاز.
افتح ملف التكوين على جهاز IoT Edge.
sudo nano /etc/iotedge/config.yamlابحث عن قسم تكوينات التزويد في الملف. قم بإلغاء تعليق خطوط توفير شهادة 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قم بتحديث قيم
scope_idوidentity_certو بمعلوماتidentity_pkDPS والجهاز.عند إضافة شهادة X.509 ومعلومات رئيسية إلى ملف config.yaml، يجب توفير المسارات كعناوين URL للملف. على سبيل المثال:
file:///<path>/identity_certificate_chain.pemfile:///<path>/identity_key.pemبشكل اختياري، قم بتوفير
registration_idللجهاز، الذي يحتاج إلى مطابقة الاسم الشائع (CN) لشهادة الهوية. إذا تركت هذا السطر معلقا، فسيتم تطبيق CN تلقائيا.اختياريا، استخدم الأسطر
always_reprovision_on_startupأوdynamic_reprovisioningلتكوين سلوك إعادة توفير جهازك. إذا تم تعيين جهاز لإعادة التوفير عند بدء التشغيل، فسيحاول دائما تزويده ب DPS أولا ثم الرجوع إلى النسخ الاحتياطي للتوفير إذا فشل ذلك. إذا تم تعيين جهاز إلى إعادة توفير نفسه ديناميكيا، فسيعيد IoT Edge (وجميع الوحدات النمطية) التشغيل وإعادة التوفير إذا تم الكشف عن حدث إعادة توفير، مثل ما إذا تم نقل الجهاز من IoT Hub إلى آخر. على وجه التحديد، يتحققbad_credentialIoT Edge من SDK أوdevice_disabledالأخطاء منه للكشف عن حدث إعادة التوفير. لتشغيل هذا الحدث يدويا، قم بتعطيل الجهاز في IoT Hub. لمزيد من المعلومات، راجع مفاهيم إعادة توفير جهاز IoT Hub.احفظ الملف config.yaml وأغلقه.
أعد تشغيل وقت تشغيل IoT Edge بحيث يلتقط جميع تغييرات التكوين التي أجريتها على الجهاز.
sudo systemctl restart iotedge
إنشاء ملف تكوين لجهازك استنادا إلى ملف قالب يتم توفيره كجزء من تثبيت IoT Edge.
sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.tomlافتح ملف التكوين على جهاز IoT Edge.
sudo nano /etc/aziot/config.tomlابحث عن قسم Provisioning في الملف. قم بإلغاء تعليق خطوط تزويد DPS بشهادة X.509، وتأكد من التعليق على أي أسطر تزويد أخرى.
# DPS provisioning with X.509 certificate [provisioning] source = "dps" global_endpoint = "https://global.azure-devices-provisioning.net" id_scope = "SCOPE_ID_HERE" [provisioning.attestation] method = "x509" registration_id = "REGISTRATION_ID_HERE" identity_cert = "DEVICE_IDENTITY_CERTIFICATE_HERE" identity_pk = "DEVICE_IDENTITY_PRIVATE_KEY_HERE"قم بتحديث قيمة
id_scopeبمعرف النطاق الذي نسخته من مثيل DPS الخاص بك.registration_idقم بتوفير للجهاز، وهو المعرف الذي سيكون للجهاز في IoT Hub. يجب أن يتطابق معرف التسجيل مع الاسم الشائع (CN) لشهادة الهوية.قم بتحديث قيم
identity_certوidentity_pkمع الشهادة والمعلومات الرئيسية.يمكن توفير قيمة شهادة الهوية كملف URI، أو يمكن إصدارها ديناميكيا باستخدام EST أو مرجع مصدق محلي. قم بإلغاء تعليق سطر واحد فقط، استنادا إلى التنسيق الذي تختار استخدامه.
يمكن توفير قيمة المفتاح الخاص للهوية كملف URI أو PKCS#11 URI. قم بإلغاء تعليق سطر واحد فقط، استنادا إلى التنسيق الذي تختار استخدامه.
إذا كنت تستخدم أي عناوين URL ل PKCS#11، فابحث عن قسم PKCS#11 في ملف التكوين وقم بتوفير معلومات حول تكوين PKCS#11.
حفظ وإغلاق الملف.
تطبيق تغييرات التكوين التي أجريتها على IoT Edge.
sudo iotedge config apply
التحقق من التثبيت الناجح
إذا بدأ وقت التشغيل بنجاح، يمكنك الانتقال إلى IoT Hub والبدء في نشر وحدات IoT Edge النمطية على جهازك.
يمكنك التحقق من استخدام التسجيل الفردي الذي قمت بإنشائه في خدمة توفير الجهاز. انتقل إلى مثيل خدمة توفير الجهاز في مدخل Microsoft Azure. افتح تفاصيل التسجيل للتسجيل الفردي الذي قمت بإنشائه. لاحظ أنه تم تعيين حالة التسجيل وإدراج معرف الجهاز.
استخدم الأوامر التالية على جهازك للتحقق من تثبيت IoT Edge وبدء تشغيله بنجاح.
تحقق من حالة خدمة IoT Edge.
systemctl status iotedge
فحص سجلات الخدمة.
journalctl -u iotedge --no-pager --no-full
سرد الوحدات النمطية قيد التشغيل.
iotedge list
تحقق من حالة خدمة IoT Edge.
sudo iotedge system status
فحص سجلات الخدمة.
sudo iotedge system logs
سرد الوحدات النمطية قيد التشغيل.
sudo iotedge list
الخطوات التالية
تتيح لك عملية تسجيل خدمة توفير الجهاز تعيين معرف الجهاز وعلامات الجهاز المزدوجة في نفس الوقت الذي تقوم فيه بتوفير الجهاز الجديد. يمكنك استخدام هذه القيم لاستهداف أجهزة فردية أو مجموعات من الأجهزة باستخدام الإدارة التلقائية للأجهزة. تعرف على كيفية نشر وحدات IoT Edge ومراقبتها على نطاق واسع باستخدام مدخل Microsoft Azure أو باستخدام Azure CLI.