شهادات SSL/TLS الرقمية
- مفهوم شاهدة SSL/TLS
- وظيفة الشهادة
- مكونات الشهادة
- شهادة الجذر (Root Certificate)
- جهاز توليد المفاتيح السرية
- الشهادة الوسيطة (Intermediate Certificate)
- سلسلة الثقة لجهات إصدار الشهادات
- إلغاء الشهادة
- بروتوكل حالة الشهادة OCSP
مفهوم شاهدة SSL/TLS
الشهادة الرقمية المعروفة بمصطلح SSL/TLS Certificate هي ملف بيانات صغير يتم تثبيته على خادم الويب الخاص بالموقع الإلكتروني بهدف جعل الإتصال به أكثر أماناً.
حالياً الشهادة أصبحت تسمى TLS Certificate لأن بروتوكول SSL تم إلغاؤه و بات يتم استخدام TLS.
المصطلح SSL ما زال يقال و يتم استخدامه من قبل كثير من الناس لأنه تم استخدامه لكثير من الوقت فقط.
وظيفة الشهادة
- التشفير أي أن الاتصال بين المتصفح و الموقع (خادم الويب) يكون مشفر و غير قابل للقراءة من أي طرف ثالث. و هذا هو سبب تحول البروتوكول HTTP إلى HTTPS فالحرف S هنا يعني آمن (Secure).
- المصادقة أي أنها تثبت أن الموقع هو نفسه الموقع الذي يدعي أنه هو و أنه مملوك للجهة الصحيحة. و بذلك يتم منع الهجمات الإلكترونية و على رأسها هجمة الرجل بالمنتصف (Man In The Middle) و التي يقوم فيها المهاجم بانتحال الموقع المستهدف. بفضل هذه الشهادة لا يستطيع المهاجم توقيع شهادة بنفس التوقع المعتمد.
مكونات الشهادة
كل شهادة رقمية تحتوي على معلومات اساسية و من أهمها:
1. المفتاح العام (Public Key)
هو المفتاح الذي يستخدم للتشفير و يستطيع رؤيته أي شخص لأن فك التشفير لا يتم من خلاله.
التشفير يمكن فكّه فقط بواسطة المفتاح الخاص (Private Key) الذي يكون على الخادم و الذي لا يستطيع أحد آخر رؤيته.
2. معلومات المالك
عادةً ما يكون إسم الدومين (Domain) مثلاً harmash.com و إسم الشركة إن وجد.
3. تاريخ الصلاحية
أي تاريخ إصدار الشهادة و تاريخ انتهاء صلاحتيها حيث تصبح غير صالحة للاستعمال.
4. التوقيع الرقمي
هذا هو الجزء الأهم في الشهادة حيث أن هذا التوقيع يثبت أن الشهادة تم إصدارها من جهة موثوقه تسمى CA و هي اختصار لعبارة (Certificate Authority) بمعنى سلطة إصدار الشهادات الرقمية.
CA تعني جهة موثوقة عالمياً مهمتها إصدار شهادات رقمية و توقيعها و من الأمثله عليها DigiCert و Let's Encrypt و GlobalSign Sectigo.
شهادة الجذر (Root Certificate)
هي الشهادة الأصل و مكان تواجدها يكون في أنظمة التشغيل مثل Windows أو Linux أو MacOS، و حتى في المتصفحات مثل Chrome و Firefox. و هي تكون موقعة ذاتياً (self-signed) أي أنها تثق في نفسها.
شهادات الجذر الموجودة بانظمة التشغيل و المتصفحات هي نسخة موقعة ذاتياً - أي من نفس الشركة - و الهدف منها هو المصادقة و طبعاً هي تكون نسخة عامة، أي أن المفتاح السري (private key) الخاص بها لا يكون موجود بهذه النسخ التي بأنظمة التشغيل و المتصفحات. بل هو مؤمن أوفلاين، لذلك لن يستفيد منها أي شخص لو سرقها من نظامك.
مكان وجود الشهادات
مكان تواجد Root Certificate في جهازك يسمى مستودع الثقة Trust Store أو مخزن الشهادات (Certificates Store). و هذا يعني أنك لو أضفت شهادة إلى هذا المخزن فإن جميع التطبيقات في نظامك التشغيل ستثق بهذه الشهادة.
أيضاً قد تكون الشهادة بنفس الوقت موجودة بالمتصفحات و تندرج المتصفحات الى فئتين من حيث إدارة الشهادات:
- المتصفحات التي تعتمد على النظام المتصفحات مثل Chrome و Edge و Safari لا تحتفظ بمخزن شهادات خاصة بها بل تعتمد على الشهادات الموجودة في نظام التشغيل. و الهدف هو سهولة الإدارة و التحديث حيث أنه لو قام نظام التشغيل بالتحديث ستكون الشهادات بالمتصفح أيضاً محدثة بالتزامن.
- المتصفحات ذات المخزن المستقل متصفح FireFox يحفتظ بمخزن مستقل للشهادات بعيداً عن نظام التشغيل بسبب عدم الاعتماد على تحديث النظام لو حدث اختراق أو سحب لشهادات الجذر. و يتم تحديث هذه الشهادات بالمتصفح بالتوازي مع تحديث النظام للشهادات.
جهاز توليد المفاتيح السرية
Hardware Security Module أو HSM اختصاراً هو جهاز يستخدم لتوليد المفاتيح السرية و لا يخرج المفتاح السري منه أبداً (يتم إنشاؤه بداخل الجهاز نفسه) و هو مصمم بحيث لا يمكن التلاعب به، بحيث أنه أي أحد يحاول التلاعب في الدارات الكهربائية الخاصة به فإنه يتم مسح المفاتيح السرية التي بداخله.
الشهادة الوسيطة (Intermediate Certificate)
بما أن المفتاح السري للتوقيع الخاص بشهادة الجذر (Root CA) محفوظ في مكان آمن (اوف لاين) و بما أنه لا بد من استخدام هذا التوقيع للإثبات من الجهة المصدرة لهذه الشهادة كان لا بد من طريقة وسيطة لتقليل ظهور هذا المفتاح السري بشكل متكرر عند الاستخدام الفعلي و لهذا ظهرت فكرة الشهادات الوسيطة.
الشهادات الوسيطة يتم انشاءها من قبل الجهات المسوؤلة عن إصدار الشهادات فقط في حالات قليلة (عند التأسيس أو عند انتهاء الصلاحية و تكون صلاحيتها طويلة تمتد إلى عدة سنوات).
مراحل عمل الشهادات الوسيطة
- إنشاء ملف CSR هنا يتم إنشاء المفتاح العام و هو الذي يخرج إلى العالم و يتم إنشاء المفتاح الخاص لاستخدامه في توقيع شهادات المواقع داخل HSM (قد يكون Online HSM) أي في شبكة داخلية خاصة بالـCA. ثم يتم تجميع المعلومات و المفتاح العام في ملف يسمى CSR (Certificate Signing Request) أي طلب توقيع الشهادة.
- الإدخال الآمن يتم أخذ ملف الـCSR الخاص بالشهادة الوسيطة إلى الموقع الآمن و المفصول عن الانترنت (أوف لاين) داخل HSM بطريقة آمنة عن طريق وسيط تخزين خارجي مشفر.
- التوقيع الأوفلاين هنا يتم توقيع الشهادة الوسيطة من قبل الـRoot CA بطريقة آمنة مع الإشارة إلى أنّ المفتاح السري لا يخرج أبداً من الـHSM. و لكن ما يخرج هو التوقيع (عمليات حسابية معقدة تنتج توقيع تثبت أنها موقعة من الشهادة الجذر) و لا يمكن استخدام هذا التوقيع لإعادة بناء المفتاح السري. و هكذا يتم توكيل الشهادة الوسيطة بالتوقيع نيابة عن الشهادة الجذر التي ستعود إلى حالة الأوفلاين بعد هذه العملية. (تحدث هذه العملية بفترات متباعدة و طويلة).
أين يتم تخزين الشهادة الوسيطة
بعد إجراء المراحل السابق يتم تخزين الشهادة الوسيطة بعد توقيعها في مكانين:
- على خوادم الـCA التي تقوم بتوقيع شهادات المواقع التي تطلبها الشركات يومياً.
- على خوادم المواقع. فعندما تطلب شركة ما شهادة لموقعها مثلاً (example.com) يتم إعطائها شهادتين (شهادة الموقع التي تثبت من هو الموقع و مدة صلاحيتها تقريباً سنة و الشهادة الوسيطة التي تثبت من أصدر الشهادة و مدة صلاحيتها طويلة تمتد لسنوات).
المفتاح الخاص الذي يتم إنشاؤه بالشهادة الوسيطة هو خاص فقط بتوقيع الشهادات الخاصة بالمواقع. بينما المفتاح الخاص الذي على خادم الويب الخاص بالموقع نفسه لا يخرج و لا أحد يعرفه لأنه يستخدم في فك التشفير.
سلسلة الثقة لجهات إصدار الشهادات
سلسلة الثقة لجهات إصدار الشهادات (CA Chain of Trust) هي التسلسل الهرمي الكامل و الضروري للشهادات الرقمية الذي يربط بين شهادة الخادم النهائية (End-Entity Certificate) و بين شهادة الجذر الموثوقة (Root Certificate) المخزنة في متصفح المستخدم أو نظام التشغيل.
مثال توضيحي
عندما تطلب موقع مثل harmash.com وتضغط Enter فإنه هذا ما يحدث بسرعة فائقة:
- المتصفح يرسل رسالة
Helloإلى خادم الويب يخبره فيها عن إصدارات TLS و أنواع التشفير التي يدعمها. - يرد خادم الويب برسالة
Helloمع رد بأفضل إصدار TLS و نوع تشفير مشترك. - يرسل خادم الويب شهادة الموقع (التي تحتوي على المفتاح العام) + الشهادة الوسيطة (أو سلسلة الثقة كاملةً لو كان هناك أكثر من شهادة وسيطة).
- يستلم المتصفح الشهادة و يتحقق أولاً من شهادة الموقع أنها تابعه للموقع نفسه (يكون الدومين مرفق بالشهادة) و يتأكد أيضاً من صلاحيات الشهادة (متى أصدرت و متى تنتهي) و يتأكد من خلال شهادات الـRoot المثبتة عنده من توقيع الشهادة الوسيطة اأو الشهادات الوسيطة لو كانت أكثر من واحدة للتأكد أن توقيعها من شركة موثوقة مثل Let's Encrypt أو DigiCert.
- ينشئ المتصفح مفتاح و يشفره بالمفتاح العام المرفق بشهادة الموقع و يرسله لخادم الويب.
- يستقبل خادم الويب المفتاح المشفر و يفكه بالمفتاح الخاص الذي لديه.
- ثم يبدأ التشفير بالمفتاح المشترك الذي أصبح لدى خادم الويب و المتصفح.
هكذا يصبح لدى خادم الويب و المتصفح مفتاح مشترك لتشفير و فك تشفير البيانات التي سيتم تداولها بينهمها (أي يصبح الاتصال آمن و مشفر بين العميل "المتصفح" وخادم الويب).
إلغاء الشهادة
إلغاء الشهادة (Certificate Revocation) هو أمر يتم فعله لعدة أسباب منها:
- حصول اختراق هذا هو السبب الأكثر شيوعاً. إذا تمكن طرف ثالث من اختراق المفتاح الخاص للشهادة الوسيطة (Intermediate Certificate) أو الخاص بشهادة الموقع فإنه يتم إلغاء الشهادة.
- تغيير البيانات إذا قام صاحب الموقع بتغيير البيانات المرفقة بالشهادة مثل الإسم أو تاريخ معين أو إسم الشركة فإنه يتم إلغاء الشهادة.
- إنتهاء العمل بالشهادة قد يقرر صاحب الموقع عدم التعامل بالشهادة فيتم إلغائها.
- فشل من قبل الجهة المنشئة للشهادة إذا فشلت الجهة المسؤولة عن التحقق من الشهادة بتلبية معايير الأمان فإنه يتم إلغاء الشهادة.
كيف يتم إلغاء الشهادة؟
عندما يزور المستخدم بواسطة المتصفح موقع معين فإنه يتم تنزيل ملف فيه الأرقام التسلسلية (ٍٍSerial Numbers) لجميع الشهادات التي تم إبطالها يسمى Certificate Revocation List أو CRL اختصاراً. ثم يتأكد هل الرقم التسلسلي الخاص بشهادة الموقع موجود ضمن القائمة أم لا.
مشكلة ملفات CRL أنها قد تصبح كبيرة جداً و تستهلك وقتاً لتنزيلها في كل عملية تحقق لذلك هناك طريقة أحدث و مستخدمة في الوقت الحالي و هي OCSP.
بروتوكل حالة الشهادة OCSP
البروتوكول الخاصة بحالة الشهادة أونلاين Online Certificate Status Protocol أو OCSP اختصاراً هي الطريقة الأحدث للتأكد من أن الشهادة صالحة أم لا. فبدلاً من تنزيل ملف CRL لكل عملية تحقق فإنه المتصفح يرسل طلب الى سيرفر OCSP التابع للـCA (غالباً عن طريق خادم الويب الخاص بالموقع نفسه) للتحقق من أنّ الرقم التسلسلي الخاص بشهادة الموقع موجود في السيرفر أم لا.
الخادم يرد بطريقة بسيطة جداً تفيد حالة الشهادة:
Goodتعني لا تزال صالحة.Revocedتعني تم إلغاءها.Unknownتعني حالتها غير معروفة.
هكذا يتم ضمان تحديث حالة الشهادة بالوقت الفعلي و تكون الاستجابة أسرع من طريقة استخدام ملف CRL.
