0Pricing
Security+ Academy · درس

حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية

طبّق مفاهيم PKI على سيناريوهات واقعية: تأمين حركة الويب، وتشفير البريد الإلكتروني باستخدام S/MIME، والتحقق من سلامة البرامج باستخدام شهادات توقيع التعليمات البرمجية.

حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية درس مجاني في Security+ Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Security+ Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Security+ Academy 4 دروس في المجموع.

PKI في التطبيقات الواقعية

تُعد البنية التحتية للمفاتيح العامة (PKI) العمود الفقري غير المرئي للاتصالات الرقمية الآمنة. وتُستخدم الشهادات وCA التي درسناها يوميًا في عشرات السيناريوهات الواقعية. ويختبر امتحان Security+ قدرتكم على تمييز حالات استخدام PKI، وفهم نوع الشهادة المناسب لكل حالة، وتحديد الحماية التي توفرها PKI في كل سياق. وأهم ثلاث حالات استخدام في الامتحان هي HTTPS/TLS (أمان الويب)، وS/MIME (أمان البريد الإلكتروني)، وتوقيع التعليمات البرمجية (سلامة البرمجيات).

HTTPS: استخدام PKI لأمان الويب

يُعد HTTPS (HTTP عبر TLS) أوضح حالات استخدام PKI. فعندما تتصلون بـ https://bank.com، يقوم متصفحكم بما يلي: (1) يتلقى شهادة TLS الخاصة بالخادم، (2) يتحقق من أن سلسلة الشهادات تصل إلى CA جذر موثوق، (3) يطابق اسم المضيف مع حقول SAN، (4) يتحقق من عدم إبطال الشهادة، و(5) يستخدم المفتاح العام في تبادل مفاتيح Diffie-Hellman لإنشاء جلسة مشفرة. وتشير أيقونة القفل في المتصفح إلى نجاح جميع هذه الفحوصات. وتؤدي الشهادة المفقودة أو غير الصالحة إلى ظهور تحذير في المتصفح يمنع معظم المستخدمين من المتابعة.

# Check HTTPS certificate details
curl -v https://example.com 2>&1 | grep -A 10 'SSL certificate'

# Test TLS configuration quality
openssl s_client -connect example.com:443 -tls1_3 2>/dev/null | \
  grep -E 'Protocol|Cipher|Verify'
# Protocol: TLSv1.3
# Cipher: TLS_AES_256_GCM_SHA384
# Verify return code: 0 (ok)

S/MIME: استخدام PKI لأمان البريد الإلكتروني

يستخدم S/MIME (Secure/Multipurpose Internet Mail Extensions) شهادات PKI لتوفير خدمتين أمنيتين للبريد الإلكتروني. التشفير: يشفر المرسل نص البريد الإلكتروني باستخدام المفتاح العام للمستلم، بحيث لا يستطيع فك تشفيره إلا المستلم، مما يحمي السرية حتى إذا تم اعتراض البريد أثناء نقله أو تخزينه على خادم مخترق. التوقيعات الرقمية: يوقع المرسل باستخدام مفتاحه الخاص، مما يثبت للمستلم أن البريد الإلكتروني صدر فعلًا عن المرسل ولم يُعدّل، وبذلك يحمي السلامة ويوفر عدم التنصل. ويتطلب S/MIME أن يمتلك كل مستخدم شهادته الخاصة الصادرة عن CA.

# S/MIME email signing and encryption with OpenSSL
# Sign an email
openssl smime -sign -in email_body.txt -signer alice_cert.pem \
  -inkey alice_private.key -out signed_email.eml -outform PEM

# Encrypt an email (using Bob's public key/certificate)
openssl smime -encrypt -aes256 -in email_body.txt \
  -out encrypted_email.eml bob_cert.pem

# Bob decrypts with his private key
openssl smime -decrypt -in encrypted_email.eml \
  -recip bob_cert.pem -inkey bob_private.key

توقيع التعليمات البرمجية: استخدام PKI لسلامة البرمجيات

يستخدم توقيع التعليمات البرمجية PKI لتوقيع البرمجيات رقميًا، بما في ذلك الملفات التنفيذية والنصوص البرمجية وبرامج التشغيل ومثبتات البرامج، حتى يتمكن المستخدمون من التحقق من أن البرمجية صادرة عن ناشر موثوق ولم يتم العبث بها. ويوقع مورّد البرمجيات شفرته باستخدام مفتاح خاص من شهادة توقيع تعليمات برمجية صادرة عن CA موثوق. وعندما يشغّل المستخدم البرمجية، يتحقق نظام التشغيل من التوقيع باستخدام المفتاح العام للمورّد المستخرج من سلسلة الشهادات. وتعتمد Windows SmartScreen وmacOS Gatekeeper ومتاجر تطبيقات iOS/Android على توقيع التعليمات البرمجية لإثبات مصدر البرمجيات. وقد تُحظر البرمجيات غير الموقعة أو تُطلق تحذيرات أمنية.

# Verify code signing on Windows (PowerShell)
Get-AuthenticodeSignature -FilePath 'C:\Software\installer.exe' | Format-List
# Status: Valid
# SignerCertificate: [certificate details]
# TimeStamperCertificate: [timestamp CA details]

# On Linux/macOS, verify GPG signature of downloaded software
gpg --verify hashicorp_public.gpg terraform.zip.sig terraform.zip
# Good signature from 'HashiCorp Security (hashicorp.com/security)'

المصادقة باستخدام شهادة العميل

تعمل المصادقة باستخدام شهادة العميل (وتُسمى أيضًا TLS المتبادل أو mTLS) على توسيع نموذج TLS القياسي من خلال مطالبة العميل بتقديم شهادة أيضًا. ففي TLS القياسي، تتم مصادقة الخادم وحده باستخدام شهادة؛ أما في mTLS، فتتم مصادقة الطرفين بشكل متبادل. ويُستخدم ذلك في: مصادقة VPN (البطاقات الذكية أو شهادات العميل بدلًا من كلمات المرور)، ومصادقة API (مصادقة من آلة إلى آلة عندما يكون العميل خدمة وليس شخصًا)، والوصول الإداري ذي الامتيازات (إلزام المسؤولين باستخدام رموز مادية تتضمن شهادات مدمجة).

# nginx configuration for mutual TLS (client certificate required)
# server {
#   listen 443 ssl;
#   ssl_certificate /path/to/server_cert.pem;
#   ssl_certificate_key /path/to/server_key.pem;
#   ssl_client_certificate /path/to/ca_cert.pem;
#   ssl_verify_client on;
#   ssl_verify_depth 2;
# }

# Test with a client certificate
curl --cert client_cert.pem --key client_key.pem https://api.example.com/

التحقق من مفتاح مضيف SSH

يستخدم SSH تشفير المفتاح العام لغرضين: مصادقة الخادم ومصادقة العميل. مصادقة الخادم: عند الاتصال بخادم SSH لأول مرة، يعرض الخادم مفتاح المضيف الخاص به (المفتاح العام). ويخزن عميل SSH لديكم هذا المفتاح في ~/.ssh/known_hosts. وفي الاتصالات اللاحقة، إذا تغير مفتاح المضيف، مما قد يشير إلى هجوم MITM أو إعادة إنشاء الخادم، يحذركم SSH. مصادقة العميل: بدلًا من كلمات المرور، يستخدم المسؤولون أزواج المفاتيح؛ إذ يُضاف المفتاح العام إلى authorized_keys على الخادم، بينما يثبت المفتاح الخاص (الذي لا يُرسل مطلقًا) الهوية. وتختلف مفاتيح مضيف SSH عن شهادات PKI، لكنها تؤدي وظيفة الثقة نفسها.

# First-time SSH connection stores server host key
ssh user@server.example.com
# The authenticity of host 'server.example.com' can't be established.
# ED25519 key fingerprint is SHA256:abc123...
# Are you sure you want to continue connecting (yes/no/[fingerprint])? yes

# Host key stored in: ~/.ssh/known_hosts
cat ~/.ssh/known_hosts | grep server.example.com

# If host key changes: 
# WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

توقيع المستندات وإضافة الطابع الزمني

تتيح PKI توقيع المستندات الرقمي الملزم قانونيًا في العديد من الولايات القضائية. وتستخدم توقيعات Adobe PDF وDocuSign وأنظمة التوقيع الإلكتروني الحكومية شهادات PKI لتوقيع المستندات. ومن المكملات المهمة لتوقيع المستندات إضافة الطابع الزمني؛ إذ تقوم سلطة طوابع زمنية موثوقة (TSA) بالتوقيع المضاد على تجزئة المستند مع وقت موثوق، مما يثبت وجود المستند في نقطة زمنية محددة. وتُعد إضافة الطابع الزمني ضرورية لتوقيع التعليمات البرمجية أيضًا؛ فمن دونه تصبح توقيعات التعليمات البرمجية غير صالحة عند انتهاء صلاحية شهادة التوقيع، حتى بالنسبة إلى البرمجيات التي وُزعت قبل انتهاء الصلاحية.

شهادات أجهزة IoT

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

مصادقة VPN باستخدام الشهادات

تُعد مصادقة VPN المستندة إلى الشهادات أكثر أمانًا بدرجة كبيرة من مصادقة VPN المستندة إلى كلمات المرور. وتصدر CA الداخلية للمؤسسة شهادة عميل لكل مستخدم أو جهاز VPN. وعند الاتصال، تتحقق بوابة VPN من شهادة العميل، وتتأكد من أنها صادرة عن CA الداخلية الموثوقة، وأنها لا تزال ضمن فترة صلاحيتها، ولم تُبطَل عبر CRL/OCSP. وعندما يغادر أحد الموظفين، يمنع إبطال شهادته الوصول إلى VPN فورًا، وهو أكثر موثوقية من مجرد الأمل في أنه لم يشارك كلمة مروره مع الآخرين.

# OpenVPN client certificate configuration
# client
# remote vpn.example.com 1194
# proto udp
# ca ca.crt        <- CA certificate (trust anchor)
# cert client.crt  <- Client's certificate
# key client.key   <- Client's private key
# tls-auth ta.key 1
# cipher AES-256-GCM

# The VPN server verifies the client cert chain against ca.crt
# Revoked certs listed in CRL won't be accepted

الأخطاء الشائعة المتعلقة بالشهادات

يجب أن يتمكن اختصاصيو الأمن من تشخيص أخطاء الشهادات الشائعة. انتهاء صلاحية الشهادة: انقضى تاريخ notAfter؛ جددوا الشهادة. عدم تطابق اسم المضيف: لا يتطابق SAN في الشهادة مع اسم المضيف المطلوب؛ تحققوا من CNs وSANs، فقد تحتاجون إلى شهادة wildcard أو شهادة متعددة SAN. شهادة موقعة ذاتيًا: لا توجد CA صادقت على هذه الشهادة؛ أضيفوها إلى مخزن الثقة المحلي أو استبدلوها بشهادة موقعة من CA. سلسلة غير مكتملة: لم يوفر الخادم شهادة CA الوسيطة؛ اضبطوا الخادم لإرسال السلسلة الكاملة. الشهادة مُبطلة: يوضح CRL أو OCSP حدوث الإبطال؛ ويلزم اتخاذ إجراء فوري لمعالجة اختراق المفتاح.

# Diagnose certificate errors with openssl
openssl s_client -connect server.example.com:443 2>&1
# Common error messages:
# depth=0 ... error 10 at 0 depth lookup: certificate has expired
# depth=0 ... error 18: self-signed certificate
# depth=0 ... error 20: unable to get local issuer certificate (broken chain)
# depth=0 ... error 23: certificate revoked
# Verify return code: 0 (ok) = success

شهادات Wildcard مقابل شهادات SAN

يتعامل نوعان من الشهادات مع أسماء المضيفين المتعددة. تغطي شهادة wildcard جميع النطاقات الفرعية من المستوى الأول لنطاق ما: إذ تغطي *.example.com النطاقات www.example.com وmail.example.com وapi.example.com، لكنها لا تغطي sub.api.example.com (مستويين). شهادة واحدة ومفتاح خاص واحد لجميع الخدمات؛ وهذا ملائم لكنه ينطوي على مخاطر، إذ تتأثر جميع الخدمات إذا اختُرق المفتاح. أما الشهادة متعددة SAN فتسرد صراحةً نطاقات محددة متعددة في امتداد SAN (مثل example.com وwww.example.com وapi.example.com). وهي أكثر دقة، لكنها تتطلب تحديث الشهادة عند إضافة نطاقات جديدة.

تحقق سريع

اختبروا مدى فهمكم لمفاهيم CompTIA Security+ (SY0-701) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن HTTPS/TLS يستخدم شهادات الخادم لتشفير حركة مرور الويب ومصادقة الخوادم؛ وأن شهادات S/MIME تتيح توقيع البريد الإلكتروني وتشفيره؛ وأن شهادات توقيع التعليمات البرمجية تثبت سلامة البرمجيات وهوية الناشر؛ وأن شهادات العميل تتيح المصادقة المتبادلة لشبكات VPN وواجهات API. بعد ذلك سنستكشف سياسات كلمات المرور والمصادقة متعددة العوامل.

الأسئلة الشائعة

هل درس «حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية» مجاني؟

نعم — نص درس «حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Security+ Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Security+ Academy 4 دروس في المجموع.

ماذا ستتعلم في «حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية»؟

طبّق مفاهيم PKI على سيناريوهات واقعية: تأمين حركة الويب، وتشفير البريد الإلكتروني باستخدام S/MIME، والتحقق من سلامة البرامج باستخدام شهادات توقيع التعليمات البرمجية. تتمرن على Security+ Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Security+ Academy؟

لا تُشترط خبرة سابقة. Security+ Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Security+ Academy هذا؟

نعم. كل درس في Security+ Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الجهات المصدّقة وسلاسل الثقة
  2. بنية شهادة X.509
  3. دورة حياة الشهادة وإبطالها
  4. حالات استخدام PKI: HTTPS وS/MIME وتوقيع التعليمات البرمجية
← العودة إلى Security+ Academy