شَهادات X.509

شهادات X.509 هي مستندات رقمية تمثل مستخدمًا، أو كمبيوترًا، أو خدمة، أو جهازًا. يصدر المرجع المصدق (CA) أو المرجع المصدق التابع أو مرجع التسجيل شهادات X.509. تحتوي الشهادات على المفتاح العام لموضوع الشهادة. لا تحتوي على المفتاح الخاص للموضوع، والذي يجب تخزينه بشكل آمن. يوثق RFC 5280 شهادات المفتاح العام، بما في ذلك حقولها وملحقاتها. يتم توقيع شهادات المفتاح العام رقميا وتحتوي عادة على المعلومات التالية:

  • معلومات حول موضوع الشهادة
  • المفتاح العمومي المقابل مع المفتاح الخاص للموضوع
  • معلومات حول الهيئة المصدقة المصدرة
  • التشفير المدعوم و/أو خوارزميات التوقيع الرقمي
  • معلومات لتحديد حالة إبطال وصحة الشهادة

حقول الشهادة

هناك ثلاثة إصدارات تزايدية من معيار شهادة X.509، وأضاف كل إصدار لاحق حقول شهادة إلى المعيار:

  • يتبع الإصدار 1 (v1)، المنشور في عام 1988، معيار X.509 الأولي للشهادات.
  • يضيف الإصدار 2 (v2)، المنشور في عام 1993، حقلين إلى الحقول المضمنة في الإصدار 1.
  • يمثل الإصدار 3 (v3)، المنشور في عام 2008، الإصدار الحالي من معيار X.509. يضيف هذا الإصدار دعما لملحقات الشهادات.

يقصد بهذا القسم كمرجع عام لحقول الشهادات وملحقات الشهادات المتوفرة في شهادات X.509. لمزيد من المعلومات حول حقول الشهادات وملحقات الشهادات، بما في ذلك أنواع البيانات والقيود والتفاصيل الأخرى، راجع مواصفات RFC 5280 .

حقول الإصدار 1

يصف الجدول التالي حقول شهادة الإصدار 1 لشهادات X.509. تتوفر جميع الحقول المضمنة في هذا الجدول في إصدارات شهادات X.509 اللاحقة.

الاسم الوصف
إصدار عدد صحيح يحدد رقم إصدار الشهادة.
الرقم التسلسلي عدد صحيح يمثل الرقم الفريد لكل شهادة صادرة عن مرجع مصدق (CA).
التوقيع معرف خوارزمية التشفير المستخدمة من قبل المرجع المصدق لتوقيع الشهادة. تتضمن القيمة كلا من معرف الخوارزمية وأي معلمات اختيارية تستخدمها تلك الخوارزمية، إن أمكن.
مُصدر الشهادة الاسم المميز (DN) لمرجع مصدق إصدار الشهادة.
الصلاحية الفترة الزمنية الشاملة التي تكون الشهادة صالحة لها.
Subject الاسم المميز (DN) لموضوع الشهادة.
معلومات المفتاح العام للموضوع المفتاح العام المملوك لموضوع الشهادة.

حقول الإصدار 2

يصف الجدول التالي الحقول المضافة للإصدار 2، والتي تحتوي على معلومات حول مصدر الشهادة. ومع ذلك، نادرًا ما تستخدم تلك الحقول. تتوفر جميع الحقول المضمنة في هذا الجدول في إصدارات شهادات X.509 اللاحقة.

الاسم الوصف
المعرف الفريد لمصدر الإصدار معرف فريد يمثل المرجع المصدق المصدر، كما هو محدد من قبل المرجع المصدق المصدر.
المعرف الفريد للموضوع معرف فريد يمثل موضوع الشهادة، كما هو محدد من قبل المرجع المصدق المصدر.

حقول الإصدار 3

يصف الجدول التالي الحقل المضاف للإصدار 3، الذي يمثل مجموعة من ملحقات شهادات X.509.

الاسم الوصف
ملحقات مجموعة من ملحقات الشهادات القياسية والمحددة بالإنترنت. لمزيد من المعلومات حول ملحقات الشهادات المتوفرة لشهادات X.509 v3، راجع ملحقات الشهادة.

ملحقات الشهادة

توفر ملحقات الشهادات، المقدمة مع الإصدار 3، أساليب لربط المزيد من السمات بالمستخدمين أو المفاتيح العامة وإدارة العلاقات بين المراجع المصدقة. لمزيد من المعلومات حول ملحقات الشهادات، راجع قسم ملحقات الشهادة من مواصفات RFC 5280 .

الملحقات القياسية

يحدد معيار X.509 الملحقات المضمنة في هذا القسم، لاستخدامها في البنية الأساسية للمفتاح العام للإنترنت (PKI).

الاسم الوصف
معرف مفتاح المرجع معرف يمثل إما موضوع الشهادة والرقم التسلسلي لشهادة المرجع المصدق التي أصدرت هذه الشهادة، أو تجزئة المفتاح العام للمرجع المصدق المصدر.
معرف مفتاح الموضوع تجزئة للمفتاح العام للشهادة الحالية.
استخدام المفتاح قيمة تم تعيينها بت تحدد الخدمات التي يمكن استخدام الشهادة لها.
فترة استخدام المفتاح الخاص فترة صلاحية جزء المفتاح الخاص لزوج المفاتيح.
نُهج الشهادات مجموعة من معلومات النهج، تستخدم للتحقق من صحة موضوع الشهادة.
تعيينات النهج مجموعة من تعيينات النهج، كل منها يقوم بتعيين نهج في مؤسسة واحدة إلى نهج في مؤسسة أخرى.
الاسم البديل للموضوع مجموعة من الأسماء البديلة للموضوع.
الاسم البديل لمصدر الإصدار مجموعة من الأسماء البديلة للمرجع المصدق المصدر.
سمات دليل الموضوع مجموعة من السمات من دليل X.500 أو LDAP.
القيود الأساسية مجموعة من القيود التي تسمح للشهادة بتعيين ما إذا كانت صادرة إلى مرجع مصدق أو لمستخدم أو كمبيوتر أو جهاز أو خدمة. يتضمن هذا الملحق أيضًا تقييد طول مسار الضي يحد من عدد الهيئات المصدقة التابعة التي قد توجد.
قيود الاسم مجموعة من القيود التي تحدد مساحات الأسماء المسموح بها في شهادة صادرة عن CA.
قيود النهج مجموعة من القيود التي يمكن استخدامها لحظر تعيينات النهج بين CAs.
استخدام المفتاح الموسع مجموعة من قيم الغرض الرئيسي التي تشير إلى كيفية استخدام المفتاح العام للشهادة، بما يتجاوز الأغراض المحددة في ملحق استخدام المفتاح .
نقاط توزيع CRL مجموعة من عناوين URL حيث يتم نشر قائمة إبطال الشهادات الأساسية (CRL).
منع أي نهج يمنع استخدام كافة نهج الإصدار OID (2.5.29.32.0) في شهادات المرجع المصدق التابعة
أحدث قائمة إبطال الشهادات يحتوي هذا الملحق، المعروف أيضا باسم نقطة توزيع Delta CRL، على عنوان URL واحد أو أكثر حيث يتم نشر delta CRL الصادر من CA.

ملحقات الإنترنت الخاصة

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

الاسم الوصف
الوصول إلى معلومات المرجع مجموعة من الإدخالات التي تصف تنسيق وموقع المعلومات الإضافية التي يوفرها المرجع المصدق المصدر.
الوصول إلى معلومات الموضوع مجموعة من الإدخالات التي تصف تنسيق وموقع المعلومات الإضافية التي يوفرها موضوع الشهادة.

تنسيقات الشهادات

يمكن حفظ الشهادات بتنسيقات مختلفة. تستخدم مصادقة Azure IoT Hub تنسيقات البريد Privacy-Enhanced (PEM) وExchange Information Exchange (PFX). يصف الجدول التالي الملفات والتنسيقات شائعة الاستخدام المستخدمة لتمثيل الشهادات.

تنسيق الوصف
شهادة ثنائية شهادة ثنائية نموذجية أولية باستخدام ترميز قواعد الترميز المميزة (DER) ASN.1.
تنسيق ASCII PEM يحتوي ملف شهادة PEM (.pem) على شهادة مشفرة ب Base64 تبدأ ب -----BEGIN CERTIFICATE----- وتنتهي ب -----END CERTIFICATE-----. أحد التنسيقات الأكثر شيوعا لشهادات X.509، يتطلب مركز IoT تنسيق PEM عند تحميل شهادات معينة، مثل شهادات الجهاز.
مفتاح ASCII PEM يحتوي على مفتاح DER مشفر ب Base64، اختياريا مع المزيد من بيانات التعريف حول الخوارزمية المستخدمة لحماية كلمة المرور.
شهادة PKCS #7 تنسيق مصمم لنقل البيانات الموقعة أو المشفرة. وقد تشمل سلسلة الشهادة بأكملها. يحدد RFC 2315 هذا التنسيق.
مفتاح PKCS #8 تنسيق مخزن مفاتيح خاص. يحدد RFC 5208 هذا التنسيق.
PKCS #12 المفتاح والشهادة تنسيق معقد يمكنه تخزين وحماية مفتاح وسلسلة الشهادات بالكامل. يتم استخدامه بشكل شائع مع ملحق .p12 أو .pfx. PKCS #12 مرادف لتنسيق PFX. يحدد RFC 7292 هذا التنسيق.

الشهادات الموقعة ذاتيًا

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

هام

نوصي باستخدام الشهادات الموقعة من قبل هيئة الشهادات المصدرة (CA)، حتى لأغراض الاختبار. لا تستخدم أبدا الشهادات الموقعة ذاتيا في الإنتاج.

إنشاء شهادة موقَّعة ذاتيًا

يمكنك استخدام OpenSSL لإنشاء شهادات موقعة ذاتيا. توضح لك الخطوات التالية كيفية تشغيل أوامر OpenSSL في bash shell لإنشاء شهادة موقعة ذاتيا واسترداد بصمة شهادة يمكن استخدامها لمصادقة جهازك في IoT Hub.

ملاحظة

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

  1. قم بتشغيل الأمر التالي لإنشاء مفتاح خاص وإنشاء ملف مفتاح خاص (.key) مشفر بواسطة PEM، واستبدال العناصر النائبة التالية بالقيم المقابلة لها. يستخدم المفتاح الخاص الذي تم إنشاؤه بواسطة الأمر التالي خوارزمية RSA مع تشفير 2048 بت.

    {KeyFile}. اسم ملف المفتاح الخاص بك.

    openssl genpkey -out {KeyFile} -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
  2. قم بتشغيل الأمر التالي لإنشاء طلب توقيع شهادة PKCS #10 (CSR) وإنشاء ملف CSR (.csr)، واستبدال العناصر النائبة التالية بالقيم المقابلة لها. تأكد من تحديد معرف الجهاز لجهاز IoT للشهادة الموقعة ذاتيا عند مطالبتك بذلك.

    {KeyFile}. اسم ملف المفتاح الخاص بك.

    {CsrFile}. اسم ملف CSR الخاص بك.

    {DeviceID}. اسم جهاز IoT الخاص بك.

    openssl req -new -key {KeyFile} -out {CsrFile}
    
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:{DeviceID}
    Email Address []:.
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:.
    An optional company name []:.
    
  3. قم بتشغيل الأمر التالي لفحص CSR والتحقق من صحته، واستبدال العناصر النائبة التالية بالقيم المقابلة لها.

    {CsrFile}. اسم ملف الشهادة.

    openssl req -text -in {CsrFile} -verify -noout
    
  4. قم بتشغيل الأمر التالي لإنشاء شهادة موقعة ذاتيا وإنشاء ملف شهادة مشفرة بواسطة PEM (.crt)، واستبدال العناصر النائبة التالية بالقيم المقابلة لها. يقوم الأمر بتحويل وتوقيع CSR باستخدام المفتاح الخاص بك، وإنشاء شهادة موقعة ذاتيا تنتهي صلاحيتها في 365 يوما.

    {KeyFile}. اسم ملف المفتاح الخاص بك.

    {CsrFile}. اسم ملف CSR الخاص بك.

    {CrtFile}. اسم ملف الشهادة.

    openssl x509 -req -days 365 -in {CsrFile} -signkey {KeyFile} -out {CrtFile}
    
  5. قم بتشغيل الأمر التالي لاسترداد بصمة الشهادة، مع استبدال العناصر النائبة التالية بالقيم المقابلة لها. بصمة الشهادة هي قيمة تجزئة محسوبة فريدة لتلك الشهادة. تحتاج إلى بصمة الإصبع لتكوين جهاز IoT في IoT Hub للاختبار.

    {CrtFile}. اسم ملف الشهادة.

    openssl x509 -in {CrtFile} -noout -fingerprint
    

التحقق من الشهادة بعد التحميل يدوياً

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

  1. حدد الشهادة لعرض مربع الحوار Certificate Details.

  2. حدد Generate Verification Code في مربع الحوار.

    لقطة شاشة تعرض مربع حوار تفاصيل الشهادة.

  3. انسخ رمز التحقق إلى الحافظة. يجب استخدام رمز التحقق هذا كموضوع الشهادة في الخطوات اللاحقة. على سبيل المثال، إذا كان رمز التحقق هو 75B86466DA34D2B04C0C4C9557A119687ADAE7D4732BDDB3، أضف ذلك كموضوع لشهادتك كما هو موضح في الخطوة التالية.

  4. تتوافر ثلاث طرق لإنشاء شهادة تحقق:

    • إذا كنت تستخدم البرنامج النصي PowerShell الذي توفره Microsoft، فقم بتشغيل New-CACertsVerificationCert "<verification code>" لإنشاء شهادة باسم VerifyCert4.cer، واستبدالها <verification code> برمز التحقق الذي تم إنشاؤه مسبقا. لمزيد من المعلومات، راجع إدارة شهادات CA الاختبارية للعينات والبرامج التعليمية في مستودع GitHub ل Azure IoT Hub Device SDK ل C.

    • إذا كنت تستخدم البرنامج النصي Bash الذي توفره Microsoft، فقم بتشغيل ./certGen.sh create_verification_certificate "<verification code>" لإنشاء شهادة باسم verification-code.cert.pem، مع <verification code> استبدال برمز التحقق الذي تم إنشاؤه مسبقا. لمزيد من المعلومات، راجع إدارة شهادات CA الاختبارية للعينات والبرامج التعليمية في مستودع GitHub ل Azure IoT Hub Device SDK ل C.

    • إذا كنت تستخدم OpenSSL لإنشاء شهاداتك، فيجب عليك أولا إنشاء مفتاح خاص، ثم إنشاء ملف طلب توقيع شهادة (CSR). في المثال التالي، استبدل <verification code> برمز التحقق الذي تم إنشاؤه مسبقا:

    openssl genpkey -out pop.key -algorithm RSA -pkeyopt rsa_keygen_bits:2048
    
    openssl req -new -key pop.key -out pop.csr
    
    -----
    Country Name (2 letter code) [XX]:.
    State or Province Name (full name) []:.
    Locality Name (eg, city) [Default City]:.
    Organization Name (eg, company) [Default Company Ltd]:.
    Organizational Unit Name (eg, section) []:.
    Common Name (eg, your name or your server hostname) []:<verification code>
    Email Address []:
    
    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:
    An optional company name []:
    

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

    openssl ca -config rootca.conf -in pop.csr -out pop.crt -extensions client_ext
    

    لمزيد من المعلومات، راجع البرنامج التعليمي - إنشاء الشهادات وتحميلها للاختبار.

  5. حدد الشهادة الجديدة في العرض Certificate Details.

  6. بعد تحميل الشهادة، حدد Verify. يجب أن تتغير حالة الشهادة إلى تم التحقق منها.

للحصول على مزيدٍ من المعلومات

لمزيد من المعلومات حول شهادات X.509 وكيفية استخدامها في IoT Hub، راجع المقالات التالية: