ما إصدارات TLS ومجموعات التشفير التي يجب أن يقبلها الخادم؟
الخادم الحديث يقبل TLS 1.3 (RFC 8446) وTLS 1.2، ويرفض TLS 1.0 و1.1 اللذين ألغاهما RFC 8996، ويفضّل في TLS 1.2 مجموعات AEAD ذات سرية أمامية مثل ECDHE مع AES-GCM أو ChaCha20-Poly1305 (RFC 9325). ويجب ألا يُتفاوض أبداً على مجموعات RC4 أو NULL أو التصدير، وينبغي تجنّب 3DES ونقل المفتاح عبر RSA، وعلى خادم الويب أن يرسل Strict-Transport-Security أيضاً حتى تكفّ المتصفحات عن تجربة HTTP العادي.
كيفية استخدام فاحص إعدادات TLS
- أدخل اسم المضيف أو عنوان IP أو رابطاً، وغيّر المنفذ إن لم تكن خدمة TLS على 443.
- إذا أدخلت عنوان IP، كخادم أصلي خلف شبكة CDN، فاكتب اسم الموقع في حقل اسم الخادم (SNI).
- اضغط «فحص إعدادات TLS» وانتظر حتى نحو 20 ثانية؛ فالمجسّات تعمل واحداً بعد الآخر.
- اقرأ التقدير وشرحه ثم جدول إصدارات البروتوكول. أصلح ما يحدّ التقدير (غالباً TLS 1.0/1.1 أو غياب ترويسة HSTS) وأعد الاختبار.
مزايا فاحص إعدادات TLS
- يختبر كل إصدار وحده: رسائل ClientHello منفصلة لا تعرض إلا TLS 1.0 أو 1.1 أو 1.2 أو 1.3، فتظهر الإصدارات التي يقبلها الخادم فعلاً لا تلك التي يختارها أولاً فقط
- يعرض رسالة لا تحوي إلا المجموعات الضعيفة (RC4 و3DES وNULL وEXPORT والمجهولة وMD5) ويسرد ما يقبله الخادم منها
- يذكر مجموعة التشفير المتفاوض عليها مع تبادل المفاتيح والسرية الأمامية وAEAD، وبروتوكول ALPN وزمن المصافحة
- يقرأ Strict-Transport-Security من https://host/ ويحلّلها كما في RFC 6797، فتُعدّ max-age=0 تعطيلاً لـ HSTS
- تقدير من A+ إلى F مبني على حدود، مع سبب كل حدّ؛ لا نقاط خفية، ولا تقدير أصلاً إذا تعذّرت قراءة الشهادة
- المجسّات غير الحاسمة تظهر بعلامة ? ولا تُحسب رفضاً، فلا يبدو الخادم أشدّ صرامة مما هو بسبب تعثّر جدار حماية
- ملخص قصير للشهادة (الانتهاء ومطابقة الاسم واكتمال السلسلة وتحقق تواقيعها) لتُقرأ قواعد التقدير الخاصة بالشهادة في سياقها
المدخلات والمخرجات
المدخلات
- اسم المضيف أو الرابط: اسم أو عنوان IPv4 أو IPv6 أو host:port أو رابط؛ ولا يُستخدم منه إلا المضيف والمنفذ الصريح.
- المنفذ: 443 افتراضياً، ويصلح أي منفذ لخدمة TLS (8443 و993 و995 و465…).
- اسم الخادم (SNI) اختيارياً: الموقع المطلوب من عنوان IP أو من خادم مشترك. ولا يُقيَّم HSTS إلا إذا ساوى المضيف.
المخرجات
- الملخص: التقدير والإصدار المتفاوض عليه والسرية الأمامية وAEAD وهل يُرفض TLS 1.0/1.1 وعدد المجموعات الضعيفة المقبولة وmax-age لـ HSTS بالأيام.
- شرح التقدير: كل حدّ مع مستواه (مثل «C: لا يزال TLS 1.0 مفعّلاً.»)، أو ما ينقص للوصول إلى A+، أو سبب عدم منح تقدير.
- إصدارات البروتوكول: ✓ أو ✗ أو ? لكل من TLS 1.3 و1.2 و1.1 و1.0، مع RFC الذي يعرّف كل إصدار أو يلغيه.
- الاتصال المتفاوض عليه وتوجيهات HSTS والمجموعات الضعيفة المقبولة (إن وُجدت) وملخص الشهادة.
مثال على فاحص إعدادات TLS
خادم بإصداري TLS 1.3 و1.2 فقط وHSTS لمدة سنة (نتيجة توضيحية)
الإدخال:
اسم المضيف: www.example.com · المنفذ: 443النتيجة:
التقدير A+ · المتفاوض عليه TLS 1.3 · السرية الأمامية ✓ · تشفير AEAD ✓ · رفض TLS 1.0/1.1 ✓ · مجموعات ضعيفة مقبولة 0 · HSTS 365 يوم
شرح التقدير: TLS 1.3 مع السرية الأمامية وAEAD، ولا بروتوكول قديم، وسلسلة تتحقق حلقاتها وتواقيعها (الثقة لا تُقيَّم)، وHSTS لا يقل عن 180 يوماً.
إصدارات البروتوكول: TLS 1.3 ✓ · TLS 1.2 ✓ · TLS 1.1 ✗ · TLS 1.0 ✗
الاتصال المتفاوض عليه: TLS_AES_256_GCM_SHA384 (0x1302) · تبادل المفاتيح TLS1.3 · ALPN h2كيف تقرأ نتائج فاحص إعدادات TLS
A+ وA كلاهما يعني أن هذه الفحوص لم تجد أي ضعف؛ وتتطلب A+ فوق ذلك ما يثبت وجود TLS 1.3، ورفض TLS 1.0 و1.1، وحسم مجسّ المجموعات الضعيفة، وتحقق تواقيع السلسلة، وHSTS لا يقل عن 180 يوماً. والسطر تحت A يذكر ما ينقص من ذلك.
B تعني غالباً أن المجموعة المتفاوض عليها بلا سرية أمامية (تبادل مفاتيح RSA) أو تستخدم CBC بدلاً من AEAD. وC تعني غالباً أن TLS 1.0 أو 1.1 ما زال مفعّلاً، أو أن 3DES مقبول، أو أن الشهادة ذاتية الإصدار أو موقّعة بـ SHA-1. أما F فمشكلة في الشهادة أو التشفير ترفضها المتصفحات صراحة.
علامة ? في جدول الإصدارات ليست نجاحاً ولا فشلاً: لم يحصل المجسّ على إجابة صالحة. والسبب المعتاد جدار حماية يحدّ المعدل أو موازن أحمال يُسقط الاتصالات المتكررة السريعة؛ أعد الفحص قبل أن تبني عليه قراراً.
«HSTS لم يُقيَّم» ليست ملاحظة ضد الخادم: لم يمكن ربط الترويسة بهذه النقطة (عنوان IP أو منفذ آخر أو SNI مختلف)، فلا يستطيع التقدير بلوغ A+ فحسب.
متى تستخدم فاحص إعدادات TLS
- التأكد من أن TLS 1.0 و1.1 أُطفئا فعلاً بعد تغيير الإعدادات، وأن TLS 1.3 مفعّل.
- فحص موازن أحمال أو وكيل عكسي أو خادم بريد على 993 أو 465 لا تصل إليه الماسحات العاملة من المتصفح.
- عرض سبب التقدير على مراجع الأمن حدّاً بحدّ، بدلاً من حرف مجرد.
- اختبار خادم أصلي مباشرة بعنوان IP وSNI لمقارنة إعداداته بما تعرضه شبكة CDN أمامه.
استكشاف الأخطاء وإصلاحها
- «يمر عبر Cloudflare»: المنصة تمنع الاتصالات المباشرة من Cloudflare Worker إلى عناوين Cloudflare. إعدادات TLS على حافة Cloudflare في لوحة التحكم (SSL/TLS)، وخادمك الأصلي يُفحص بعنوان IP مع اسم الموقع في SNI.
- عدة إصدارات تظهر بعلامة ?: الخادم أو جدار الحماية أمامه يحدّ سرعة فتح الاتصالات الجديدة. انتظر دقيقة وأعد الفحص.
- «refused the TLS handshake (alert: handshake_failure)» في المصافحة الرئيسية: الخادم لا يقبل أياً من المجموعات المعروضة، مثل خادم لا يسمح إلا بـ ChaCha20 في TLS 1.3 وهو ما لا تستطيع المصافحة الرئيسية عرضه، أو خادم يطلب شهادة عميل.
- انتهت مهلة الطلب: يُجري الفحص الكامل حتى ست مصافحات وطلب HTTP خلال نحو 22 ثانية، وقد ينفد وقت الخادم البطيء جداً. أما فاحص شهادة SSL فيكتفي بمصافحة واحدة.
- لا تقدير: تعذّرت قراءة الشهادة (خادم TLS 1.3 لم يستطع المجسّ فكّ رسالة Certificate المشفرة منه، ثم فشلت محاولة TLS 1.2 البديلة). نتائج البروتوكولات والتشفير تبقى صحيحة.
الأسئلة الشائعة حول فاحص إعدادات TLS
كيف أعرف هل ما زال موقعي يدعم TLS 1.0 و1.1؟
شغّل الفحص وانظر إلى جدول إصدارات البروتوكول: ✓ أمام TLS 1.0 أو 1.1 تعني أن الخادم قبل رسالة لا تعرض إلا ذلك الإصدار، و✗ تعني أنه رفضها. وقد أُلغي الإصداران رسمياً في RFC 8996، وبقاؤهما مفعّلين يحدّ التقدير عند C.
كيف يُحسب التقدير؟
بالحدود لا بالنقاط. كل ملاحظة تحدّ التقدير عند مستوى ويغلب أسوؤها: الشهادة المنتهية أو غير المطابقة للاسم أو التوقيع المكسور أو RC4 وNULL وEXPORT تعني F؛ وبقاء TLS 1.0 أو 1.1 أو قبول 3DES أو توقيع SHA-1 أو شهادة ذاتية الإصدار يحدّ عند C؛ وغياب السرية الأمامية أو AEAD يحدّ عند B. وملاحظتان في المستوى نفسه تُنزلان درجة إضافية. أما A+ فتشترط فوق ذلك TLS 1.3 ورفض 1.0 و1.1 ومجسّ مجموعات ضعيفة حاسماً وتواقيع سلسلة سليمة وHSTS لا يقل عن 180 يوماً.
ماذا تعني علامة ? بدلاً من ✓ أو ✗؟
لم يحصل مجسّ ذلك الإصدار على إجابة صالحة: تعذّر فتح الاتصال أو انتهت المهلة أو انقطع الاتصال أثناء المصافحة. هذا لا يقول شيئاً عن الإعداد، فيُعرض «غير حاسم» لا «غير مدعوم». أعد الفحص؛ والسبب المعتاد جدار حماية يحدّ معدل الاتصالات.
لماذا يقول إن HSTS لم يُقيَّم؟
تُقرأ الترويسة من طلب HEAD واحد إلى https://host/، ولا تصف النقطة المختبرة إلا إذا كان الهدف اسم مضيف على المنفذ 443 واسم الخادم (SNI) مساوياً له. ومع عنوان IP أو منفذ آخر أو SNI مختلف قد يصف الطلب خدمة أخرى، فلا تُحكَم الترويسة ويبقى التقدير A في أحسن الأحوال.
هل يمكن فحص موقع يمر عبر Cloudflare؟
ليس من هنا؛ فالفحص يعمل على Cloudflare Workers، والمنصة تمنع الاتصالات المباشرة بعناوين Cloudflare. إعدادات TLS على حافة Cloudflare (الحد الأدنى للإصدار وTLS 1.3) تُضبط في قسم SSL/TLS من لوحة التحكم. ويمكنك مع ذلك فحص خادمك الأصلي بإدخال عنوانه مع اسم موقعك في حقل SNI.
ماذا يرسل الفحص إلى خادمي؟
حتى ست رسائل ClientHello متتالية، تُترك كل منها بعد أول إجابة من الخادم، وطلب HEAD واحد لقراءة HSTS. لا بيانات تطبيق ولا تسجيل دخول ولا اختبار حمل. استخدمه فقط مع الخوادم المصرّح لك باختبارها.
ملاحظات تقنية
كل مجسّ رسالة ClientHello يبنيها خادم متقن. الرسالة الرئيسية تعرض TLS 1.3 (RFC 8446) بمجموعات AES-GCM، وTLS 1.2 فما دون بمجموعات حديثة ومتوافقة؛ وكل مجسّ إصدار يحدد إصداراً واحداً، ومجسّ TLS 1.3 وحده يعرض مجموعاته الخمس كلها. التنبيه أو الإغلاق النظيف بعد الرسالة مباشرة يُعدّ رفضاً، أما فشل الاتصال أو انتهاء المهلة أو انقطاعه أثناء المصافحة فيترك الإصدار غير حاسم.
أُلغي TLS 1.0 و1.1 في RFC 8996 عام 2021، ويطلب RFC 9325 (BCP 195) دعم TLS 1.3، وتفضيل مجموعات AEAD ذات السرية الأمامية في TLS 1.2، وتجنّب 3DES ونقل المفتاح عبر RSA، وعدم التفاوض أبداً على RC4 (RFC 7465) أو NULL أو مجموعات التصدير. ويتبع التقدير هذه القواعد: التفاوض على RC4 أو NULL أو EXPORT أو مجهولة أو DES أو قبولها يعني F، و3DES يعني C، والمجموعة بلا سرية أمامية أو بلا AEAD تعني B.
HSTS معرّف في RFC 6797: يجب أن تكون max-age عدداً من الثواني أكبر من الصفر، وincludeSubDomains وpreload علَمان. وتُقرأ الترويسة من طلب HEAD واحد إلى https://host/ فقط حين يصل الطلب إلى النقطة المختبرة نفسها: اسم مضيف، والمنفذ 443، وSNI مساوٍ للمضيف.
قواعد الشهادة مأخوذة من الشهادة الطرفية التي قرأتها المصافحة الرئيسية: منتهية أو لم يبدأ سريانها، اسم لا تغطيه، حلقة في السلسلة لا يتحقق توقيعها (حلقات المسار وفق RFC 5280 تُفحص عبر WebCrypto)، توقيعات MD5 أو SHA-1، ومفاتيح RSA أقل من 2048 بت. لا يُستخدم مخزن جذور؛ والسلسلة التي تتحقق كل تواقيعها توصف بذلك، لا بأنها موثوقة.
الحدود ومنهجية القياس
تعمل المجسّات من مركز بيانات Cloudflare الذي يخدم طلبك، لا من شبكتك؛ والخوادم التي تجيب بحسب عنوان العميل أو منطقته قد تُظهر لزوارك إعداداً آخر.
لا يمكن فحص المواقع التي تُحَل أسماؤها إلى Cloudflare أبداً، لأن المنصة ترفض المقابس المباشرة إلى نطاقات عناوينها، وهذه نسبة كبيرة من الويب.
لا تُعدَّد كل المجموعات: يعرض التقرير المجموعة المتفاوض عليها مع هذا المجسّ والمجموعات الضعيفة المقبولة، لا قائمة تفضيلات الخادم كاملة. ولا تُختبر SSL 3.0 ولا إعادة التفاوض ولا OCSP stapling ولا استئناف الجلسات ولا الهجمات المعروفة على البروتوكول.
لا مخزن جذور ولا فحص إلغاء: الجزء الخاص بالشهادة في التقدير يفحص التواريخ والأسماء وأطوال المفاتيح وخوارزميات التجزئة في التواقيع وتحقق كل حلقة في السلسلة، لا ثقة المتصفح بالجذر.
الأمان والخصوصية
يصل المضيف والمنفذ واسم الخادم إلى خادم متقن، فيحلّ الاسم ويفتح حتى ست اتصالات TLS قصيرة ويرسل طلب HEAD واحداً، ولا يُخزَّن شيء عن الهدف ولا عن النتيجة. تبدو المجسّات للخادم مصافحات متروكة وقد تظهر في سجلاته؛ فلا تفحص إلا الخوادم المصرّح لك باختبارها.
المراجع
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3مصافحة TLS 1.3 وبروتوكول السجلات اللذان يحميان حركة HTTPS.
- RFC 8996: Deprecating TLS 1.0 and TLS 1.1يلغي TLS 1.0 و1.1 رسمياً: يجب ألا تتفاوض الخوادم عليهما، ويُلغى معهما DTLS 1.0.
- RFC 9325: Recommendations for Secure Use of Transport Layer Security (TLS) and Datagram Transport Layer Security (DTLS)BCP 195: لا تفاوض أبداً على TLS 1.0 أو 1.1، وادعم TLS 1.2 وTLS 1.3، وفضّل مجموعات AEAD ذات السرية الأمامية، ولا تستخدم أبداً RC4 أو NULL أو مجموعات التصدير، وتجنّب 3DES، وعلى خوادم الويب إرسال HSTS.