بنية شهادة X.509
افحص الحقول الموجودة داخل الشهادة الرقمية — الموضوع والجهة المصدّرة وفترة الصلاحية والمفتاح العام والامتدادات — وافهم معنى كل منها.
بنية شهادة X.509 درس مجاني في Security+ Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Security+ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Security+ Academy 4 دروس في المجموع.
ما شهادة X.509؟
شهادة X.509 هي مستند رقمي موحّد يربط مفتاحًا عامًا بهوية. ويحدد معيار X.509 (المعرّف في RFC 5280) التنسيق والحقول والامتدادات المستخدمة في الشهادات الرقمية حول العالم. تتبع كل شهادة TLS/HTTPS، وشهادة البريد الإلكتروني S/MIME، وشهادة توقيع التعليمات البرمجية، وشهادة مصادقة العميل تنسيق X.509. ويساعدكم فهم بنية شهادة X.509 على قراءة معلومات الشهادة، وتشخيص أخطاء الشهادات، واتخاذ قرارات مدروسة بشأن نشر الشهادات والتحقق منها.
# View an X.509 certificate in human-readable form
openssl x509 -in certificate.pem -noout -text
# Or view a website's certificate directly
openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -textالإصدار والرقم التسلسلي والخوارزمية
تحدد الحقول الأولى في شهادة X.509 هويتها الأساسية. الإصدار: يُعد X.509 v3 المعيار الحالي (وقد أضاف الإصدار v3 الامتدادات). الرقم التسلسلي: عدد صحيح فريد تعيّنه جهة إصدار الشهادات المصدرة، ويحدد هذه الشهادة تحديدًا — ويُستخدم في CRL (قوائم الإبطال) لإبطال شهادات فردية. خوارزمية التوقيع: تحدد الخوارزمية التي تستخدمها جهة إصدار الشهادات لتوقيع الشهادة (مثل sha256WithRSAEncryption أو ecdsa-with-SHA256). يظهر هذا الحقل مرتين: مرة في TBSCertificate ومرة في غلاف التوقيع الخارجي — ويجب أن تتطابق القيمتان.
# Certificate header fields
# Version: 3 (v3 = supports extensions)
# Serial Number:
# 30:4b:7e:bf:36:e3:46:a8
# Signature Algorithm: sha256WithRSAEncryption
# The serial number is used for revocation:
# CRL lists serial numbers of revoked certificates from this CAحقلا المُصدر والموضوع
يحدد حقلا المُصدر والموضوع، وهما من أهم حقول الشهادة، الأطراف المعنية. يحدد حقل Issuer جهة إصدار الشهادات التي وقّعت الشهادة (مثل CN=DigiCert Global CA G2, O=DigiCert Inc, C=US). ويحدد حقل Subject الكيان الذي أُصدرت له الشهادة (مثل CN=*.example.com, O=Example Corp, C=US). بالنسبة إلى شهادة TLS، يحدد الاسم الشائع (CN) للموضوع أو امتداد الاسم البديل للموضوع (SAN) اسم النطاق أو أسماء النطاقات التي تكون الشهادة صالحة لها. ويطابق المتصفح اسم المضيف المطلوب مع هذه الحقول.
# Extract Issuer and Subject
openssl x509 -in cert.pem -noout -subject -issuer
# subject=CN = *.google.com, O = Google LLC, L = Mountain View, ST = California, C = US
# issuer=CN = GTS CA 1C3, O = Google Trust Services LLC, C = US
# Check Subject Alternative Names (critical for hostname validation)
openssl x509 -in cert.pem -noout -ext subjectAltName
# DNS:*.google.com, DNS:google.comفترة الصلاحية: notBefore وnotAfter
تحدد فترة الصلاحية وقت سريان الشهادة. وتتكون من طابعَي زمن: notBefore (لا تكون الشهادة صالحة قبل هذا التاريخ) وnotAfter (تنتهي صلاحية الشهادة بعد هذا التاريخ). ويتحقق عملاء TLS من وقوع الوقت الحالي ضمن هذه الفترة. وتؤدي الشهادات المقدمة خارج فترة صلاحيتها إلى ظهور خطأ في الشهادة لدى المتصفحات، ويجب تجديدها. ومن أفضل الممارسات الحديثة إصدار شهادات قصيرة الأجل (لمدة 90 يومًا، كما تفعل Let's Encrypt) للحد من مخاطر انكشاف المفتاح الخاص إذا اختُرق بين تاريخ الإصدار وانتهاء الصلاحية.
# Check certificate expiry dates
openssl x509 -in cert.pem -noout -dates
# notBefore=Jan 1 00:00:00 2026 GMT
# notAfter=Mar 31 23:59:59 2026 GMT
# Check how many days until expiry
echo | openssl s_client -connect example.com:443 2>/dev/null | \
openssl x509 -noout -enddate
# notAfter=Jun 15 12:00:00 2026 GMTحقل المفتاح العام
تتمثل الحمولة الأساسية للشهادة في حقل معلومات المفتاح العام للموضوع، الذي يحتوي على المفتاح العام الجاري توثيقه ويحدد الخوارزمية المستخدمة معه. في شهادة RSA، يحتوي هذا الحقل على معامل المفتاح العام لـ RSA وأُسّه، إلى جانب طول المفتاح بالبت (2048 أو 4096). وفي شهادة ECC، يحتوي على اسم المنحنى (مثل prime256v1) ونقطة المفتاح العام. ولا تُنشئ جهة إصدار الشهادات زوج المفاتيح هذا؛ إذ ينشئ طالب الشهادة زوج مفاتيحه بنفسه ويرسل المفتاح العام فقط ضمن طلب توقيع الشهادة (CSR).
# Generate a key pair and CSR (Certificate Signing Request)
# First, generate the private key
openssl genrsa -out server.key 2048
# Create a CSR containing the public key and subject info
openssl req -new -key server.key -out server.csr \
-subj '/CN=www.example.com/O=Example Corp/C=US'
# The CSR is sent to the CA for signing
# The CA returns the signed X.509 certificate
# Private key NEVER leaves your possessionامتدادات X.509 v3
قدّم X.509 v3 امتدادات توسّع إمكانات الشهادة بشكل كبير. وقد تكون الامتدادات حرجة (يجب على العميل الذي لا يستطيع معالجة هذا الامتداد رفض الشهادة) أو غير حرجة (يمكن تجاهلها إذا لم يفهمها العميل). وتشمل الامتدادات الرئيسية: الاسم البديل للموضوع (SAN) — أسماء النطاقات أو عناوين IP الإضافية التي تغطيها الشهادة؛ استخدام المفتاح — يقيّد العمليات التي يمكن استخدام المفتاح فيها (التوقيع الرقمي، وتشفير المفتاح)؛ الاستخدام الممتد للمفتاح — يفرض قيودًا إضافية على الغرض (مصادقة خادم TLS، ومصادقة العميل، وتوقيع التعليمات البرمجية)؛ والقيود الأساسية — تشير إلى ما إذا كان الموضوع جهة إصدار شهادات.
# View X.509 v3 extensions
openssl x509 -in cert.pem -noout -text | grep -A 20 'X509v3 extensions'
# X509v3 Key Usage: critical
# Digital Signature, Key Encipherment
# X509v3 Extended Key Usage:
# TLS Web Server Authentication, TLS Web Client Authentication
# X509v3 Subject Alternative Name:
# DNS:example.com, DNS:www.example.com
# X509v3 Basic Constraints: critical
# CA:FALSEالاسم البديل للموضوع (SAN) مقابل الاسم الشائع
كان حقل الاسم الشائع (CN) في حقل Subject المميّز يُستخدم تاريخيًا لاسم النطاق الأساسي. أما الشهادات الحديثة فتستخدم الأسماء البديلة للموضوع (SANs) بدلًا منه، إذ أوقفت المتصفحات مطابقة الأسماء المستندة إلى CN (وفق RFC 2818) لصالح SANs. وتتيح SANs لشهادة واحدة تغطية نطاقات متعددة (شهادات متعددة SAN) أو جميع النطاقات الفرعية لنطاق معين (شهادات أحرف البدل: *.example.com). ولا تغطي أحرف البدل في SAN سوى مستوى واحد — إذ تغطي *.example.com النطاق www.example.com، لكنها لا تغطي sub.www.example.com.
نقطة توزيع CRL وامتداد OCSP
يُخبر امتدادان مهمان العملاء بكيفية التحقق من إبطال شهادة قبل تاريخ انتهاء صلاحيتها. نقاط توزيع CRL (CDP): تحتوي على عناوين URL التي يمكن تنزيل قائمة إبطال الشهادات منها. الوصول إلى معلومات جهة الإصدار (AIA): يحتوي على عنوان URL لمستجيب OCSP (بروتوكول حالة الشهادة عبر الإنترنت) التابع لجهة إصدار الشهادات، لإجراء فحص الإبطال في الوقت الفعلي. ويفضّل العملاء الحديثون OCSP على تنزيل CRL لأن قوائم CRL قد تكون ملفات كبيرة. ويضمن التوقيع الرقمي لجهة إصدار الشهادات على استجابات OCSP حصول العملاء على معلومات أصلية عن حالة الإبطال.
# Check OCSP status of a certificate
openssl ocsp -issuer intermediate_ca.pem \
-cert server_cert.pem \
-url http://ocsp.digicert.com \
-text
# Response shows: good, revoked, or unknown
# server_cert.pem: good
# This Update: Jun 21 00:00:00 2026 GMTتنسيقات الشهادات: PEM وDER وPFX
تأتي شهادات X.509 بتنسيقات ترميز متعددة ستصادفونها عمليًا. PEM (البريد المحسّن للخصوصية): بيانات DER مرمّزة بـ base64 ومحاطة برأسي -----BEGIN CERTIFICATE-----. وهي قابلة للقراءة البشرية وتُستخدم على Linux/Apache/nginx. DER (قواعد الترميز المميّزة): تنسيق ثنائي. ويُستخدم في تطبيقات Java وبعض سياقات Windows. PFX/PKCS#12: تنسيق حاوية يجمع الشهادة وسلسلتها والمفتاح الخاص في ملف واحد محمي بكلمة مرور. ويُستخدم في Windows IIS وعند تصدير الشهادات مع مفاتيحها الخاصة. P7B/PKCS#7: يحتوي على سلسلة الشهادة فقط دون المفتاح الخاص، ويُستخدم في مخازن شهادات Windows.
# Convert between certificate formats
# PEM to DER
openssl x509 -in cert.pem -outform DER -out cert.der
# DER to PEM
openssl x509 -in cert.der -inform DER -outform PEM -out cert.pem
# Export certificate + private key to PFX (for Windows IIS)
openssl pkcs12 -export -in cert.pem -inkey private.key \
-certfile chain.pem -out cert.pfx -passout pass:ExportPasswordشفافية الشهادات (سجلات CT)
شفافية الشهادات (CT) هي إطار يتطلب من جهات إصدار الشهادات تسجيل جميع الشهادات المُصدرة في سجلات يمكن تدقيقها علنًا. ويتيح ذلك لأي شخص مراقبة الشهادات غير المصرح بها التي تُصدر لنطاقاته. ويتطلب Chrome وSafari إدراج شهادات TLS في سجلات CT. ويمثل الطابع الزمني الموقّع للشهادة (SCT) دليلًا على إدراجها في السجل، ويُضمّن في الشهادة أو يُرسل عبر امتداد TLS. وتكشف سجلات CT الإصدار الخاطئ بسرعة — فإذا أصدرت جهة إصدار الشهادات شهادة لنطاقكم على نحو غير صحيح، فستظهر في سجلات مثل crt.sh قبل أن يتمكن المهاجمون من استغلالها.
# Search for all certificates issued for a domain using crt.sh
# This would be done via browser or API:
# https://crt.sh/?q=example.com
# Check CT log inclusion in a certificate
openssl x509 -in cert.pem -noout -text | grep -A 5 'CT Precertificate'
# X509v3 extension: CT Precertificate SCTs (critical)
# Signed Certificate Timestamp:
# Version: v1 (0x0)
# Log ID: A4:B9...توقيع جهة إصدار الشهادات على الشهادة
يتمثل المكوّن الأخير لشهادة X.509 في التوقيع الرقمي لجهة إصدار الشهادات. إذ تحسب جهة إصدار الشهادات تجزئة لجميع بيانات الشهادة (TBSCertificate)، ثم توقّع تلك التجزئة باستخدام مفتاحها الخاص. وهذا التوقيع هو ما يجعل الشهادة جديرة بالثقة — إذ يمكن لأي شخص التحقق منه باستخدام المفتاح العام لجهة إصدار الشهادات (الموجود في شهادة جهة إصدار الشهادات نفسها). ويجب أن تتطابق خوارزمية التوقيع المستخدمة (المدرجة في حقل التوقيع) مع الخوارزمية المحددة سابقًا في الشهادة. ويؤدي أي تعديل على الشهادة بعد توقيعها إلى إبطال التوقيع، مما يضمن سلامة الشهادة.
# Verify that a certificate was signed by a specific CA
openssl verify -CAfile ca_chain.pem server_cert.pem
# server_cert.pem: OK
# If the signature is invalid or the chain is broken:
# server_cert.pem: C = US, O = Example, CN = www.example.com
# error 20 at 0 depth lookup: unable to get local issuer certificateاختبار سريع
اختبروا مدى فهمكم لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.
مراجعة الدرس
تعلمتم في هذا الدرس أن شهادة X.509 تحتوي على الإصدار والرقم التسلسلي والمُصدر والموضوع وفترة الصلاحية والمفتاح العام وامتدادات v3؛ وأن امتداد SAN يتحكم في أسماء المضيفين التي تغطيها الشهادة؛ وأن امتدادي CDP وAIA يشيران إلى نقاط نهاية فحص الإبطال؛ وأن سجلات CT توفر سجلات تدقيق عامة لإصدار الشهادات. بعد ذلك، سنتناول دورة حياة الشهادة وإبطالها.
الأسئلة الشائعة
هل درس «بنية شهادة X.509» مجاني؟
نعم — نص درس «بنية شهادة X.509» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Security+ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Security+ Academy 4 دروس في المجموع.
ماذا ستتعلم في «بنية شهادة X.509»؟
افحص الحقول الموجودة داخل الشهادة الرقمية — الموضوع والجهة المصدّرة وفترة الصلاحية والمفتاح العام والامتدادات — وافهم معنى كل منها. تتمرن على Security+ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Security+ Academy؟
لا تُشترط خبرة سابقة. Security+ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «بنية شهادة X.509»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Security+ Academy هذا؟
نعم. كل درس في Security+ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- الجهات المصدّقة وسلاسل الثقة
- بنية شهادة X.509
- دورة حياة الشهادة وإبطالها
- حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية