كيف يعمل HTTPS وTLS حقًا: دليل عملي

Security2026-11-01TryQuickToolBox

لماذا يهم HTTPS (ولماذا يجب أن تفهمه)

ربما رأيت أيقونة القفل في متصفحك وتعرف أن HTTPS يشفر حركة المرور. ولكن عندما يظهر خطأ في الشهادة، أو يفشل استدعاء API بخطأ TLS، هل تعرف بالضبط ما يحدث؟ يعتبر العديد من المطورين HTTPS صندوقًا أسود—حتى يحدث خطأ. يشرح هذا الدليل كيفية عمل HTTPS وTLS فعليًا، من المصافحة إلى سلسلة الشهادات، حتى تتمكن من تصحيح المشكلات بثقة.

الأساسيات: HTTPS = HTTP + TLS

HTTPS هو ببساطة HTTP فوق TLS (أمان طبقة النقل). يوفر TLS ثلاثة ضمانات:

قبل TLS 1.3، كانت البروتوكول تسمى SSL (طبقة المقابس الآمنة)، لكن SSL مهملة. اليوم، TLS 1.2 و1.3 هما المعياران.

مصافحة TLS: خطوة بخطوة

المصافحة هي حيث يحدث السحر. إنها محادثة تنشئ قناة آمنة قبل إرسال أي بيانات HTTP. إليك نسخة مبسطة لـ TLS 1.2 (TLS 1.3 أسرع لكنه مشابه في المفهوم):

  1. Client Hello: يرسل العميل إصدارات TLS المدعومة، وحزم التشفير، وقيمة عشوائية (Client Random).
  2. Server Hello: يختار الخادم إصدار TLS وحزمة التشفير، ويرسل قيمته العشوائية (Server Random)، ويقدم شهادته.
  3. التحقق من الشهادة: يتحقق العميل من الشهادة مقابل سلطات الشهادات الجذرية الموثوقة، وتاريخ الانتهاء، واسم النطاق.
  4. تبادل المفاتيح: باستخدام خوارزميات مثل ECDHE، يستنتج الطرفان سرًا مشتركًا (pre-master secret) دون إرساله أبدًا عبر الشبكة.
  5. الانتهاء: يتحقق الطرفان من سلامة المصافحة وينتقلان إلى الاتصال المشفر باستخدام مفاتيح متماثلة مشتقة من السر المشترك.

في TLS 1.3، يتم تقليل المصافحة إلى رحلة ذهاب وعودة واحدة (1-RTT) وتدعم حتى 0-RTT للجلسات المستأنفة، مما يحسن زمن الوصول.

لماذا يستخدم التشفير غير المتماثل في البداية فقط

التشفير غير المتماثل (مثل RSA أو ECDSA) بطيء ومكلف حسابيًا. يستخدمه TLS فقط لتبادل مفتاح جلسة متماثل بأمان، والذي يُستخدم بعد ذلك للتشفير المجمع (مثل AES-GCM أو ChaCha20-Poly1305). يوازن هذا النهج الهجين بين الأمان والأداء.

الشهادات وسلسلة الثقة

تربط الشهادة مفتاحًا عامًا باسم نطاق ويتم توقيعها من قبل سلطة شهادات (CA). تأتي المتصفحات وأنظمة التشغيل مع مخزن لسلطات الشهادات الجذرية الموثوقة. عندما يقدم الخادم شهادته، يبني العميل سلسلة من شهادة الخادم إلى CA وسيطة وأخيرًا إلى جذر موثوق.

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

تساعد أدوات مثل openssl s_client أو فاحصات SSL عبر الإنترنت في تشخيص هذه المشكلات.

تصحيح اتصالات HTTPS

عندما يفشل HTTPS، تحتاج إلى فحص المصافحة. إليك أوامر عملية:

# Check certificate details and chain
openssl s_client -connect example.com:443 -servername example.com -showcerts

# Verify TLS version and cipher
openssl s_client -connect example.com:443 -tls1_3

# Test certificate expiration
openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates

في المتصفحات، تعرض لوحة الأمان في أدوات المطور تفاصيل الاتصال، ويكشف curl -v https://example.com عن خطوات المصافحة.

أخطاء التكوين الشائعة في TLS

حتى مع تمكين HTTPS، يمكن أن تؤدي أخطاء التكوين إلى إضعاف الأمان أو كسر التوافق:

المشكلة التأثير الحل
تمكين حزم تشفير ضعيفة عرضة لهجمات التخفيض تعطيل RC4 وDES وحزم التصدير؛ تفضل حزم AEAD
رأس HSTS مفقود عرضة لتجريد SSL أضف رأس Strict-Transport-Security
سلسلة شهادات غير مكتملة أخطاء على بعض العملاء قم بتضمين الشهادات الوسيطة في تكوين الخادم
السماح بإصدارات TLS القديمة (1.0/1.1) مخاطر الامتثال والأمان عطّل TLS 1.0 و1.1؛ فرض TLS 1.2+

كيفية فحص TLS عمليًا

إذا كنت تصحح خادم ويب، فابدأ بفحص سلسلة الشهادات وحزمة التشفير. بالنسبة لـ Nginx، تأكد من أن تكوينك يتضمن السلسلة الكاملة:

ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

استخدم أدوات عبر الإنترنت مثل SSL Labs للحصول على تقرير شامل، ولكن تحقق دائمًا باستخدام أدوات سطر الأوامر لإجراء فحوصات سريعة.

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

ما الفرق بين TLS وSSL؟

SSL هو سلف TLS. إصدارات SSL 2.0 و3.0 مهملة بسبب ثغرات أمنية. TLS 1.2 و1.3 هما البروتوكولات الآمنة الحالية.

لماذا يعرض متصفحي تحذيرًا بشأن الشهادة رغم أن الشهادة صالحة؟

تشمل الأسباب الشائعة سلسلة شهادات غير مكتملة، أو عدم تطابق اسم المضيف، أو أن الشهادة صادرة من CA غير موثوقة من قبل نظامك. تحقق من SAN الشهادة وتأكد من تقديم الشهادات الوسيطة.

كيف يمكنني التحقق من إصدار TLS الذي يدعمه خادمي؟

استخدم openssl s_client -connect yourdomain.com:443 -tls1_3 (أو -tls1_2) وابحث عن البروتوكول في الإخراج. توفر أدوات عبر الإنترنت مثل SSL Labs أيضًا تقارير مفصلة.

عندما تحتاج إلى فحص أو تنسيق بيانات JSON من استجابات API بسرعة أثناء التصحيح، يمكن أن تساعدك JSON Formatter في تصور والتحقق من البنية.