TLS

مختبر TLS و HTTPS

مصافحة حقيقية، سلسلة ثقة، وتحقق من الشهادات على جهازك

خادم TLS نشط Node OpenSSL

HTTPS = HTTP فوق قناة TLS

يوفّر TLS ثلاث ضمانات: سرية البيانات بالتشفير، هوية الخادم عبر شهادة موقعة، وسلامة البيانات ضد التعديل. كل بطاقة أدناه تنفّذ العملية فعلياً على خادم HTTPS محلي وليس محاكاة.

HTTP + TLS 1.3 = HTTPS :443

1. مصافحة TLS حية

يفتح العميل اتصالاً حقيقياً إلى localhost:8443 ويتحقق من شهادة الخادم.

الإصدار—
التشفير—
تبادل المفاتيح—
زمن المصافحة—
اضغط فحص للبدء…

2. سلسلة الثقة

بانتظار الفحص

شهادة الخادم ← الجهة الموقعة ← جذر الثقة المحلي.

3. اختبار التحقق

أربع حالات: ثقة كاملة، بدون CA، شهادة موقعة ذاتياً، ومخزن ثقة النظام.

لم يُشغّل بعد.

4. طلب HTTPS فعلي

طلب مشفّر إلى واجهة الخادم مع التحقق من الشهادة.

—

5. محاولة طلب غير مشفّر

إرسال HTTP عادي إلى منفذ TLS لإثبات أن القناة إلزامية.

—

6. مراحل المصافحة

TLS 1.3
  1. 1
    ClientHelloالعميل يرسل الإصدارات المدعومة و Cipher Suites و SNI.
  2. 2
    ServerHello + الشهادةالخادم يختار الإصدار والتشفير ويرسل شهادته العامة.
  3. 3
    التحقق من الشهادةالعميل يتحقق من التوقيع وسلسلة CA والاسم والصلاحية.
  4. 4
    تبادل المفاتيحECDHE يولّد سراً مشتركاً مؤقتاً، ولا يُرسل المفتاح نفسه أبداً.
  5. 5
    Finishedتوقيعات على transcript اليد للتأكد من عدم التلاعب.
  6. 6
    بيانات مشفّرةAES-GCM أو ChaCha20 مع سلامة مدمجة (AEAD).

8. جذر الثقة المحلي (CA)

هذه شهادة عامة فقط؛ المفتاح الخاص للجذر يبقى في certs/rootCA.key ولا يُصدَّر. ثبّتها في نظامك أو متصفحك لتظهر شهادات المختبر كموثوقة.

الاسم—
الصلاحية—
البصمة SHA-256—
النوع—
جارٍ التحميل…

9. TLS مع MetaTrader 5 / MQL5

MT5 يستخدم WinHTTP ويقبل الشهادة فقط إذا كانت سلسلتها موثوقة في مخزن Windows. شهادات أخرى: selfsigned.crt.

  1. 1
    السماح بالرابطTools ← Options ← Expert Advisors ← Allow WebRequest for listed URL: https://localhost:8443
  2. 2
    تثبيت CA محلياً (اختياري)certutil -addstore -f Root "rootCA.crt" — يمنح كل تطبيقات المستخدم الثقة بهذا CA؛ أزله بعد الاختبار.
  3. 3
    تشغيل الفحصشغّل EA على أي رسم؛ يطبع HTTP 200 ثم JSON من المنفذ 8443.
#property version "1.00"
input string InpEndpoint    = "https://localhost:8443/whoami";
input int    InpTimeoutMs   = 5000;
input int    InpIntervalSec = 10;

void Check()
  {
   char data[]; ArrayResize(data, 0);
   char result[]; string headers = "";
   ResetLastError();
   int code = WebRequest("GET", InpEndpoint, NULL, NULL, InpTimeoutMs, data, 0, result, headers);
   if(code == -1)
     {
      int err = GetLastError();
      PrintFormat("WebRequest failed: error %d", err);
      if(err == 4014) Print("Add https://localhost:8443 to the WebRequest allow list");
      return;
     }
   PrintFormat("HTTP %d, %d bytes", code, ArraySize(result));
   Print(CharArrayToString(result, 0, WHOLE_ARRAY, CP_UTF8));
  }

استجابة 8444 بـ 200 ليست خطأ: المصافحة تكتمل، لكن التحقق من الهوية يفشل في العميل ما لم تُثبّت الشهادة الذاتية صراحةً. الرفض المتوقع: UNABLE_TO_VERIFY_LEAF_SIGNATURE أو DEPTH_ZERO_SELF_SIGNED_CERT.

7. أوامر سطر الأوامر

cmd / shell

جارٍ التحميل…