सर्वर को कौन-से TLS वर्ज़न और cipher suites मानने चाहिए?
आज का सर्वर TLS 1.3 (RFC 8446) और TLS 1.2 मानता है, TLS 1.0 और 1.1 ठुकराता है जिन्हें RFC 8996 ने हटाया, और TLS 1.2 में forward-secret AEAD suites को प्राथमिकता देता है, जैसे AES-GCM या ChaCha20-Poly1305 वाला ECDHE (RFC 9325)। RC4, NULL और export suites कभी तय नहीं होनी चाहिए, 3DES और RSA key transport से बचना चाहिए, और वेब सर्वर को Strict-Transport-Security भी भेजना चाहिए ताकि ब्राउज़र सादा HTTP आज़माना बंद करें।
TLS कॉन्फ़िगरेशन चेकर कैसे इस्तेमाल करें
- होस्टनेम, IP एड्रेस या URL डालें; TLS सेवा 443 पर न हो तो पोर्ट बदलें।
- IP एड्रेस के लिए — जैसे CDN के पीछे का origin सर्वर — Server name (SNI) में साइट का नाम लिखें।
- «TLS कॉन्फ़िगरेशन जाँचें» दबाएँ और लगभग 20 सेकंड तक इंतज़ार करें: प्रोब एक के बाद एक चलते हैं।
- ग्रेड और उसकी व्याख्या पढ़ें, फिर प्रोटोकॉल वर्ज़न की तालिका। जो ग्रेड रोक रहा है (अक्सर TLS 1.0/1.1 या HSTS हेडर का न होना) उसे ठीक करें और फिर जाँचें।
TLS कॉन्फ़िगरेशन चेकर की खूबियाँ
- हर वर्ज़न अलग से जाँचता है: सिर्फ़ TLS 1.0, सिर्फ़ 1.1, सिर्फ़ 1.2 और सिर्फ़ 1.3 वाले अलग ClientHello दिखाते हैं कि सर्वर असल में क्या मानता है, सिर्फ़ यह नहीं कि पहले क्या चुनता है
- सिर्फ़ कमज़ोर suites (RC4, 3DES, NULL, EXPORT, anonymous, MD5) वाला hello भेजकर बताता है कि सर्वर इनमें से कौन-सी मानता है
- तय हुई cipher suite उसके key exchange, forward secrecy और AEAD के साथ, ALPN प्रोटोकॉल और हैंडशेक का समय
- https://host/ से Strict-Transport-Security पढ़कर उसे RFC 6797 के अनुसार पार्स करता है, इसलिए max-age=0 को HSTS बंद माना जाता है
- सीमाओं (caps) पर बना A+ से F तक का ग्रेड, हर सीमा की वजह के साथ — कोई छिपे अंक नहीं, और सर्टिफ़िकेट न पढ़ा जा सके तो कोई ग्रेड नहीं
- अनिर्णीत प्रोब ? के रूप में दिखते हैं, इनकार नहीं गिने जाते, ताकि फ़ायरवॉल की एक गड़बड़ी सर्वर को ज़्यादा सख़्त न दिखाए
- सर्टिफ़िकेट का छोटा सारांश (एक्सपायरी, नाम मिलान, चेन पूरी, चेन के सिग्नेचर) ताकि ग्रेड के सर्टिफ़िकेट वाले नियम संदर्भ में पढ़े जा सकें
इनपुट और आउटपुट
इनपुट
- होस्टनेम या URL: नाम, IPv4 या IPv6 एड्रेस, host:port या URL; सिर्फ़ होस्ट और स्पष्ट पोर्ट इस्तेमाल होते हैं।
- पोर्ट: डिफ़ॉल्ट 443; कोई भी TLS सेवा पोर्ट चलेगा (8443, 993, 995, 465…)।
- Server name (SNI), वैकल्पिक: IP एड्रेस या शेयर्ड सर्वर से माँगी जाने वाली साइट। HSTS तभी आँका जाता है जब यह होस्ट के बराबर हो।
आउटपुट
- सारांश: ग्रेड, तय वर्ज़न, forward secrecy, AEAD, TLS 1.0/1.1 बंद हैं या नहीं, मानी गई कमज़ोर suites की संख्या और HSTS max-age दिनों में।
- ग्रेड की व्याख्या: हर सीमा अपने स्तर के साथ (जैसे «C: TLS 1.0 अब भी चालू है।»), या A+ के लिए क्या बाकी है, या ग्रेड क्यों नहीं दिया गया।
- प्रोटोकॉल वर्ज़न: TLS 1.3, 1.2, 1.1 और 1.0 के लिए ✓, ✗ या ?, हर वर्ज़न को परिभाषित या रद्द करने वाले RFC के साथ।
- तय कनेक्शन, HSTS directives, मानी गई कमज़ोर suites (अगर हों) और सर्टिफ़िकेट का सारांश।
TLS कॉन्फ़िगरेशन चेकर का उदाहरण
सिर्फ़ TLS 1.3 और 1.2 वाला सर्वर, एक साल का HSTS (उदाहरण के लिए नतीजा)
इनपुट:
होस्टनेम: www.example.com · पोर्ट: 443आउटपुट:
ग्रेड A+ · तय वर्ज़न TLS 1.3 · Forward secrecy ✓ · AEAD cipher ✓ · TLS 1.0/1.1 बंद ✓ · कमज़ोर suites 0 · HSTS 365 दिन
ग्रेड की व्याख्या: Forward secrecy और AEAD के साथ TLS 1.3, कोई पुराना प्रोटोकॉल नहीं, ऐसी चेन जिसकी कड़ियाँ और सिग्नेचर सत्यापित होते हैं (भरोसा नहीं आँका जाता), और कम से कम 180 दिन का HSTS।
प्रोटोकॉल वर्ज़न: TLS 1.3 ✓ · TLS 1.2 ✓ · TLS 1.1 ✗ · TLS 1.0 ✗
तय कनेक्शन: TLS_AES_256_GCM_SHA384 (0x1302) · key exchange TLS1.3 · ALPN h2TLS कॉन्फ़िगरेशन चेकर के नतीजे कैसे पढ़ें
A+ और A दोनों का मतलब है कि इन जाँचों में कोई कमज़ोरी नहीं मिली; A+ के लिए इसके अलावा यह सबूत भी चाहिए कि TLS 1.3 है, 1.0 और 1.1 ठुकराए गए, weak-cipher प्रोब निर्णायक रहा, चेन के सिग्नेचर सत्यापित हुए और HSTS कम से कम 180 दिन का है। A के नीचे की पंक्ति बताती है कि इनमें से क्या कम है।
B का मतलब अक्सर है कि तय suite में forward secrecy नहीं (RSA key exchange) या AEAD की जगह CBC है। C का मतलब अक्सर TLS 1.0 या 1.1 अब भी चालू है, 3DES माना जाता है, या सर्टिफ़िकेट self-issued या SHA-1 से साइन है। F ऐसी सर्टिफ़िकेट या cipher समस्या है जिसे ब्राउज़र सीधे ठुकराते हैं।
तालिका में ? न पास है न फ़ेल: प्रोब को काम का जवाब नहीं मिला। आम वजह दर सीमित करने वाला फ़ायरवॉल या तेज़ दोबारा कनेक्शन गिराने वाला लोड बैलेंसर है; इस पर फ़ैसला लेने से पहले जाँच दोबारा चलाएँ।
HSTS «आँका नहीं गया» सर्वर के ख़िलाफ़ कोई नतीजा नहीं: हेडर को इस एंडपॉइंट से जोड़ा नहीं जा सका (IP एड्रेस, दूसरा पोर्ट या अलग SNI), इसलिए ग्रेड बस A+ तक नहीं पहुँच सकता।
TLS कॉन्फ़िगरेशन चेकर कब इस्तेमाल करें
- कॉन्फ़िगरेशन बदलने के बाद पक्का करें कि TLS 1.0 और 1.1 सच में बंद हैं और TLS 1.3 चालू है।
- लोड बैलेंसर, रिवर्स प्रॉक्सी या 993/465 पर मेल सर्वर जाँचें, जहाँ ब्राउज़र वाले स्कैनर नहीं पहुँचते।
- सिक्योरिटी रिव्यूअर को सिर्फ़ एक अक्षर नहीं, हर सीमा के साथ ग्रेड की वजह दिखाएँ।
- origin सर्वर को IP और SNI से सीधे जाँचकर उसकी सेटिंग की तुलना आगे लगे CDN से करें।
समस्या निवारण
- «Cloudflare से होकर»: Cloudflare Worker से Cloudflare के एड्रेस पर सीधे कनेक्शन प्लेटफ़ॉर्म रोकता है। Cloudflare edge की TLS सेटिंग उसके डैशबोर्ड (SSL/TLS) में हैं; origin को IP और SNI में साइट के नाम से जाँचें।
- कई वर्ज़न पर ? दिखता है: सर्वर या उसके आगे का फ़ायरवॉल नए कनेक्शन खुलने की रफ़्तार सीमित करता है। एक मिनट रुककर दोबारा जाँचें।
- मुख्य हैंडशेक में «refused the TLS handshake (alert: handshake_failure)»: सर्वर पेश की गई किसी suite को नहीं मानता — जैसे ऐसा सर्वर जो TLS 1.3 में सिर्फ़ ChaCha20 देता है, जिसे मुख्य हैंडशेक पेश नहीं कर सकता, या जो क्लाइंट सर्टिफ़िकेट माँगता है।
- अनुरोध का समय ख़त्म: पूरी जाँच लगभग 22 सेकंड में छह हैंडशेक और एक HTTP अनुरोध तक करती है, और बहुत धीमे सर्वर पर समय कम पड़ सकता है। SSL सर्टिफ़िकेट चेकर सिर्फ़ एक हैंडशेक करता है।
- कोई ग्रेड नहीं: सर्टिफ़िकेट पढ़ा नहीं जा सका (TLS 1.3 सर्वर का एन्क्रिप्टेड Certificate मैसेज प्रोब डिक्रिप्ट नहीं कर सका और TLS 1.2 वाला विकल्प भी विफल रहा)। प्रोटोकॉल और cipher के नतीजे फिर भी सही हैं।
TLS कॉन्फ़िगरेशन चेकर के बारे में अक्सर पूछे जाने वाले सवाल
कैसे पता करें कि मेरी साइट पर TLS 1.0 और 1.1 बंद हैं या नहीं?
जाँच चलाकर प्रोटोकॉल वर्ज़न की तालिका देखें: TLS 1.0 या 1.1 के आगे ✓ का मतलब है सर्वर ने सिर्फ़ उसी वर्ज़न वाला hello मान लिया, ✗ का मतलब उसने ठुकरा दिया। ये दोनों वर्ज़न RFC 8996 में आधिकारिक रूप से हटाए जा चुके हैं, और चालू रहें तो ग्रेड C पर रुक जाता है।
ग्रेड कैसे तय होता है?
अंकों से नहीं, सीमाओं से। हर नतीजा ग्रेड को एक स्तर पर रोकता है और सबसे ख़राब जीतता है: एक्सपायर सर्टिफ़िकेट, नाम मेल न खाना, टूटा सिग्नेचर, RC4, NULL या EXPORT का मतलब F; TLS 1.0/1.1 चालू, 3DES, SHA-1 सिग्नेचर या self-issued सर्टिफ़िकेट C पर रोकते हैं; forward secrecy या AEAD न हो तो B। एक ही स्तर के दो नतीजे एक सीढ़ी और नीचे ले जाते हैं। A+ के लिए इसके अलावा TLS 1.3, 1.0 और 1.1 का इनकार, निर्णायक weak-cipher प्रोब, सही चेन सिग्नेचर और कम से कम 180 दिन का HSTS चाहिए।
✓ या ✗ की जगह ? क्यों दिखता है?
उस वर्ज़न के प्रोब को काम का जवाब नहीं मिला: कनेक्शन नहीं खुला, समय ख़त्म हुआ या हैंडशेक के बीच टूट गया। इससे कॉन्फ़िगरेशन के बारे में कुछ पता नहीं चलता, इसलिए इसे «सपोर्ट नहीं» नहीं बल्कि अनिर्णीत दिखाया जाता है। जाँच दोबारा चलाएँ; आम वजह कनेक्शन की दर सीमित करने वाला फ़ायरवॉल है।
HSTS «आँका नहीं गया» क्यों लिखा है?
हेडर https://host/ पर एक HEAD अनुरोध से पढ़ा जाता है, और वह जाँचे जा रहे एंडपॉइंट को तभी दर्शाता है जब टारगेट पोर्ट 443 पर होस्टनेम हो और SNI वही होस्ट हो। IP एड्रेस, दूसरे पोर्ट या अलग SNI में वह अनुरोध किसी और सेवा का हाल बता सकता है, इसलिए हेडर नहीं आँका जाता और ग्रेड ज़्यादा से ज़्यादा A रहता है।
क्या Cloudflare से होकर चलने वाली साइट जाँची जा सकती है?
यहाँ से नहीं: जाँच Cloudflare Workers पर चलती है और प्लेटफ़ॉर्म Cloudflare के अपने एड्रेस पर सीधे कनेक्शन रोकता है। Cloudflare edge की TLS सेटिंग (न्यूनतम वर्ज़न, TLS 1.3) उसके डैशबोर्ड के SSL/TLS सेक्शन में होती हैं। अपना origin सर्वर फिर भी उसका IP और SNI में अपना होस्टनेम डालकर जाँच सकते हैं।
यह जाँच मेरे सर्वर को क्या भेजती है?
अधिकतम छह ClientHello, एक के बाद एक, हर एक सर्वर के पहले जवाब के बाद छोड़ दिया जाता है, और HSTS के लिए एक HEAD अनुरोध। कोई ऐप्लिकेशन डेटा नहीं, लॉगिन नहीं, लोड टेस्ट नहीं। सिर्फ़ उन्हीं सर्वरों पर चलाएँ जिन्हें जाँचने की आपको अनुमति है।
तकनीकी नोट्स
हर प्रोब Mutqan सर्वर का बनाया ClientHello है। मुख्य hello AES-GCM suites के साथ TLS 1.3 (RFC 8446) और आधुनिक व संगत suites के साथ TLS 1.2 व उससे नीचे पेश करता है; हर वर्ज़न-प्रोब सिर्फ़ एक वर्ज़न रखता है, और सिर्फ़-TLS 1.3 प्रोब सभी पाँच TLS 1.3 suites पेश करता है। hello के तुरंत बाद alert या साफ़ बंद होना इनकार गिना जाता है; कनेक्ट न होना, टाइमआउट या हैंडशेक के बीच कनेक्शन टूटना वर्ज़न को अनिर्णीत छोड़ता है।
TLS 1.0 और 1.1 को RFC 8996 ने 2021 में हटाया, और RFC 9325 (BCP 195) कहता है कि TLS 1.3 सपोर्ट करें, TLS 1.2 में forward-secret AEAD suites को प्राथमिकता दें, 3DES और RSA key transport से बचें, और RC4 (RFC 7465), NULL या export ciphers कभी तय न करें। ग्रेड इन्हीं नियमों पर चलता है: तय हुई या मानी गई RC4, NULL, EXPORT, anonymous या DES suite का मतलब F, 3DES का C, और बिना forward secrecy या AEAD वाली suite का B।
HSTS RFC 6797 में परिभाषित है: max-age शून्य से बड़ी सेकंड की संख्या होनी चाहिए, includeSubDomains और preload फ़्लैग हैं। हेडर https://host/ पर एक HEAD अनुरोध से सिर्फ़ तब पढ़ा जाता है जब वह अनुरोध इसी एंडपॉइंट तक पहुँचे — होस्टनेम, पोर्ट 443 और होस्ट के बराबर SNI।
सर्टिफ़िकेट के नियम मुख्य हैंडशेक में पढ़े गए leaf से आते हैं: एक्सपायर या अभी लागू नहीं, ऐसा नाम जो कवर नहीं, चेन की ऐसी कड़ी जिसका सिग्नेचर सत्यापित न हो (RFC 5280 पाथ की कड़ियाँ WebCrypto से जाँची जाती हैं), MD5 या SHA-1 सिग्नेचर और 2048 बिट से छोटी RSA key। कोई trust store इस्तेमाल नहीं होता; जिस चेन के सारे सिग्नेचर सत्यापित हों उसे वैसा ही बताया जाता है, भरोसेमंद नहीं कहा जाता।
सीमाएँ और कार्यप्रणाली
प्रोब उस Cloudflare डेटा सेंटर से चलते हैं जो आपका अनुरोध संभालता है, आपके नेटवर्क से नहीं; क्लाइंट एड्रेस या क्षेत्र के हिसाब से जवाब बदलने वाले सर्वर आपके विज़िटर को दूसरा कॉन्फ़िगरेशन दिखा सकते हैं।
जिन साइटों के नाम Cloudflare पर रिज़ॉल्व होते हैं वे बिल्कुल नहीं जाँची जा सकतीं, क्योंकि प्लेटफ़ॉर्म Cloudflare के अपने एड्रेस रेंज पर सीधे सॉकेट नहीं खोलने देता — और वेब का बड़ा हिस्सा ऐसा है।
हर suite की गिनती नहीं होती: रिपोर्ट इस प्रोब के साथ तय हुई suite और मानी गई कमज़ोर suites दिखाती है, सर्वर की पूरी प्राथमिकता सूची नहीं। SSL 3.0, renegotiation, OCSP stapling, session resumption और ज्ञात प्रोटोकॉल हमले नहीं जाँचे जाते।
न trust store, न revocation जाँच: ग्रेड का सर्टिफ़िकेट वाला हिस्सा तारीख़ें, नाम, key का आकार, सिग्नेचर का हैश और चेन की हर कड़ी का सत्यापन जाँचता है, यह नहीं कि ब्राउज़र root पर भरोसा करता है।
सुरक्षा और गोपनीयता
होस्ट, पोर्ट और server name Mutqan सर्वर तक जाते हैं, जो नाम रिज़ॉल्व करके अधिकतम छह छोटे TLS कनेक्शन खोलता है और एक HEAD अनुरोध भेजता है; टारगेट या नतीजे के बारे में कुछ भी स्टोर नहीं होता। सर्वर को ये प्रोब अधूरे छोड़े गए हैंडशेक जैसे दिखते हैं और उसके लॉग में आ सकते हैं — सिर्फ़ वही सर्वर जाँचें जिनकी आपको अनुमति है।
संदर्भ
- RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3TLS 1.3 हैंडशेक और रिकॉर्ड प्रोटोकॉल जो HTTPS ट्रैफ़िक की रक्षा करते हैं।
- RFC 8996: Deprecating TLS 1.0 and TLS 1.1TLS 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 सपोर्ट करें, forward-secret AEAD suites को प्राथमिकता दें, RC4, NULL या export suites कभी नहीं, 3DES से बचें, और वेब सर्वर HSTS भेजें।