شرح شامل ومبسط لمفهوم الشهادات الرقمية واستخداماتها وأمانها
هي بطاقة تعريف إلكترونية تُثبت هوية الشخص أو الجهة التي توقع الملفات أو ترسل رسائل مشفرة.
تشبه جواز السفر ، لكنها رقمية. تحتوي على:
العنصر | الوصف |
---|---|
الاسم | اسم الشخص أو الشركة |
البريد الإلكتروني | المرتبط بالتوقيع |
المفتاح العام (Public Key) | يُستخدم للتحقق من التوقيع أو لتشفير الرسائل |
جهة موثوقة (CA) | تصدر الشهادة وتُؤكد أن صاحبها حقيقي |
تاريخ صلاحية | متى تبدأ وتنتهي الشهادة |
تضمن أن الشخص أو الجهة التي وقعت الملف هي فعلًا من تدعي أنها كذلك.
تُثبت أن الملف لم يتم تغييره أو العبث به بعد التوقيع.
لا يمكن للمرسل أن ينكر لاحقًا أنه هو من وقّع هذا الملف.
إذا كانت الشهادة من جهة موثوقة (CA)، فإن الأنظمة تثق بالتوقيع مباشرة (يظهر لك أخضر).
PDF
(عقود، تقارير، فواتير)
S/MIME
)
HTTPS/SSL/TLS
)
لديك خياران رئيسيان:
Let's Encrypt
للمواقع).OpenSSL
أو GPG
.Adobe Acrobat
عندما تفتح ملف PDF
موقّع:
1. شهادة من جهة موثوقة (CA):
يظهر للمستقبل:
"تم التحقق من التوقيع، التوقيع صالح"
(Signature is Valid and Trusted)
2. شهادة ذاتية التوقيع (Self-Signed):
يظهر تحذير:
"لم يتم التحقق من هوية الموقّع"
(Signer's identity is unknown)
ويحتاج المستلم للضغط على "Trust Signature" يدويًا.
مفيدة للتجارب الشخصية أو بين أطراف تثق ببعضها مسبقًا.
OpenSSL
:# الخطوة 1: توليد مفتاح خاص (احفظه بأمان!)
openssl genrsa -out mykey.pem 2048
# الخطوة 2: توليد شهادة رقمية باستخدام المفتاح الخاص
# سيطلب منك إدخال بيانات مثل الدولة، الاسم، البريد الإلكتروني
openssl req -new -x509 -key mykey.pem -out mycert.pem -days 3650 # صالحة لـ 10 سنوات
الناتج:
mykey.pem
: المفتاح الخاص (سري جدًا )mycert.pem
: الشهادة الرقمية (يمكن نشرها )للشركات والمواقع العامة التي تحتاج ثقة تلقائية من المتصفحات والأنظمة.
أشهر الجهات المصدرة:
DigiCert
GlobalSign
Sectigo
Let's Encrypt
(للمواقع)
الخطوات العامة:
CSR
) باستخدام مفتاحك الخاص (سنشرحه لاحقًا).certificate.crt
).Adobe
لديها قائمة بالـ CAs الموثوقة ومفاتيحها العامة للتحقق.كل شهادة لها بصمة فريدة (ناتج Hash مثل SHA-256
). يمكنك حسابها باستخدام:
openssl x509 -in mycert.pem -noout -fingerprint -sha256
ترسل هذه البصمة (النص الطويل الناتج) للطرف الآخر عبر قناة آمنة (مكالمة، رسالة موثوقة). الطرف الآخر يحسب البصمة للشهادة التي استلمها ويقارنها. إذا تطابقت = الشهادة أصلية.
عند التعامل مع الشهادات، ستواجه غالبًا هذه الأنواع من الملفات:
الملف | الوصف | الاستخدام الأساسي |
---|---|---|
المفتاح الخاص (Private Key) | ملف سري جدًا، يجب أن يبقى بحوزتك فقط. | لتوقيع الملفات أو فك تشفير البيانات المرسلة لك. |
الشهادة الرقمية (Certificate) | تحتوي بياناتك + مفتاحك العام + توقيع CA (إن وجدت). | لإثبات هويتك للطرف الآخر وتمكينه من التحقق. |
المفتاح العام (Public Key) | يمكن نشره بأمان، وهو جزء من الشهادة. | للتحقق من توقيعك أو تشفير بيانات لك. |
OpenSSL
)تستخدم مفتاحك الخاص لتوقيع الملف:
# توقيع ملف document.pdf باستخدام mykey.pem
openssl dgst -sha256 -sign mykey.pem -out document.sig document.pdf
ترسل للطرف الآخر:
document.pdf
(الأصلي)document.sig
(التوقيع)mycert.pem
(شهادتك)يستخدم شهادتك (التي تحتوي على مفتاحك العام) للتحقق:
# استخراج المفتاح العام من الشهادة والتحقق من التوقيع
openssl dgst -sha256 \
-verify <(openssl x509 -in mycert.pem -pubkey -noout) \
-signature document.sig \
document.pdf
النتيجة:
تذكير هام بالأمان:
المفتاح الخاص (Private Key) هو هويتك الرقمية السرية. حافظ عليه بأمان مطلق ولا تشاركه أبدًا!
لماذا تحتوي الشهادة على كل هذه الأجزاء؟ كل جزء له دور حيوي في بناء الثقة:
الهدف: تحديد هوية صاحب الشهادة (من أنت؟).
تشمل: الاسم الشائع (CN
)، المؤسسة (O
)، الدولة (C
)، البريد الإلكتروني، إلخ.
مثال: CN=ahmad.example.com, O=Robotics Lab, C=JO
الهدف: تمكين الآخرين من التحقق من توقيعك أو تشفير بيانات لك.
هو المفتاح المقابل لمفتاحك الخاص السري.
الهدف: ضمان أن الشهادة لم يتم تزويرها وأن المعلومات فيها صحيحة ومُحققة.
الـ CA توقع بيانات الشهادة + مفتاحك العام باستخدام مفتاحها الخاص. الأنظمة تثق بالـ CA وتستخدم مفتاحها العام للتحقق من هذا التوقيع.
(في الشهادات الذاتية، أنت من يوقع، لذا لا يوجد هذا الضمان الخارجي).
المكون | الوظيفة الأساسية |
---|---|
بيانات الهوية | تحديد صاحب الشهادة |
المفتاح العام | أداة التحقق والتشفير |
توقيع الجهة المصدِرة (CA) | ضمان الأصالة والثقة |
قد تبدو الامتدادات مربكة، لكنها غالبًا ما تشير إلى تنسيق الملف أو محتواه:
.pem | تنسيق نصي (Base64)، الأكثر شيوعًا، قد يحتوي مفتاحًا أو شهادة. |
.key | عادة ما يكون مفتاحًا خاصًا بتنسيق PEM. |
.p12 / .pfx | تنسيق ثنائي (PKCS#12)، يجمع المفتاح الخاص والشهادة معًا، محمي بكلمة مرور. |
هذه الملفات سرية للغاية!
.pem | شهادة بتنسيق نصي (Base64). |
.crt / .cer | عادة ما تكون شهادة بتنسيق PEM أو DER. |
.der | شهادة بتنسيق ثنائي (Binary). |
.p7b / .p7c | تنسيق PKCS#7، يحتوي عادة على الشهادة وسلسلة الثقة (بدون المفتاح الخاص). |
.pem | مفتاح عام بتنسيق نصي (Base64). |
.pub | شائع في SSH و GPG ، مفتاح عام فقط. |
(مستخرج) | يمكن استخراجه من الشهادة أو المفتاح الخاص. |
.sig | ملف توقيع منفصل، عادة ثنائي. |
.asc | توقيع منفصل بتنسيق نصي (ASCII)، شائع في GPG . |
.p7s | توقيع بتنسيق PKCS#7، غالبًا ما يكون مرفقًا بالبريد الإلكتروني (S/MIME ). |
.csr | ملف طلب توقيع الشهادة، يحتوي معلوماتك ومفتاحك العام، ترسله للـ CA. |
إذا رأيت... | فهو غالبًا... |
---|---|
.key , .p12 , .pfx , أو .pem مع "PRIVATE KEY" | مفتاح خاص (سري!) |
.crt , .cer , أو .pem مع "CERTIFICATE" | شهادة رقمية |
.pub , أو .pem مع "PUBLIC KEY" | مفتاح عام |
.sig , .asc , .p7s | ملف توقيع رقمي |
.csr | طلب توقيع شهادة |
.pem
المختلفة
امتداد .pem
شائع جدًا! كيف تعرف ما بداخله؟
افتح الملف بأي محرر نصوص. السطر الأول يخبرك بالمحتوى:
-----BEGIN PRIVATE KEY----- # مفتاح خاص (غير مشفر، PKCS#8)
-----BEGIN RSA PRIVATE KEY----- # مفتاح خاص (غير مشفر، PKCS#1/RSA)
-----BEGIN ENCRYPTED PRIVATE KEY----- # مفتاح خاص (مشفر بكلمة مرور)
-----BEGIN PUBLIC KEY----- # مفتاح عام
-----BEGIN CERTIFICATE----- # شهادة رقمية (X.509)
OpenSSL
يمكنك استخدام أوامر OpenSSL
لفحص الملف:
للتحقق إذا كان شهادة:
openssl x509 -in file.pem -noout -text
(إذا نجح الأمر، فهو شهادة)
للتحقق إذا كان مفتاح خاص (RSA كمثال):
openssl rsa -in file.pem -check -noout
(إذا نجح الأمر، فهو مفتاح خاص RSA صالح)
للتحقق إذا كان مفتاح عام:
openssl pkey -in file.pem -pubin -noout
(إذا نجح الأمر، فهو مفتاح عام)
الخلاصة:
لا تعتمد على الامتداد .pem
فقط. افحص المحتوى إما يدويًا أو باستخدام أدوات مثل OpenSSL
.
لا توجد قاعدة صارمة، لكن هذه بعض الأمثلة الشائعة لتنظيم الملفات:
نوع الملف | تسمية مقترحة | الامتداد الشائع |
---|---|---|
المفتاح الخاص | my-domain.key أو private-key.pem | .key , .pem |
المفتاح العام | my-domain.pub أو public-key.pem | .pub , .pem |
الشهادة | my-domain.crt أو certificate.pem | .crt , .pem , .cer |
سلسلة الشهادات (Chain) | chain.pem أو intermediate.crt | .pem , .crt |
الشهادة الكاملة (مع السلسلة) | fullchain.pem | .pem |
طلب توقيع الشهادة | my-domain.csr | .csr |
حزمة (مفتاح+شهادة) | my-domain.pfx أو identity.p12 | .pfx , .p12 |
CSR
)
ملف .csr
هو الخطوة الأولى لطلب شهادة من جهة موثوقة (CA).
تقديم معلوماتك + مفتاحك العام للـ CA لتوقيعها وإصدار شهادة رسمية.
هو بمثابة "طلب هوية رقمية" رسمي موجه للـ CA.
CN
(Common Name): اسم النطاق (e.g., www.example.com
) أو اسمك.O
(Organization): اسم المؤسسة.L
(Locality): المدينة.ST
(State): الولاية/المحافظة.C
(Country): رمز الدولة (حرفان).emailAddress
: البريد الإلكتروني.OpenSSL
)# 1. تأكد أن لديك مفتاح خاص (mykey.pem)
# openssl genrsa -out mykey.pem 2048
# 2. أنشئ الـ CSR باستخدام المفتاح الخاص
openssl req -new -key mykey.pem -out mydomain.csr
سيطلب منك إدخال بيانات الهوية (CN
, O
, L
, ST
, C
...).
الناتج:
mydomain.csr
: ملف الطلب الذي ترسله للـ CA.mykey.pem
سريًا لديك).ترسل ملف .csr
للـ CA، وتتبع إجراءات التحقق الخاصة بهم للحصول على الشهادة الموقعة.
Let's Encrypt
لماذا لا يثق المتصفح بشهادتك الذاتية مباشرة؟ لأنه لا يوجد طرف ثالث موثوق يؤكد هويتك.
المشكلة:
أي شخص يمكنه إنشاء شهادة ذاتية ويدعي أنه google.com
! المتصفح يحتاج لطريقة للتحقق من هذا الادعاء.
Let’s Encrypt
)الـ CA تعمل كـ "كاتب عدل رقمي". قبل أن توقع شهادتك، تطلب منك إثبات ملكيتك للنطاق (Domain Validation).
تضيف سجل TXT
خاص في إعدادات DNS
لنطاقك.
تضع ملفًا خاصًا على خادم الويب الخاص بك في مسار معين.
HTTPS
.بدون شهادة موثوقة:
سيظهر للمستخدم تحذير أمني كبير بأن الاتصال غير موثوق، مما يبعد الزوار.
HTTPS
؟ (تبسيط)
فهمنا أن الشهادة تثبت هوية الخادم. لكن كيف يتم تشفير البيانات ذهابًا وإيابًا؟
التشفير غير المتماثل (عام/خاص) بطيء نسبيًا. لذا يُستخدم فقط في البداية لتبادل مفتاح آخر أسرع.
خطوات مبسطة جدًا:
AES
).الإجابة المختصرة:
الخادم والمتصفح يتفقان على مفتاح سري مؤقت (Session Key) خلال الـ TLS Handshake، ثم يستخدمان هذا المفتاح السريع لتشفير وفك تشفير كل البيانات اللاحقة.