كيف يعمل HTTPS وTLS حقًا: دليل خطوة بخطوة
ربما رأيت أيقونة القفل في متصفحك وافترضت أن اتصالك آمن. ولكن ماذا يحدث بالفعل عند زيارة موقع HTTPS؟ كيف يعرف متصفحك أنه يتحدث إلى الخادم الحقيقي وليس إلى محتال؟ ولماذا يبطئ TLS موقعك أحيانًا؟
في هذا الدليل، سنزيل الغموض عن HTTPS وTLS من خلال شرح المصافحة خطوة بخطوة. ستتعلم أدوار الشهادات والتشفير المتماثل وغير المتماثل، وكيفية التحقق من TLS وتحسينه في مشاريعك الخاصة.
ما الذي يفعله HTTPS وTLS فعليًا
HTTPS هو HTTP فوق TLS (أمان طبقة النقل). يوفر TLS ثلاثة ضمانات:
- السرية: يتم تشفير البيانات بحيث لا يستطيع المتلصصون قراءتها.
- السلامة: لا يمكن تعديل البيانات أثناء النقل دون اكتشاف.
- المصادقة: أنت تتحدث إلى الخادم الشرعي، وليس إلى مهاجم.
بدون TLS، يتم إرسال حركة مرور HTTP كنص عادي. يمكن لأي شخص على مسار الشبكة (نقاط اتصال Wi-Fi، مزودو خدمة الإنترنت، أجهزة التوجيه المخترقة) قراءتها أو تعديلها. يحل TLS هذه المشكلة عن طريق إنشاء قناة آمنة قبل تبادل أي بيانات HTTP.
مصافحة TLS: خطوة بخطوة
المصافحة هي حيث يحدث السحر. إنها مفاوضة تنشئ مفاتيح مشتركة وتتحقق من الهويات. إليك التدفق المبسط لـ TLS 1.2 و1.3 (الإصداران اللذان ستواجههما اليوم).
الخطوة 1: Client Hello
يرسل العميل (المتصفح) رسالة ClientHello تحتوي على:
- إصدارات TLS المدعومة (مثل TLS 1.3، TLS 1.2)
- أجنحة التشفير المدعومة (مجموعات الخوارزميات)
- سلسلة بايت عشوائية (عشوائي العميل)
- بالنسبة لـ TLS 1.3، مشاركة مفتاح لتبادل Diffie-Hellman
الخطوة 2: Server Hello والشهادة
يستجيب الخادم بـ ServerHello (الإصدار المختار، جناح التشفير، عشوائي الخادم) وشهادته. تحتوي الشهادة على المفتاح العام للخادم وموقعة من قبل سلطة شهادة (CA).
يتحقق العميل من الشهادة: هل انتهت صلاحيتها؟ هل صادرة عن CA موثوقة؟ هل النطاق مطابق؟ إذا لم يكن كذلك، يعرض المتصفح تحذيرًا.
الخطوة 3: تبادل المفاتيح
باستخدام المفتاح العام للخادم (أو معلمات Diffie-Hellman)، يستنتج العميل والخادم سرًا أوليًا مشتركًا. في TLS 1.3، يتم ذلك باستخدام Diffie-Hellman الزمني (ECDHE)، مما يوفر السرية التامة: حتى لو تم اختراق المفتاح الخاص للخادم لاحقًا، تظل الجلسات السابقة آمنة.
الخطوة 4: Finished
يرسل كلا الجانبين رسالة Finished مشفرة بالمفاتيح المشتقة حديثًا. إذا نجح فك التشفير، تكتمل المصافحة. من ذلك الحين فصاعدًا، يتم تشفير جميع بيانات التطبيق (HTTP) باستخدام التشفير المتماثل (مثل AES-GCM أو ChaCha20-Poly1305).
تحسينات TLS 1.3
يقلل TLS 1.3 المصافحة إلى رحلة ذهاب وعودة واحدة (1-RTT) ويدعم استئناف 0-RTT للزوار المتكررين. كما يزيل الخوارزميات القديمة، مما يجعله أسرع وأكثر أمانًا. تدعم معظم المتصفحات والخوادم الحديثة TLS 1.3.
التشفير المتماثل مقابل غير المتماثل في TLS
يستخدم TLS كلا النوعين من التشفير لسبب وجيه:
- التشفير غير المتماثل (المفتاح العام): يُستخدم أثناء المصافحة لمصادقة الخادم وتبادل المفاتيح بشكل آمن. إنه مكلف حسابيًا ولكنه يحل مشكلة توزيع المفاتيح.
- التشفير المتماثل: يُستخدم لنقل البيانات بالجملة بعد المصافحة. إنه سريع وفعال.
يمنحك هذا النهج الهجين أمان التشفير بالمفتاح العام مع أداء الأجنحة المتماثلة.
الشهادات: مراسي الثقة
تربط الشهادة مفتاحًا عامًا باسم نطاق وتكون موقعة من قبل CA. تأتي المتصفحات وأنظمة التشغيل مع مخزن من CAs الجذرية الموثوقة. عندما يقدم الخادم شهادته، يبني العميل سلسلة ثقة تعود إلى جذر موثوق.
للشهادات عمر محدود (غالبًا 90 يومًا الآن مع Let's Encrypt). تتسبب الشهادات المنتهية في أخطاء المتصفح، لذا قم بأتمتة التجديد.
عملي: فحص TLS باستخدام OpenSSL
يمكنك فحص تكوين TLS للخادم باستخدام أداة سطر الأوامر openssl. يساعد ذلك في تصحيح أخطاء المصافحة أو التحقق من أجنحة التشفير.
openssl s_client -connect example.com:443 -servername example.com -tls1_3
يتصل هذا بالخادم ويطبع سلسلة الشهادات وجناح التشفير المتفاوض عليه وتفاصيل الجلسة. ابحث عن Verify return code: 0 (ok) لتأكيد صلاحية الشهادة.
للتحقق من انتهاء صلاحية الشهادة:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -dates
المزالق الشائعة في TLS وكيفية تجنبها
- الشهادات المنتهية: قم بإعداد التجديد التلقائي والمراقبة. استخدم أدوات مثل Certbot لـ Let's Encrypt.
- المحتوى المختلط: تحميل موارد HTTP على صفحة HTTPS يكسر الأمان. استخدم عناوين URL نسبية أو تأكد من أن جميع الموارد عبر HTTPS.
- أجنحة التشفير الضعيفة: قم بتعطيل البروتوكولات القديمة (TLS 1.0، 1.1) وأجنحة التشفير الضعيفة (RC4، 3DES). قم بتمكين TLS 1.3.
- غياب HSTS: أضف رأس
Strict-Transport-Securityلفرض HTTPS للزيارات المستقبلية. - سلاسل الشهادات غير المكتملة: تنسى بعض الخوادم تضمين الشهادات الوسيطة، مما يسبب أخطاء في بعض العملاء. استخدم SSL Labs للاختبار.
تحسين أداء TLS
يضيف TLS زمن وصول بسبب المصافحة. إليك كيفية تقليله:
- قم بتمكين TLS 1.3، الذي لديه مصافحة أسرع.
- استخدم استئناف الجلسة (تذاكر الجلسة أو المفاتيح المشتركة مسبقًا) لتجنب المصافحات الكاملة للزوار المتكررين.
- قم بتمكين تدبيس OCSP لتقليل زمن التحقق من الشهادة.
- استخدم CDN مع إنهاء TLS عند الحافة لتقليل أوقات الذهاب والعودة.
- احتفظ بالشهادات صغيرة (استخدم ECDSA بدلاً من RSA حيثما أمكن).
الأسئلة الشائعة
ما الفرق بين HTTPS وTLS؟
HTTPS هو الإصدار الآمن من HTTP، وTLS هو البروتوكول التشفيري الذي يوفر الأمان. يستخدم HTTPS TLS لتشفير ومصادقة الاتصال.
كيف يوفر TLS السرية التامة؟
تضمن السرية التامة أنه حتى لو تم اختراق المفتاح الخاص للخادم، لا يمكن استنتاج مفاتيح الجلسات السابقة. يتم تحقيق ذلك باستخدام تبادل مفاتيح Diffie-Hellman الزمني (ECDHE) في TLS 1.3 وتكوينات TLS 1.2 الحديثة.
لماذا أرى أخطاء الشهادات على بعض المواقع؟
عادةً ما تعني أخطاء الشهادات أن الشهادة منتهية الصلاحية أو موقعة ذاتيًا أو صادرة لنطاق مختلف أو أن سلسلة الشهادات غير مكتملة. يرفض المتصفح مثل هذه الشهادات لحمايتك من هجمات الوسيط.
عندما تحتاج إلى فحص أو تصحيح اتصالات TLS، يمكن أن تساعدك أدوات مثل Timestamp Converter في فك فترات صلاحية الشهادة وتصحيح المشكلات المتعلقة بالوقت.