ما هو TLS؟
TLS (أمان طبقة النقل) بروتوكول تشفيري يوفر اتصالاً آمناً عبر شبكات الحاسوب. وهو خلف SSL (طبقة المقابس الآمنة) وخلف اتصالات HTTPS وإرسال البريد الآمن عبر STARTTLS وكثير من بروتوكولات الإنترنت المشفرة. وعندما ترى رمز القفل في المتصفح، يكون TLS مشغلاً لتشفير البيانات بين جهازك والخادم.تاريخ إصدارات TLS
| الإصدار | السنة | الحالة |
|---|---|---|
| SSL 2.0 | 1995 | مهجور وغير آمن |
| SSL 3.0 | 1996 | مهجور وغير آمن |
| TLS 1.0 | 1999 | مهجور |
| TLS 1.1 | 2006 | مهجور |
| TLS 1.2 | 2008 | المعيار الحالي |
| TLS 1.3 | 2018 | الأحدث والموصى به |
كيف يعمل TLS؟
مصافحة TLS (TLS 1.2)
Client Server
│ │
├──── ClientHello ─────────────────► │
│ (supported ciphers, random) │
│ │
│ ◄─── ServerHello ──────────────────┤
│ (selected cipher, cert) │
│ │
├──── Key Exchange ────────────────► │
│ (encrypted pre-master secret) │
│ │
│ ◄─── Finished ─────────────────────┤
│ │
└──── Encrypted Data ◄──────────────►┘
تحسينات TLS 1.3
- عدد أقل من جولات الاتصال، ومصافحة أسرع
- إزالة الشفرات غير الآمنة
- جعل السرية الأمامية إلزامية
- تشفير رسائل المصافحة
مكونات TLS
الشهادات
- توثق هوية الخادم
- تصدرها جهات تصديق معتمدة
- تحتوي مفتاحاً عاماً للتشفير
مجموعات الشفرات
تحدد خوارزميات التشفير المستخدمة:
TLS_AES_256_GCM_SHA384 (TLS 1.3)
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (TLS 1.2)
│ │ │ │
│ │ │ └── Hash algorithm
│ │ └── Encryption algorithm
│ └── Key exchange
└── Protocol
استخدامات TLS
| التطبيق | البروتوكول | المنفذ |
|---|---|---|
| تصفح الويب | HTTPS | 443 |
| البريد (IMAP) | IMAPS | 993 |
| البريد (SMTP) | SMTPS | 465 |
| إرسال البريد | STARTTLS | 587 |
| FTP | FTPS | 990 |
إعداد الخادم
إعداد TLS في Nginx
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;
ssl_session_cache shared:SSL:10m;
أفضل الممارسات
1. استخدم TLS 1.2 أو 1.3: عطّل الإصدارات الأقدم.
2. اختر مجموعات شفرات قوية: فضّل شفرات AEAD.
3. فعّل HSTS: أجبِر الاتصالات على استخدام TLS.
4. أدر الشهادات: أتمت التجديد.
5. فعّل السرية الأمامية: استخدم تبادل مفاتيح ECDHE.
6. اختبر بانتظام: استخدم SSL Labs وtestssl.sh.
اختبار إعداد TLS
# OpenSSL test
openssl s_client -connect example.com:443 -tls1_3
# Check certificate
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -text
TLS هو أساس الاتصال الآمن عبر الإنترنت، إذ يشفر البيانات أثناء النقل ويحميها من التنصت والتلاعب وهجمات الرجل في الوسط.