إدارة شهادات IoT Edge

ينطبق على:علامة اختيار IoT Edge 1.4 IoT Edge 1.4

هام

IoT Edge 1.4 هو الإصدار المدعوم. إذا كنت تستخدم إصدارا سابقا، فشاهد تحديث IoT Edge.

تستخدم جميع أجهزة IoT Edge الشهادات لإنشاء اتصالات آمنة بين وقت التشغيل وأي وحدات تعمل على الجهاز. تستخدم أجهزة IoT Edge التي تعمل كبوابات نفس الشهادات للاتصال بأجهزة انتقال البيانات من الخادم الخاصة بها أيضا.

إشعار

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

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

  • يجب أن تكون على دراية بالمفاهيم في فهم كيفية استخدام Azure IoT Edge للشهادات، خاصة كيفية استخدام IoT Edge للشهادات.

  • جهاز IoT Edge.

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

  • القدرة على تحرير ملف config.toml تكوين IoT Edge باتباع قالب التكوين.

  • إذا لم يكن مستندا config.toml إلى القالب، فافتح القالبواستخدم الإرشادات التي تم التعليق عليها لإضافة أقسام التكوين التي تتبع بنية القالب.

  • إذا كان لديك تثبيت IoT Edge جديد لم يتم تكوينه، فانسخ القالب لتهيئة التكوين. لا تستخدم هذا الأمر إذا كان لديك تكوين موجود. يقوم بالكتابة فوق الملف.

    sudo cp /etc/aziot/config.toml.edge.template /etc/aziot/config.toml
    

متطلبات التنسيق

تلميح

  • يمكن ترميز الشهادة في تمثيل ثنائي يسمى DER (قواعد الترميز المميزة)، أو تمثيل نصي يسمى PEM (البريد المحسن للخصوصية). يحتوي تنسيق PEM على -----BEGIN CERTIFICATE----- رأس متبوعا ب DER المرمز base64 متبوعا بتذييل -----END CERTIFICATE----- .
  • على غرار الشهادة، يمكن ترميز المفتاح الخاص في DER ثنائي أو PEM تمثيل نصي.
  • نظرا لأن PEM تم تحديده، فمن الممكن أيضا إنشاء PEM يجمع بين CERTIFICATE و PRIVATE KEY بشكل تسلسلي في نفس الملف.
  • وأخيرا، يمكن ترميز الشهادة والمفتاح الخاص معا في تمثيل ثنائي يسمى PKCS#12، يتم تشفيره بكلمة مرور اختيارية.

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

  • .cer هي شهادة في نموذج DER أو PEM.
  • .pem إما شهادة أو مفتاح خاص أو كليهما في نموذج PEM.
  • .pfxهو ملف PKCS#12.

يتطلب IoT Edge أن تكون الشهادة والمفتاح الخاص:

  • تنسيق PEM
  • فصل الملفات
  • في معظم الحالات، مع السلسلة الكاملة

إذا حصلت على .pfx ملف من موفر PKI الخاص بك، فمن المحتمل أن تكون الشهادة والمفتاح الخاص مرمزين معا في ملف واحد. تحقق من أنه نوع ملف PKCS#12 باستخدام file الأمر . يمكنك تحويل ملف PKCS#12 .pfx إلى ملفات PEM باستخدام الأمر openssl pkcs12.

إذا كان موفر PKI الخاص بك يوفر ملفا .cer ، فقد يحتوي على نفس الشهادة .pfxمثل ، أو قد يكون شهادة إصدار (الجذر) لموفر PKI. للتحقق، افحص الملف باستخدام openssl x509 الأمر . إذا كانت الشهادة المصدرة:

  • إذا كان بتنسيق DER (ثنائي)، فحوله إلى PEM باستخدام openssl x509 -in cert.cer -out cert.pem.
  • استخدم ملف PEM كحزمة ثقة. لمزيد من المعلومات حول حزمة الثقة، راجع القسم التالي.

هام

يجب أن تدعم البنية الأساسية ل PKI مفاتيح RSA-2048 bit ومفاتيح EC P-256. على سبيل المثال، يجب أن تدعم خوادم EST أنواع المفاتيح هذه. يمكنك استخدام أنواع المفاتيح الأخرى، ولكننا نختبر مفاتيح RSA-2048 بت ومفاتيح EC P-256 فقط.

متطلبات الإذن

يسرد الجدول التالي أذونات الملف والدليل المطلوبة لشهادات IoT Edge. الدليل المفضل للشهادات هو /var/aziot/certs/ و /var/aziot/secrets/ للمفاتيح.

ملف أو دليل الأذونات مالك
/var/aziot/certs/ دليل الشهادات drwxr-xr-x (755) aziotcs
ملفات الشهادات في /var/aziot/certs/ -wr-r--r-- (644) aziotcs
/var/aziot/secrets/ دليل المفاتيح drwx------ (700) aziotks
الملفات الرئيسية في /var/aziot/secrets/ -wr------- (600) aziotks

لإنشاء الدلائل، قم بتعيين الأذونات وتعيين المالك، قم بتشغيل الأوامر التالية:

# If the certificate and keys directories don't exist, create, set ownership, and set permissions
sudo mkdir -p /var/aziot/certs
sudo chown aziotcs:aziotcs /var/aziot/certs
sudo chmod 755 /var/aziot/certs

sudo mkdir -p /var/aziot/secrets
sudo chown aziotks:aziotks /var/aziot/secrets
sudo chmod 700 /var/aziot/secrets

# Give aziotcs ownership to certificates
# Read and write for aziotcs, read-only for others
sudo chown -R aziotcs:aziotcs /var/aziot/certs
sudo find /var/aziot/certs -type f -name "*.*" -exec chmod 644 {} \;

# Give aziotks ownership to private keys
# Read and write for aziotks, no permission for others
sudo chown -R aziotks:aziotks /var/aziot/secrets
sudo find /var/aziot/secrets -type f -name "*.*" -exec chmod 600 {} \;

# Verify permissions of directories and files
sudo ls -Rla /var/aziot

يتشابه إخراج القائمة مع الملكية الصحيحة والإذن مع الإخراج التالي:

azureUser@vm:/var/aziot$ sudo ls -Rla /var/aziot
/var/aziot:
total 16
drwxr-xr-x  4 root    root    4096 Dec 14 00:16 .
drwxr-xr-x 15 root    root    4096 Dec 14 00:15 ..
drwxr-xr-x  2 aziotcs aziotcs 4096 Jan 14 00:31 certs
drwx------  2 aziotks aziotks 4096 Jan 23 17:23 secrets

/var/aziot/certs:
total 20
drwxr-xr-x 2 aziotcs aziotcs 4096 Jan 14 00:31 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw-r--r-- 1 aziotcs aziotcs 1984 Jan 14 00:24 azure-iot-test-only.root.ca.cert.pem
-rw-r--r-- 1 aziotcs aziotcs 5887 Jan 14 00:27 iot-edge-device-ca-devicename-full-chain.cert.pem

/var/aziot/secrets:
total 16
drwx------ 2 aziotks aziotks 4096 Jan 23 17:23 .
drwxr-xr-x 4 root    root    4096 Dec 14 00:16 ..
-rw------- 1 aziotks aziotks 3243 Jan 14 00:28 iot-edge-device-ca-devicename.key.pem

إدارة المرجع المصدق الجذر الموثوق به (حزمة الثقة)

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

  1. احصل على شهادة المرجع المصدق الجذر من موفر PKI.

  2. تحقق من أن الشهادة تفي بمتطلبات التنسيق.

  3. انسخ ملف PEM وامنح خدمة شهادة IoT Edge حق الوصول. على سبيل المثال، مع /var/aziot/certs الدليل:

    # Make the directory if doesn't exist
    sudo mkdir /var/aziot/certs -p
    
    # Change cert directory user and group ownership to aziotcs and set permissions
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    # Copy certificate into certs directory
    sudo cp root-ca.pem /var/aziot/certs
    
    # Give aziotcs ownership to certificate and set read and write permission for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/root-ca.pem
    sudo chmod 644 /var/aziot/certs/root-ca.pem
    
  4. في ملف config.tomlتكوين IoT Edge ، ابحث عن قسم شهادة حزمة الثقة. إذا كان المقطع مفقودا، يمكنك نسخه من ملف قالب التكوين.

    تلميح

    إذا لم يكن ملف التكوين موجودا على جهازك حتى الآن، فاستخدم /etc/aziot/config.toml.edge.template كقالب لإنشاء واحد.

  5. trust_bundle_cert تعيين المفتاح إلى موقع ملف الشهادة.

    trust_bundle_cert = "file:///var/aziot/certs/root-ca.pem"
    
  6. تطبيق التكوين.

    sudo iotedge config apply
    

تثبيت المرجع المصدق الجذر إلى مخزن شهادات نظام التشغيل

تثبيت الشهادة إلى ملف حزمة الثقة يجعلها متاحة لوحدات الحاوية ولكن ليس لاستضافة وحدات مثل Azure Device Update أو Defender. إذا كنت تستخدم مكونات مستوى المضيف أو واجهت مشكلات TLS أخرى، فقم أيضا بتثبيت شهادة المرجع المصدق الجذر إلى مخزن شهادات نظام التشغيل:

sudo cp /var/aziot/certs/my-root-ca.pem /usr/local/share/ca-certificates/my-root-ca.pem.crt

sudo update-ca-certificates

استيراد الشهادة وملفات المفاتيح الخاصة

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

  1. تحقق من الشهادة وملفات المفاتيح الخاصة التي تفي بمتطلبات التنسيق.

  2. انسخ ملف PEM إلى جهاز IoT Edge حيث يمكن لوحدات IoT Edge الوصول إليها. على سبيل المثال، /var/aziot/ الدليل.

    # If the certificate and keys directories don't exist, create, set ownership, and set permissions
    sudo mkdir -p /var/aziot/certs
    sudo chown aziotcs:aziotcs /var/aziot/certs
    sudo chmod 755 /var/aziot/certs
    
    sudo mkdir -p /var/aziot/secrets
    sudo chown aziotks:aziotks /var/aziot/secrets
    sudo chmod 700 /var/aziot/secrets
    
    # Copy certificate and private key into the correct directory
    sudo cp my-cert.pem /var/aziot/certs
    sudo cp my-private-key.pem /var/aziot/secrets
    
  3. منح الملكية لخدمة aziotcs شهادة IoT Edge وخدمة aziotks المفتاح للشهادة والمفتاح الخاص، على التوالي.

    # Give aziotcs ownership to certificate
    # Read and write for aziotcs, read-only for others
    sudo chown aziotcs:aziotcs /var/aziot/certs/my-cert.pem
    sudo chmod 644 /var/aziot/certs/my-cert.pem
    
    # Give aziotks ownership to private key
    # Read and write for aziotks, no permission for others
    sudo chown aziotks:aziotks /var/aziot/secrets/my-private-key.pem
    sudo chmod 600 /var/aziot/secrets/my-private-key.pem
    
  4. في config.toml، ابحث عن القسم ذي الصلة لنوع الشهادة المراد تكوينها. على سبيل المثال، يمكنك البحث عن الكلمة الأساسية cert.

  5. باستخدام المثال من قالب التكوين، قم بتكوين شهادة هوية الجهاز أو ملفات EDGE CA. نمط المثال هو:

    cert = "file:///var/aziot/certs/my-cert.pem"
    pk = "file:///var/aziot/secrets/my-private-key.pem"
    
  6. تطبيق التكوين

    sudo iotedge config apply
    

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

مثال: استخدام ملفات شهادة هوية الجهاز من موفر PKI

طلب شهادة عميل TLS ومفتاح خاص من موفر PKI الخاص بك.

متطلبات شهادة هوية الجهاز:

  • ملحقات شهادة العميل القياسية: extendedKeyUsage = clientAuth keyUsage = critical, digitalSignature
  • المعرفات الرئيسية للمساعدة في التمييز بين إصدار المراجع المصدقة بنفس CN لتناوب شهادة المرجع المصدق.
    • subjectKeyIdentifier = التجزئة
    • authorityKeyIdentifier = keyid:always,issuer:always

تأكد من أن الاسم الشائع (CN) يطابق معرف جهاز IoT Edge المسجل مع IoT Hub أو معرف التسجيل مع DPS. على سبيل المثال، في شهادة هوية الجهاز التالية، Subject: CN = my-device هو الحقل المهم الذي يجب أن يتطابق.

مثال على شهادة هوية الجهاز:

Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 48 (0x30)
        Signature Algorithm: ecdsa-with-SHA256
        Issuer: CN = myPkiCA
        Validity
            Not Before: Jun 28 21:27:30 2022 GMT
            Not After : Jul 28 21:27:30 2022 GMT
        Subject: CN = my-device
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (2048 bit)
                Modulus:
                    00:ad:b0:63:1f:48:19:9e:c4:9d:91:d1:b0:b0:e5:
                    ...
                    80:58:63:6d:ab:56:9f:90:4e:3f:dd:df:74:cf:86:
                    04:af
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Basic Constraints:
                CA:FALSE
            X509v3 Key Usage:
                Digital Signature
            X509v3 Extended Key Usage:
                TLS Web Client Authentication
            X509v3 Subject Key Identifier:
                C7:C2:DC:3C:53:71:B8:42:15:D5:6C:4B:5C:03:C2:2A:C5:98:82:7E
            X509v3 Authority Key Identifier:
                keyid:6E:57:C7:FC:FE:50:09:75:FA:D9:89:13:CB:D2:CA:F2:28:EF:9B:F6

    Signature Algorithm: ecdsa-with-SHA256
         30:45:02:20:3c:d2:db:06:3c:d7:65:b7:22:fe:df:9e:11:5b:
         ...
         eb:da:fc:f1:6a:bf:31:63:db:5a:16:02:70:0f:cf:c8:e2
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

تلميح

للاختبار دون الوصول إلى ملفات الشهادات المقدمة من PKI، راجع إنشاء شهادات تجريبية لاختبار ميزات الجهاز لإنشاء شهادة هوية جهاز غير إنتاج قصيرة الأجل ومفتاح خاص.

مثال التكوين عند التوفير مع IoT Hub:

[provisioning]
source = "manual"
# ...
[provisioning.authentication]
method = "x509"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

مثال التكوين عند التوفير مع DPS:

[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

identity_cert = "file:///var/aziot/device-id.pem"
identity_pk = "file:///var/aziot/device-id.key.pem"

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

إدارة المرجع المصدق ل Edge

يحتوي Edge CA على وضعين مختلفين:

  • التشغيل السريع هو السلوك الافتراضي. التشغيل السريع هو للاختبار وليس مناسبا للإنتاج.
  • يتطلب وضع الإنتاج توفير المصدر الخاص بك لشهادة المرجع المصدق Edge والمفتاح الخاص.

التشغيل السريع ل Edge CA

للمساعدة في بدء الاستخدام، يقوم IoT Edge تلقائيا بإنشاء شهادة المرجع المصدق ل Edge عند البدء لأول مرة بشكل افتراضي. هذه الشهادة الموقعة ذاتيا مخصصة فقط لسيناريوهات التطوير والاختبار، وليس الإنتاج. بشكل افتراضي، تنتهي صلاحية الشهادة بعد 90 يوما. يمكن تكوين انتهاء الصلاحية. يشار إلى هذا السلوك باسم quickstart Edge CA.

يتيح edgeHub Quickstart Edge CA ووحدات IoT Edge النمطية الأخرى الحصول على شهادة خادم صالحة عند تثبيت IoT Edge لأول مرة بدون تكوين. الشهادة مطلوبة لأن edgeHub الوحدات النمطية أو أجهزة انتقال البيانات من الخادم تحتاج إلى إنشاء قنوات اتصال آمنة. بدون التشغيل السريع ل Edge CA، سيكون البدء أصعب بكثير لأنك ستحتاج إلى توفير شهادة خادم صالحة من موفر PKI أو مع أدوات مثل openssl.

هام

لا تستخدم المرجع المصدق ل Edge للتشغيل السريع أبدا لأن الشهادة التي تم إنشاؤها محليا فيها غير متصلة ب PKI.

يتم اشتقاق أمان الهوية المستندة إلى الشهادات من PKI (البنية الأساسية) التي يتم تشغيلها بشكل جيد حيث تكون الشهادة (المستند) مكونا فقط. تمكن PKI التي تعمل بشكل جيد من تعريف سياسات الأمان وتطبيقها وإدارتها وإنفاذها لتشمل على سبيل المثال لا الحصر إصدار الشهادات وإبطالها وإدارة دورة الحياة.

تخصيص مدة البقاء للتشغيل السريع ل Edge CA

لتكوين انتهاء صلاحية الشهادة إلى شيء آخر غير 90 يوما الافتراضية، أضف القيمة بالأيام إلى قسم شهادة Edge CA (التشغيل السريع) من ملف التكوين.

[edge_ca]
auto_generated_edge_ca_expiry_days = 180

احذف محتويات /var/lib/aziot/certd/certs المجلدين و /var/lib/aziot/keyd/keys لإزالة أي شهادات تم إنشاؤها مسبقا ثم قم بتطبيق التكوين.

تجديد التشغيل السريع ل Edge CA

بشكل افتراضي، يقوم IoT Edge تلقائيا بتجديد شهادة المرجع المصدق ل Edge عند 80٪ من عمر الشهادة. على سبيل المثال، إذا كانت الشهادة لها مدة بقاء 90 يوما، يقوم IoT Edge تلقائيا بإعادة إنشاء شهادة المرجع المصدق ل Edge في 72 يوما من الإصدار.

لتغيير منطق التجديد التلقائي، أضف الإعدادات التالية إلى قسم شهادة المرجع المصدق Edge في config.toml. على سبيل المثال:

[edge_ca.auto_renew]
rotate_key = true
threshold = "70%"
retry = "2%"

المرجع المصدق Edge في الإنتاج

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

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

تنبيه

لا يمكن أن يتطابق الاسم الشائع (CN) لشهادة Edge CA مع معلمة اسم مضيف الجهاز المحددة في ملف تكوين الجهاز config.toml أو معرف الجهاز المسجل في IoT Hub.

التخطيط لتجديد المرجع المصدق ل Edge

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

لتقليل التأثيرات السلبية المحتملة لإعادة تشغيل الوحدة النمطية، خطط لتجديد شهادة المرجع المصدق Edge في وقت محدد (على سبيل المثال، threshold = "10d") وإعلام المعالين بالحل حول وقت التعطل.

مثال: استخدام ملفات شهادة المرجع المصدق Edge من موفر PKI

طلب الملفات التالية من موفر PKI الخاص بك:

  • شهادة المرجع المصدق الجذر ل PKI
  • شهادة إصدار/CA والمفتاح الخاص المقترن

لكي تصبح شهادة المرجع المصدق (CA) المصدرة هي Edge CA، يجب أن يكون لها هذه الملحقات:

subjectKeyIdentifier = hash
authorityKeyIdentifier = keyid:always
basicConstraints = critical, CA:TRUE, pathlen:0
keyUsage = critical, digitalSignature, keyCertSign

مثال على شهادة المرجع المصدق ل Edge الناتج:

openssl x509 -in my-edge-ca-cert.pem -text
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 4098 (0x1002)
        Signature Algorithm: sha256WithRSAEncryption
        Issuer: CN = myPkiCA
        Validity
            Not Before: Aug 27 00:00:50 2022 GMT
            Not After : Sep 26 00:00:50 2022 GMT
        Subject: CN = my-edge-ca.ca
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                RSA Public-Key: (4096 bit)
                Modulus:
                    00:e1:cb:9c:c0:41:d2:ee:5d:8b:92:f9:4e:0d:3e:
                    ...
                    25:f5:58:1e:8c:66:ab:d1:56:78:a5:9c:96:eb:01:
                    e4:e3:49
                Exponent: 65537 (0x10001)
        X509v3 extensions:
            X509v3 Subject Key Identifier:
                FD:64:48:BB:41:CE:C1:8A:8A:50:9B:2B:2D:6E:1D:E5:3F:86:7D:3E
            X509v3 Authority Key Identifier:
                keyid:9F:E6:D3:26:EE:2F:D7:84:09:63:84:C8:93:72:D5:13:06:8E:7F:D1
            X509v3 Basic Constraints: critical
                CA:TRUE, pathlen:0
            X509v3 Key Usage: critical
                Digital Signature, Certificate Sign
    Signature Algorithm: sha256WithRSAEncryption
         20:c9:34:41:a3:a4:8e:7c:9c:6e:17:f5:a6:6f:e5:fc:6e:59:
         ...
         7c:20:5d:e5:51:85:4c:4d:f7:f8:01:84:87:27:e3:76:65:47:
         9e:6a:c3:2e:1a:f0:dc:9d
-----BEGIN CERTIFICATE-----
MIICdTCCAhugAwIBAgIBMDAKBggqhkjOPQQDAjAXMRUwEwYDVQQDDAxlc3RFeGFt
...
354RWw+eLOpQSkTqXxzjmfw/kVOOAQIhANvRmyCQVb8zLPtqdOVRkuva/PFqvzFj
21oWAnAPz8ji
-----END CERTIFICATE-----

بمجرد استلام أحدث الملفات، قم بتحديث حزمة الثقة:

trust_bundle_cert = "file:///var/aziot/root-ca.pem"

ثم قم بتكوين IoT Edge لاستخدام الشهادة وملفات المفاتيح الخاصة:

[edge_ca]
cert = "file:///var/aziot/my-edge-ca-cert.pem"
pk = "file:///var/aziot/my-edge-ca-private-key.key.pem"

إذا كنت قد استخدمت أي شهادات أخرى ل IoT Edge على الجهاز من قبل، فاحذف الملفات في /var/lib/aziot/certd/certs والمفاتيح الخاصة المقترنة بالشهادات (وليس جميع المفاتيح) في /var/lib/aziot/keyd/keys. يعيد IoT Edge إنشائها باستخدام شهادة المرجع المصدق الجديدة التي قدمتها.

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

الإدارة التلقائية للشهادات باستخدام خادم EST

يمكن أن يتفاعل IoT Edge مع خادم التسجيل عبر النقل الآمن (EST) لإصدار الشهادة تلقائيا وتجديدها. يوصى باستخدام EST للإنتاج لأنه يحل محل الحاجة إلى إدارة الشهادات اليدوية، والتي يمكن أن تكون محفوفة بالمخاطر وعرضة للخطأ. يمكن تكوينه عالميا وتجاوزه لكل نوع شهادة.

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

  1. الحصول على حق الوصول إلى خادم EST. إذا لم يكن لديك خادم EST، فاستخدم أحد الخيارات التالية لبدء الاختبار:

  2. في ملف config.tomlتكوين جهاز IoT Edge، قم بتكوين المسار إلى شهادة جذر موثوق بها يستخدمها IoT Edge للتحقق من صحة شهادة TLS لخادم EST. هذه الخطوة اختيارية إذا كان خادم EST لديه شهادة TLS الجذر الموثوق بها بشكل عام.

    [cert_issuance.est]
    trusted_certs = [
       "file:///var/aziot/root-ca.pem",
    ]
    
  3. توفير عنوان URL افتراضي لخادم EST. في config.toml، أضف القسم التالي مع عنوان URL لخادم EST:

    [cert_issuance.est.urls]
    default = "https://example.org/.well-known/est"
    
  4. لتكوين شهادة EST للمصادقة، أضف القسم التالي مع المسار إلى الشهادة والمفتاح الخاص:

    [cert_issuance.est.auth]
    bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
    bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"
    
    [cert_issuance.est.identity_auto_renew]
    rotate_key = true
    threshold = "80%"
    retry = "4%"
    
  5. تطبيق تغييرات التكوين.

    sudo iotedge config apply
    

يتم تغطية الإعدادات في [cert_issuance.est.identity_auto_renew] في القسم التالي.

مصادقة اسم المستخدم وكلمة المرور

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

[cert_issuance.est.auth]
username = "username"
password = "password"

تكوين معلمات التجديد التلقائي

بدلا من إدارة ملفات الشهادات يدويا، يتمتع IoT Edge بالقدرة المضمنة على الحصول على الشهادات وتجديدها قبل انتهاء الصلاحية. يتطلب تجديد الشهادة أسلوب إصدار يمكن ل IoT Edge إدارته. التسجيل عبر خادم النقل الآمن (EST) هو أسلوب إصدار واحد، ولكن يمكن ل IoT Edge أيضا تجديد المرجع المصدق للتشغيل السريع تلقائيا بشكل افتراضي. يتم تكوين تجديد الشهادة لكل نوع من أنواع الشهادات.

  1. في config.toml، ابحث عن القسم ذي الصلة لنوع الشهادة المراد تكوينها. على سبيل المثال، يمكنك البحث عن الكلمة الأساسية auto_renew.

  2. باستخدام المثال من قالب التكوين، قم بتكوين شهادة هوية الجهاز أو شهادات هوية Edge CA أو EST. نمط المثال هو:

    [REPLACE_WITH_CERT_TYPE]
    # ...
    method = "est"
    # ...
    
    [REPLACE_WITH_CERT_TYPE.auto_renew]
    rotate_key = true
    threshold = "80%" 
    retry = "4%"
    
  3. تطبيق التكوين

    sudo iotege config apply
    

يسرد الجدول التالي ما يفعله كل خيار في auto_renew :

المعلمة ‏‏الوصف‬
rotate_key يتحكم في ما إذا كان يجب تدوير المفتاح الخاص عند تجديد IoT Edge للشهادة.
threshold تعيين الوقت الذي يجب أن يبدأ فيه IoT Edge في تجديد الشهادة. يمكن تحديده على النحو التالي:
- النسبة المئوية: عدد صحيح بين 0 متبوعا 100 ب %. يبدأ التجديد بالنسبة لعمر الشهادة. على سبيل المثال، عند التعيين إلى 80%، تبدأ الشهادة الصالحة لمدة 100 يوم التجديد في 20 يوما قبل انتهاء صلاحيتها.
- الوقت المطلق: عدد صحيح متبوعا ب min (دقائق) أو day (أيام). يبدأ التجديد بالنسبة لوقت انتهاء صلاحية الشهادة. على سبيل المثال، عند التعيين إلى 4day لمدة أربعة أيام أو 10min لمدة 10 دقائق، تبدأ الشهادة في التجديد في ذلك الوقت قبل انتهاء الصلاحية. لتجنب التكوين الخاطئ غير المقصود حيث threshold يكون أكبر من عمر الشهادة، نوصي باستخدام النسبة المئوية بدلا من ذلك كلما أمكن ذلك.
retry يتحكم في عدد المرات التي يجب فيها إعادة محاولة التجديد عند الفشل. مثل threshold، يمكن تحديده بشكل مماثل كنسبة مئوية أو وقت مطلق باستخدام نفس التنسيق.

مثال: تجديد شهادة هوية الجهاز تلقائيا باستخدام EST

لاستخدام EST وIoT Edge لإصدار شهادة هوية الجهاز تلقائيا وتجديدها، وهو ما يوصى به للإنتاج، يجب توفير IoT Edge كجزء من مجموعة التسجيل المستندة إلى DPS CA. على سبيل المثال:

## DPS provisioning with X.509 certificate
[provisioning]
source = "dps"
# ...
[provisioning.attestation]
method = "x509"
registration_id = "my-device"

[provisioning.attestation.identity_cert]
method = "est"
common_name = "my-device"

[provisioning.attestation.identity_cert.auto_renew]
rotate_key = true
threshold = "80%"
retry = "4%"

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

لا تستخدم EST أو auto_renew مع أساليب أخرى للتزويد، بما في ذلك تزويد X.509 اليدوي مع IoT Hub وDPS مع التسجيل الفردي. لا يمكن ل IoT Edge تحديث بصمة إبهام الشهادة في Azure عند تجديد الشهادة، مما يمنع IoT Edge من إعادة الاتصال.

مثال: إدارة EDGE CA التلقائية مع EST

استخدم الإصدار التلقائي من EST Edge CA وتجديده للإنتاج. بمجرد تكوين خادم EST، يمكنك استخدام الإعداد العمومي، أو تجاوزه على غرار هذا المثال:

[edge_ca]
method = "est"

common_name = "my-edge-CA"
url = "https://ca.example.org/.well-known/est"

bootstrap_identity_cert = "file:///var/aziot/my-est-id-bootstrap-cert.pem"
bootstrap_identity_pk = "file:///var/aziot/my-est-id-bootstrap-pk.key.pem"

[edge_ca.auto_renew]
rotate_key = true
threshold = "90%"
retry = "2%"

شهادات خادم الوحدة النمطية

يصدر Edge Daemon خادم الوحدة النمطية وشهادات الهوية لاستخدامها من قبل وحدات Edge النمطية. يبقى من مسؤولية وحدات Edge النمطية تجديد هويتها وشهادات الخادم حسب الحاجة.

التجديد

قد يتم إصدار شهادات الخادم من شهادة المرجع المصدق Edge. بغض النظر عن طريقة الإصدار، يجب تجديد هذه الشهادات بواسطة الوحدة النمطية. إذا قمت بتطوير وحدة نمطية مخصصة، يجب عليك تنفيذ منطق التجديد في الوحدة النمطية الخاصة بك.

تدعم الوحدة النمطية edgeHub ميزة تجديد الشهادة. يمكنك تكوين تجديد شهادة خادم وحدة edgeHub النمطية باستخدام متغيرات البيئة التالية:

  • ServerCertificateRenewAfterInMs: يعين المدة بالمللي ثانية عند تجديد شهادة خادم edgeHub بغض النظر عن وقت انتهاء صلاحية الشهادة.
  • MaxCheckCertExpiryInMs: يعين المدة بالمللي ثانية عندما تتحقق خدمة edgeHub من انتهاء صلاحية شهادة خادم edgeHub . إذا تم تعيين المتغير، يحدث الفحص بغض النظر عن وقت انتهاء صلاحية الشهادة.

لمزيد من المعلومات حول متغيرات البيئة، راجع متغيرات البيئة EdgeHub وEdgeAgent.

التغييرات في 1.2 والإحدث

  • تمت إعادة تسمية شهادة المرجع المصدق للجهاز كشهادة المرجع المصدق ل Edge.
  • تم إهمال شهادة CA لحمل العمل. الآن يقوم مدير أمان IoT Edge بإنشاء شهادة خادم مركز edgeHub IoT Edge مباشرة من شهادة المرجع المصدق ل Edge، دون شهادة CA لحمل العمل الوسيط بينهما.
  • يحتوي ملف التكوين الافتراضي على اسم وموقع جديدين، من /etc/iotedge/config.yaml إلى /etc/aziot/config.toml بشكل افتراضي. iotedge config import يمكن استخدام الأمر للمساعدة في ترحيل معلومات التكوين من الموقع القديم وبناء الجملة إلى الموقع الجديد.

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

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