إنشاء وتوفير جهاز IoT Edge على Linux باستخدام شهادات X.509
ينطبق على: IoT Edge 1.1
هام
كان تاريخ انتهاء دعم IoT Edge 1.1 هو 13 ديسمبر 2022. تحقق من دورة حياة المنتج من Microsoft للحصول على معلومات حول كيفية دعم هذا المنتج أو الخدمة أو التقنية أو API. لمزيد من المعلومات حول التحديث إلى أحدث إصدار من IoT Edge، راجع تحديث IoT Edge.
توفر هذه المقالة إرشادات شاملة لتسجيل وتوفير جهاز Linux IoT Edge، بما في ذلك تثبيت IoT Edge.
يحتوي كل جهاز يتصل بمركز IoT على معرف جهاز يستخدم لتعقب الاتصالات من السحابة إلى الجهاز أو من جهاز إلى سحابة. يمكنك تكوين جهاز بمعلومات الاتصال الخاصة به، والتي تتضمن اسم مضيف مركز IoT ومعرف الجهاز والمعلومات التي يستخدمها الجهاز للمصادقة على IoT Hub.
تستعرض الخطوات الواردة في هذه المقالة عملية تسمى التوفير اليدوي، حيث تقوم بتوصيل جهاز واحد بمركز IoT الخاص به. للتزويد اليدوي، لديك خياران لمصادقة أجهزة IoT Edge:
مفاتيح متماثلة: عند إنشاء هوية جهاز جديدة في IoT Hub، تنشئ الخدمة مفتاحين. يمكنك وضع أحد المفاتيح على الجهاز، ويعرض المفتاح إلى IoT Hub عند المصادقة.
أسلوب المصادقة هذا أسرع للبدء، ولكن ليس آمنا.
X.509 موقع ذاتيا: يمكنك إنشاء شهادتي هوية X.509 ووضعهما على الجهاز. عند إنشاء هوية جهاز جديدة في IoT Hub، فإنك توفر بصمة الإبهام من كلتا الشهادتين. عندما يصادق الجهاز على IoT Hub، فإنه يقدم شهادة واحدة ويتحقق IoT Hub من أن الشهادة تطابق بصمة الإبهام الخاصة به.
أسلوب المصادقة هذا أكثر أمانا ويوصى به لسيناريوهات الإنتاج.
تتناول هذه المقالة استخدام شهادات X.509 كطريقة مصادقة. إذا كنت ترغب في استخدام مفاتيح متماثلة، فشاهد إنشاء وتوفير جهاز IoT Edge على Linux باستخدام مفاتيح متماثلة.
إشعار
إذا كان لديك العديد من الأجهزة لإعدادها ولا تريد توفير كل منها يدويا، فاستخدم إحدى المقالات التالية لمعرفة كيفية عمل IoT Edge مع خدمة توفير جهاز IoT Hub:
المتطلبات الأساسية
تتناول هذه المقالة تسجيل جهاز IoT Edge وتثبيت IoT Edge عليه. هذه المهام لها متطلبات أساسية وأدوات مساعدة مختلفة تستخدم لإنجازها. تأكد من أن لديك جميع المتطلبات الأساسية التي تمت تغطيتها قبل المتابعة.
أدوات إدارة الأجهزة
يمكنك استخدام مدخل Microsoft Azure أو Visual Studio Code أو Azure CLI لخطوات تسجيل جهازك. كل أداة مساعدة لها متطلباتها الأساسية الخاصة:
مركز IoT مجاني أو قياسي في اشتراك Azure الخاص بك.
متطلبات الجهاز
جهاز X64 أو ARM32 أو ARM64 Linux.
تنشر Microsoft حزم التثبيت لمجموعة متنوعة من أنظمة التشغيل.
للحصول على أحدث المعلومات حول أنظمة التشغيل المدعومة حاليا لسيناريوهات الإنتاج، راجع أنظمة Azure IoT Edge المدعومة.
إنشاء شهادات هوية الجهاز
يتطلب التوفير اليدوي مع شهادات X.509 إصدار IoT Edge 1.0.10 أو أحدث.
عند توفير جهاز IoT Edge بشهادات X.509، يمكنك استخدام ما يسمى بشهادة هوية الجهاز. يتم استخدام هذه الشهادة فقط لتوفير جهاز IoT Edge ومصادقة الجهاز باستخدام Azure IoT Hub. إنها شهادة طرفية لا توقع شهادات أخرى. شهادة هوية الجهاز منفصلة عن شهادات المرجع المصدق (CA) التي يقدمها جهاز IoT Edge إلى الوحدات النمطية أو أجهزة انتقال البيانات من الخادم للتحقق منها.
بالنسبة لمصادقة شهادة X.509، يتم توفير معلومات مصادقة كل جهاز في شكل بصمات إبهام مأخوذة من شهادات هوية جهازك. يتم إعطاء بصمات الإبهام هذه إلى IoT Hub في وقت تسجيل الجهاز بحيث يمكن للخدمة التعرف على الجهاز عند الاتصال.
لمزيد من المعلومات حول كيفية استخدام شهادات المرجع المصدق في أجهزة IoT Edge، راجع فهم كيفية استخدام Azure IoT Edge للشهادات.
تحتاج إلى الملفات التالية للتزويد اليدوي باستخدام X.509:
اثنتان من شهادات هوية الجهاز مع شهادات المفاتيح الخاصة المتطابقة بتنسيقات .cer أو .pem.
يتم توفير مجموعة واحدة من ملفات الشهادة/المفاتيح إلى وقت تشغيل IoT Edge. عند إنشاء شهادات هوية الجهاز، قم بتعيين الاسم الشائع للشهادة (CN) مع معرف الجهاز الذي تريد أن يكون الجهاز في مركز IoT الخاص بك.
بصمة الإبهام المأخوذة من شهادات هوية الجهاز.
قيم بصمة الإبهام هي 40 حرفا سداسيا لتجزئة SHA-1 أو 64 حرفا سداسيا لتجزئة SHA-256. يتم توفير بصمتي الإبهام إلى IoT Hub في وقت تسجيل الجهاز.
إذا لم يكن لديك شهادات متوفرة، يمكنك إنشاء شهادات تجريبية لاختبار ميزات جهاز IoT Edge. اتبع الإرشادات الواردة في هذه المقالة لإعداد البرامج النصية لإنشاء الشهادة، وإنشاء شهادة المرجع المصدق الجذر، ثم إنشاء شهادتي هوية جهاز IoT Edge.
إحدى طرق استرداد بصمة الإبهام من شهادة هي باستخدام الأمر openssl التالي:
openssl x509 -in <certificate filename>.pem -text -fingerprint
تسجيل جهازك
يمكنك استخدام مدخل Microsoft Azure أو Visual Studio Code أو Azure CLI لتسجيل جهازك، اعتمادا على تفضيلك.
في مركز IoT في مدخل Microsoft Azure، يتم إنشاء أجهزة IoT Edge وإدارتها بشكل منفصل عن أجهزة IoT التي لم يتم تمكين الحافة لها.
سجل الدخول إلى مدخل Microsoft Azure والانتقال إلى IoT hub الخاص بك.
في الجزء الأيمن، حدد الأجهزة من القائمة، ثم حدد إضافة جهاز.
في صفحة إنشاء جهاز ، قم بتوفير المعلومات التالية:
- إنشاء معرف جهاز وصفي. دون ملاحظة حول معرف الجهاز هذا، حيث ستستخدمه لاحقا.
- حدد خانة الاختيار جهاز IoT Edge .
- حدد X.509 Self-Signed كنوع المصادقة.
- توفير بصمة الإبهام لشهادة الهوية الأساسية والثانوية. قيم بصمة الإبهام هي 40 حرفا سداسيا لتجزئة SHA-1 أو 64 حرفا سداسيا لتجزئة SHA-256.
حدد حفظ.
الآن بعد أن أصبح لديك جهاز مسجل في IoT Hub، استرد المعلومات التي تستخدمها لإكمال تثبيت وقت تشغيل IoT Edge وتوفيره.
عرض الأجهزة المسجلة واسترداد معلومات التوفير
تحتاج الأجهزة التي تستخدم مصادقة شهادة X.509 إلى اسم مركز IoT واسم الجهاز وملفات الشهادات الخاصة بها لإكمال تثبيت وقت تشغيل IoT Edge وتوفيره.
يتم سرد الأجهزة الممكنة للحافة التي تتصل بمركز IoT في صفحة الأجهزة . يمكنك تصفية القائمة حسب نوع Iot Edge Device.
تثبيت 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 Edge على جهازك، فأنت جاهز للخطوة التالية، وهي إعداد الجهاز باستخدام هويته السحابية ومعلومات المصادقة الخاصة به.
على جهاز IoT Edge، افتح ملف التكوين.
sudo nano /etc/iotedge/config.yaml
ابحث عن قسم تكوينات التزويد في الملف وقم بإلغاء تعليق تكوين التوفير اليدوي باستخدام قسم شهادة هوية X.509. تأكد من التعليق على أي أقسام توفير أخرى. تأكد من أن التزويد: السطر ليس له مسافة بيضاء مسبوقة وأن العناصر المتداخلة يتم مسافة بادئة بمسافة اثنين.
# Manual provisioning configuration using an x.509 identity certificate
provisioning:
source: "manual"
authentication:
method: "x509"
iothub_hostname: "REQUIRED_IOTHUB_HOSTNAME"
device_id: "REQUIRED_DEVICE_ID_PROVISIONED_IN_IOTHUB"
identity_cert: "REQUIRED_URI_TO_DEVICE_IDENTITY_CERTIFICATE"
identity_pk: "REQUIRED_URI_TO_DEVICE_IDENTITY_PRIVATE_KEY"
قم بتحديث الحقول التالية:
- iothub_hostname: اسم المضيف لمركز IoT الذي سيتصل به الجهاز. على سبيل المثال،
{IoT hub name}.azure-devices.net
- device_id: المعرف الذي قدمته عند تسجيل الجهاز.
- identity_cert: URI إلى شهادة هوية على الجهاز. على سبيل المثال،
file:///path/identity_certificate.pem
- identity_pk: URI إلى ملف المفتاح الخاص لشهادة الهوية المتوفرة. على سبيل المثال،
file:///path/identity_key.pem
احفظ الملف وأغلقه.
CTRL + X
، ، Y
Enter
بعد إدخال معلومات التزويد في ملف التكوين، أعِد تشغيل البرنامج الخفي:
sudo systemctl restart iotedge
تحقق من التكوين الناجح
تحقق من أن وقت التشغيل قد جرى تثبيته وتكوينه بنجاح على جهاز IoT Edge خاصتك.
تلميح
أنت بحاجة إلى امتيازات مرتفعة لتشغيل الأوامر iotedge
. بمجرد تسجيل الخروج من جهازك وإعادة تسجيل الدخول في المرة الأولى بعد تثبيت وقت تشغيل IoT Edge، يتم تحديث أذوناتك تلقائيًّا. حتى ذلك الحين، استخدم sudo
أمام الأوامر.
تحقق من تشغيل خدمة نظام IoT Edge.
sudo systemctl status iotedge
إذا كنت بحاجة إلى استكشاف أخطاء الخدمة وإصلاحها، فقم باسترداد سجلات الخدمة.
journalctl -u iotedge
check
استخدم الأداة للتحقق من التكوين وحالة الاتصال للجهاز.
sudo iotedge check
تلميح
استخدم sudo
دائما لتشغيل أداة الفحص، حتى بعد تحديث أذوناتك. تحتاج الأداة إلى امتيازات مرتفعة للوصول إلى ملف التكوين للتحقق من حالة التكوين.
إشعار
على جهاز تم توفيره حديثا، قد ترى خطأ يتعلق ب IoT Edge Hub:
× جاهزية الإنتاج: يستمر دليل تخزين Edge Hub على نظام ملفات المضيف - خطأ
تعذر التحقق من الحالة الحالية لحاوية edgeHub
هذا الخطأ متوقع على جهاز تم توفيره حديثا لأن الوحدة النمطية IoT Edge Hub لا تعمل. لحل الخطأ، في IoT Hub، قم بتعيين الوحدات النمطية للجهاز وإنشاء نشر. يؤدي إنشاء نشر للجهاز إلى بدء تشغيل الوحدات النمطية على الجهاز بما في ذلك وحدة IoT Edge Hub.
عرض جميع الوحدات النمطية التي تعمل على جهاز IoT Edge. عند بدء تشغيل الخدمة للمرة الأولى، يجب أن تشاهد الوحدة النمطية edgeAgent قيد التشغيل فقط. تعمل الوحدة النمطية edgeAgent بشكل افتراضي وتساعد على تثبيت أي وحدات إضافية تقوم بنشرها على جهازك وتشغيلها.
sudo iotedge list
عند إنشائك جهاز IoT Edge جديدًا، فإنه سيعرض رمز الحالة 417 -- The device's deployment configuration is not set
في مدخل Microsoft Azure. هذه الحالة طبيعية، وتعني أن الجهاز جاهز لتلقي وحدة نشر.
تثبيت إصدار محدد أو غير متصل (اختياري)
الخطوات الواردة في هذا القسم مخصصة للسيناريوهات التي لا تغطيها خطوات التثبيت القياسية. وقد يشمل ذلك ما يلي:
- تثبيت IoT Edge أثناء عدم الاتصال
- تثبيت إصدار مرشح للإصدار
استخدم الخطوات الواردة في هذا القسم إذا كنت تريد تثبيت إصدار معين من وقت تشغيل Azure IoT Edge غير المتوفر من خلال مدير الحزم. تحتوي قائمة حزم Microsoft فقط على مجموعة محدودة من الإصدارات الحديثة وإصداراتها الفرعية، لذلك هذه الخطوات مخصصة لأي شخص يريد تثبيت إصدار أقدم أو إصدار مرشح للإصدار.
باستخدام أوامر curl، يمكنك استهداف ملفات المكونات مباشرة من مستودع IoT Edge GitHub.
انتقل إلى إصدارات Azure IoT Edge، وابحث عن إصدار الإصدار الذي تريد استهدافه.
قم بتوسيع قسم Assets لهذا الإصدار.
يجب أن يحتوي كل إصدار على ملفات جديدة لبرنامج أمان IoT Edge الخفي وhsmlib. إذا كنت تريد تثبيت IoT Edge على جهاز غير متصل، فقم بتنزيل هذه الملفات مسبقا. وإلا، استخدم الأوامر التالية لتحديث هذه المكونات.
ابحث عن ملف libiothsm-std الذي يطابق بنية جهاز IoT Edge. انقر بزر الماوس الأيمن فوق ارتباط الملف وانسخ عنوان الارتباط.
استخدم الارتباط المنسخ في الأمر التالي لتثبيت هذا الإصدار من hsmlib:
curl -L libiothsm-std_link_here -o libiothsm-std.deb && sudo apt-get install ./libiothsm-std.deb
ابحث عن ملف iotedge الذي يتطابق مع بنية جهاز IoT Edge. انقر بزر الماوس الأيمن فوق ارتباط الملف وانسخ عنوان الارتباط.
استخدم الارتباط المنسخ في الأمر التالي لتثبيت هذا الإصدار من برنامج أمان IoT Edge.
curl -L iotedge_link_here -o iotedge.deb && sudo apt-get install ./iotedge.deb
الآن بعد أن تم تثبيت محرك الحاوية ووقت تشغيل IoT Edge على جهازك، فأنت جاهز للخطوة التالية، وهي تزويد الجهاز بهويته السحابية.
إلغاء تثبيت IoT Edge
إذا كنت تريد إزالة تثبيت IoT Edge من جهازك، فاستخدم الأوامر التالية.
قم بإزالة وقت تشغيل IoT Edge.
sudo apt-get autoremove iotedge
عند إزالة وقت تشغيل IoT Edge، يتم إيقاف أي حاويات أنشأها ولكنها لا تزال موجودة على جهازك. عرض جميع الحاويات لمعرفة الحاويات المتبقية.
sudo docker ps -a
احذف الحاويات من جهازك، بما في ذلك حاويتي وقت التشغيل.
sudo docker rm -f <container name>
وأخيرا، قم بإزالة وقت تشغيل الحاوية من جهازك.
sudo apt-get autoremove --purge moby-engine
الخطوات التالية
استمر في نشر وحدات IoT Edge النمطية لمعرفة كيفية نشر الوحدات النمطية على جهازك.