TLS 1.3, Transport Layer Security protocol का current version है, जिसे August 2018 में RFC 8446 के रूप में publish किया गया। यह एक fundamental redesign है — कोई incremental update नहीं — जो HTTPS को किसी भी previous version से faster, simpler और ज्यादा secure बनाता है।
2026 तक, 62% websites TLS 1.3 support करती हैं, और सभी major browsers ने 2018 से इसे support किया है।
TLS 1.2 से क्या बदला
| TLS 1.2 | TLS 1.3 | |
|---|---|---|
| Handshake | 2 round trips | 1 round trip (1-RTT) |
| Resume connection | 1 round trip | 0-RTT (first message के साथ data) |
| Cipher suites | 37 (कई weak) | 5 (सभी secure) |
| Forward secrecy | Optional | Mandatory |
| RSA key exchange | Supported | Removed |
| Static DH | Supported | Removed |
| CBC ciphers | Supported | Removed |
| RC4, DES, 3DES | कुछ configs | Removed |
| Handshake में MD5, SHA-1 | Allowed | Removed |
| Handshake में certificate | Plaintext (visible) | Encrypted |
| Compression | Optional | Removed (CRIME prevention) |
| Renegotiation | Supported | Removed |
Design philosophy: वो सब कुछ हटाओ जो गलत तरीके से configure किया जा सकता है। TLS 1.2 में 37 cipher suites हैं — कुछ secure, कुछ broken। TLS 1.3 में 5 हैं, सभी secure।
5 TLS 1.3 cipher suites
TLS_AES_256_GCM_SHA384 ← सबसे strong, सबसे common
TLS_AES_128_GCM_SHA256 ← Widely used, थोड़ा faster
TLS_CHACHA20_POLY1305_SHA256 ← ARM/mobile के लिए best (कोई AES-NI नहीं)
TLS_AES_128_CCM_SHA256 ← IoT/embedded
TLS_AES_128_CCM_8_SHA256 ← IoT/embedded (smaller tag)
इन्हें misconfigure नहीं कर सकते — ये सभी strong keys के साथ AEAD ciphers हैं। TLS 1.2 जैसा “गलती से weak cipher enable करने” का कोई risk नहीं।
1-RTT handshake: यह fast क्यों है
TLS 1.2 handshake (2 round trips):
Client → Server: ClientHello (supported ciphers)
Server → Client: ServerHello, Certificate, KeyExchange
Client → Server: KeyExchange, ChangeCipherSpec, Finished
Server → Client: ChangeCipherSpec, Finished
[Encrypted data flow होने से पहले 4 messages]
TLS 1.3 handshake (1 round trip):
Client → Server: ClientHello + KeyShare
Server → Client: ServerHello + KeyShare + Certificate + Finished
Client → Server: Finished
[1 round trip के बाद encrypted data flow हो सकता है]
Client पहले message में अपने key share parameters भेजता है — server द्वारा पहले algorithms specify करने का wait करने की जरूरत नहीं। यह handshake को 2 round trips से 1 तक cut करता है।
0-RTT resumption
Returning visitors के लिए (जो पहले connect हो चुके हैं), TLS 1.3 0-RTT support करता है — first message के साथ भेजा गया encrypted application data:
Client → Server: ClientHello + KeyShare + EarlyData (encrypted request)
Server → Client: ServerHello + response
Request handshake complete होने से पहले भेजा जाता है। Trade-off: 0-RTT data replay attacks के लिए vulnerable है, इसलिए सिर्फ idempotent requests (GET, POST नहीं) के लिए use करना चाहिए।
Mandatory forward secrecy
TLS 1.2 में, आप RSA key exchange use कर सकते थे — server की long-term RSA key directly pre-master secret decrypt करती है। अगर कोई traffic record करता है और बाद में server की private key चुरा लेता है, तो वो सभी past conversations decrypt कर सकता है।
TLS 1.3 RSA key exchange completely remove करता है। सभी key exchanges ephemeral Diffie-Hellman (ECDHE) use करते हैं — हर connection के लिए एक unique key pair create होता है। Server की private key चुराने से past sessions decrypt नहीं होते। Forward secrecy के बारे में और जानें →
Encrypted certificate
TLS 1.2 में, server का certificate (domain name सहित) handshake के दौरान plaintext में भेजा जाता है। एक passive observer देख सकता है कि आप किस site से connect हो रहे हैं।
TLS 1.3 में, certificate handshake keys derive होने के बाद भेजा जाता है — यह encrypted होता है। SNI (Server Name Indication) TLS 1.3 में अभी भी visible है, लेकिन Encrypted Client Hello (ECH) future में उसे भी encrypt करेगा।
TLS 1.3 कैसे enable करें
Check करें कि पहले से enabled है
echo | openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -tls1_3 2>/dev/null | grep "Protocol"
# Expected: TLSv1.3
Nginx (1.13+ OpenSSL 1.1.1+ के साथ)
ssl_protocols TLSv1.2 TLSv1.3;
TLS 1.3 modern Nginx में by default enabled है — बस इसे disable नहीं करना है।
Apache (2.4.37+ OpenSSL 1.1.1+ के साथ)
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
यह TLS 1.2 और 1.3 दोनों enable करता है।
अपना OpenSSL version check करें
openssl version
# Required: TLS 1.3 support के लिए OpenSSL 1.1.1+
अगर आपका OpenSSL old है, तो upgrade करें या अपना OS upgrade करें।
क्या सिर्फ TLS 1.3 enforce करना चाहिए?
अभी नहीं। लगभग 38% sites TLS 1.3 support नहीं करतीं, और कुछ clients (corporate proxies, Java 8, old embedded systems) सिर्फ TLS 1.2 support करते हैं। आज TLS 1.2 हटाने से कुछ users बाहर हो जाएँगे।
Recommended config: TLS 1.2 और 1.3 दोनों support करें। Modern clients के लिए TLS 1.3 की speed मिलती है और compatibility बनी रहती है। Google, Cloudflare, और ज्यादातर major sites यही करती हैं।
FAQ
क्या TLS 1.3 के लिए new certificate चाहिए?
नहीं। Same certificate TLS 1.2 और 1.3 दोनों के साथ काम करता है। Certificates protocol-agnostic हैं — इनमें एक public key और CA signature होता है, चाहे कोई भी TLS version use करे।
क्या TLS 1.3 performance affect करता है?
हाँ, positively। 1-RTT handshake first connection पर 50-100ms बचाता है। 0-RTT resumption returning visitors के लिए handshake latency completely eliminate करता है। HTTP/2 (जिसके लिए HTTPS जरूरी है) के साथ मिलकर, TLS 1.3 sites measurably faster हैं।
क्या TLS 1.2 अभी भी secure है?
हाँ, AEAD cipher suites (AES-GCM, ChaCha20-Poly1305) और ECDHE key exchange के साथ। TLS 1.2 में CBC ciphers avoid करें — ये attacks (BEAST, Lucky13) के लिए vulnerable रहे हैं। TLS 1.3 better है, लेकिन modern ciphers के साथ TLS 1.2 secure रहता है।
TLS 1.4 के बारे में?
कोई TLS 1.4 plan नहीं है। IETF TLS 1.3 को near future के लिए target मानता है। अगला major change post-quantum key exchange (ML-KEM) existing ECDHE के साथ hybrid के रूप में include करना होगा — यह TLS 1.3 के within होगा, new version के रूप में नहीं।