SSL/TLS: मुख्य अवधारणाएँ और डेवलपमेंट में प्रोटोकॉल

लेखक: IT Sectr प्रकाशित: 2026-03-09 पढ़ने का समय: 9 मिनट

SSL/TLS क्रिप्टोग्राफ़िक प्रोटोकॉल हैं जो मोबाइल एप्लिकेशन और सर्वर के बीच डेटा को एन्क्रिप्ट करते हैं, ट्रैफ़िक की गोपनीयता और अखंडता सुनिश्चित करते हैं। Apple (2026) के अनुसार, App Transport Security सभी iOS उपकरणों पर डिफ़ॉल्ट रूप से TLS 1.2 से नीचे के कनेक्शनों को ब्लॉक करता है। TLS 1.3 TLS 1.2 की तुलना में हैंडशेक समय को 2 गुना कम करता है, मोबाइल एप्लिकेशन के UX में सुधार करता है।

मुख्य बिंदु

  • TLS एक आधुनिक क्रिप्टोग्राफ़िक प्रोटोकॉल है, जो बेहतर सुरक्षा के साथ पुराने SSL का उत्तराधिकारी है।
  • TLS 1.3 TLS 1.2 में 2 RTT की तुलना में 1 RTT में हैंडशेक करता है, लोडिंग को तेज़ करता है।
  • App Transport Security Apple का तंत्र है जो iOS पर TLS 1.2+ के साथ HTTPS की आवश्यकता रखता है।
  • Network Security Config XML कॉन्फ़िगरेशन के माध्यम से Android के लिए HTTPS सेटिंग है।
  • Certificate Pinning कोड में सर्टिफिकेट फ़िंगरप्रिंट को पिन करके MitM हमलों से सुरक्षा करता है।

SSL/TLS क्या है?

SSL (सिक्योर सॉकेट्स लेयर) और TLS (ट्रांसपोर्ट लेयर सिक्योरिटी) क्रिप्टोग्राफ़िक प्रोटोकॉल हैं जो नेटवर्क पर सुरक्षित डेटा ट्रांसमिशन सुनिश्चित करते हैं। SSL, जिसे 1990 के दशक में Netscape द्वारा विकसित किया गया था, POODLE और BEAST कमज़ोरियों के कारण संस्करण 3.0 के बाद पुराना माना जाता है। TLS, इसका उत्तराधिकारी, संस्करण 1.0, 1.1, 1.2 और 1.3 से गुज़रा है — केवल TLS 1.2 और TLS 1.3 को वर्तमान माना जाता है। सभी आधुनिक मोबाइल प्लेटफ़ॉर्म नेटवर्क कनेक्शन के लिए TLS की आवश्यकता रखते हैं, और App Store और Google Play समीक्षा के दौरान इसकी जाँच करते हैं।

मोबाइल एप्लिकेशन के लिए TLS क्यों

TLS के बिना, एप्लिकेशन और सर्वर के बीच ट्रैफ़िक सादे टेक्स्ट में प्रेषित होता है — उसी Wi-Fi नेटवर्क पर कोई भी व्यक्ति Wireshark या tcpdump का उपयोग करके लॉगिन, पासवर्ड, टोकन और उपयोगकर्ताओं के व्यक्तिगत डेटा को इंटरसेप्ट कर सकता है। TLS सभी प्रेषित डेटा को एन्क्रिप्ट करता है (ट्रांसपोर्ट-लेयर एन्क्रिप्शन) और X.509 प्रमाणपत्रों की श्रृंखला के माध्यम से सर्वर की प्रामाणिकता की पुष्टि करता है। IETF (2018) के अनुसार, TLS 1.3 केवल आधुनिक AEAD सिफ़र (AES-GCM, ChaCha20-Poly1305) का उपयोग करता है, RC4 और 3DES जैसे पुराने एल्गोरिदम को छोड़कर।

HTTPS और TLS

HTTPS (HTTP सिक्योर) TLS के ऊपर HTTP है। जब कोई मोबाइल एप्लिकेशन https:// के माध्यम से अनुरोध करता है, तो यह पहले सर्वर के साथ TLS कनेक्शन स्थापित करता है, फिर एन्क्रिप्टेड चैनल के माध्यम से HTTP हेडर और अनुरोध बॉडी प्रेषित करता है। HTTPS के बिना, कोई भी गंभीर API काम नहीं करना चाहिए — यह बुनियादी सुरक्षा स्वच्छता है। OWASP (2026) के अनुसार, असुरक्षित कनेक्शन मोबाइल एप्लिकेशन की शीर्ष 3 कमज़ोरियों में से हैं।

TLS हैंडशेक कैसे काम करता है

TLS हैंडशेक क्लाइंट और सर्वर के बीच सुरक्षित कनेक्शन स्थापित करने की प्रक्रिया है। पक्ष प्रोटोकॉल संस्करण पर बातचीत करते हैं, सिफ़र सूट चुनते हैं, असममित क्रिप्टोग्राफ़ी के माध्यम से कुंजियों का आदान-प्रदान करते हैं, और प्रमाणपत्रों की पुष्टि करते हैं। TLS 1.2 में, हैंडशेक के लिए 2 राउंड ट्रिप टाइम (2 RTT) की आवश्यकता होती है: क्लाइंट → सर्वर ClientHello के साथ, सर्वर → क्लाइंट ServerHello और Certificate के साथ, फिर अंतिम Finished संदेश। TLS 1.3 इस प्रक्रिया को 1 RTT तक कम करता है।

TLS 1.2 हैंडशेक के विस्तृत चरण

पहला चरण: ClientHello — क्लाइंट समर्थित TLS संस्करण, सिफ़र सूट की सूची और एक यादृच्छिक संख्या भेजता है। सर्वर ServerHello के साथ जवाब देता है, एक संस्करण और सिफ़र सूट चुनता है, अपना X.509 प्रमाणपत्र (Certificate) और ServerHelloDone संदेश भेजता है। क्लाइंट विश्वसनीय प्रमाणपत्र प्राधिकरणों (CA) की श्रृंखला के माध्यम से प्रमाणपत्र सत्यापित करता है, एक pre-master secret उत्पन्न करता है, इसे प्रमाणपत्र से सार्वजनिक कुंजी से एन्क्रिप्ट करता है, और इसे ClientKeyExchange में सर्वर को भेजता है। इसके बाद, दोनों पक्ष सत्र कुंजियाँ उत्पन्न करते हैं और ChangeCipherSpec और Finished संदेशों का आदान-प्रदान करते हैं। इस बिंदु से, सभी डेटा सममित रूप से एन्क्रिप्ट किया जाता है।

swift
import Security

let url = URL(string: "https://api.example.com")!
let session = URLSession(configuration: .default,
                           delegate: self,
                           delegateQueue: nil)

func urlSession(
    _ session: URLSession,
    didReceive challenge: URLAuthenticationChallenge,
    completionHandler: @escaping (URLSession.AuthChallengeDisposition,
                                    URLCredential?) -> Void
) {
    let trust = challenge.protectionSpace.serverTrust
    guard let trust else {
        completionHandler(.cancelAuthenticationChallenge, nil)
        return
    }
    completionHandler(.useCredential, URLCredential(trust: trust))
}

URLSessionDelegate के माध्यम से iOS पर URLAuthenticationChallenge को संभालने का उदाहरण। यह विधि प्रत्येक TLS हैंडशेक के दौरान कॉल की जाती है, जिससे एप्लिकेशन को सर्वर प्रमाणपत्र की कस्टम जाँच करने की अनुमति मिलती है। प्रोडक्शन उपयोग के लिए, SecTrustEvaluateWithError के माध्यम से प्रमाणपत्र सत्यापन जोड़ें और पहले से सहेजी गई फ़िंगरप्रिंट से तुलना करें — उसके बाद ही useCredential कॉल करें।

TLS 1.2 बनाम TLS 1.3

TLS 1.3 (RFC 8446, 2018) 10 वर्षों में पहला प्रमुख प्रोटोकॉल अपडेट है। मुख्य सुधार: हैंडशेक 1 RTT तक कम हो गया (दोहराए गए कनेक्शन के लिए 0 RTT), पुराने सिफ़र सूट हटा दिए गए (RSA कुंजी विनिमय, CBC-मोड), अनिवार्य परफेक्ट फॉरवर्ड सीक्रेसी (PFS), और signed transcript के माध्यम से डाउनग्रेड हमलों से सुरक्षा। Qualys SSL Labs (2026) के अनुसार, TLS 1.3 PFS के कारण दीर्घकालिक सर्वर कुंजी के समझौता होने पर भी सुरक्षा प्रदान करता है।

विशेषताTLS 1.2TLS 1.3
हैंडशेक2 RTT (पूर्ण)1 RTT (PSK के साथ 0 RTT)
सिफ़र सूट30+ संयोजन (RSA, DH, ECDH)5 AEAD सूट (AES-GCM, ChaCha20)
फॉरवर्ड सीक्रेसीवैकल्पिक (DHE, ECDHE)अनिवार्य (सभी सूट)
iOS समर्थनiOS 5+iOS 12+
Android समर्थनAndroid 4.0+Android 10+
पुराने एल्गोरिदमRSA, CBC, RC4, 3DESपूरी तरह हटा दिए गए

0-RTT (ज़ीरो राउंड ट्रिप टाइम) TLS 1.3 की एक विशेषता है जो क्लाइंट को PSK (प्री-शेयर्ड की) के माध्यम से दोहराए गए कनेक्शन के दौरान ClientHello के साथ तुरंत डेटा भेजने की अनुमति देती है। यह मोबाइल एप्लिकेशन में बाद की स्क्रीन की लोडिंग को तेज़ करता है, विशेष रूप से एक ही सर्वर पर लगातार अनुरोधों के साथ। हालांकि, 0-RTT डेटा रीप्ले हमलों से सुरक्षित नहीं है — इसे इंटरसेप्ट और पुनः भेजा जा सकता है। 0-RTT का उपयोग केवल आइडेम्पोटेंट अनुरोधों (GET, PUT) के लिए करें जिनके कोई दुष्प्रभाव न हों।

iOS पर TLS: App Transport Security

App Transport Security (ATS) Apple का तंत्र है जो TLS 1.2 या उच्चतर के साथ HTTPS कनेक्शन की आवश्यकता रखता है, जो iOS 9 से डिफ़ॉल्ट रूप से सक्षम है। ATS सभी HTTP कनेक्शन और TLS 1.2 से नीचे के HTTPS को ब्लॉक करता है। डेवलपर विशिष्ट डोमेन के लिए NSAppTransportSecurity के माध्यम से Info.plist में अपवाद कॉन्फ़िगर कर सकता है, लेकिन Apple अपवादों को कम करने और हर जगह HTTPS का उपयोग करने की अनुशंसा करता है। ATS आवश्यकताओं का उल्लंघन App Store समीक्षा में एप्लिकेशन अस्वीकृति का कारण है।

xml
<!-- Info.plist — App Transport Security -->
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <false/>
    <key>NSExceptionDomains</key>
    <dict>
        <key>cdn.example.com</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <false/>
            <key>NSExceptionMinimumTLSVersion</key>
            <string>TLSv1.2</string>
        </dict>
    </dict>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

Info.plist में ATS कॉन्फ़िगरेशन। NSAllowsArbitraryLoads को false पर सेट किया गया है — सभी कनेक्शनों को HTTPS का उपयोग करना होगा। डोमेन cdn.example.com के लिए, न्यूनतम TLS संस्करण 1.2 निर्दिष्ट किया गया है, NSAllowsLocalNetworking=true स्थानीय नेटवर्क के लिए HTTP की अनुमति देता है (डेव सर्वर के लिए उपयोगी)। Apple बिना NSExceptionDomains के NSAllowsArbitraryLoads सक्षम न करने की दृढ़ता से अनुशंसा करता है — यह एक अपवाद होना चाहिए, सामान्य नियम नहीं।

Android पर TLS: Network Security Config

Network Security Config Java/Kotlin कोड बदले बिना HTTPS और TLS कॉन्फ़िगर करने का Android तंत्र है। कॉन्फ़िगरेशन network_security_config.xml फ़ाइल में निर्दिष्ट किया जाता है और android:networkSecurityConfig विशेषता के माध्यम से AndroidManifest में जोड़ा जाता है। विश्वसनीय प्रमाणपत्रों (उपयोगकर्ता और सिस्टम CA), Certificate Pinning, क्लियरटेक्स्ट HTTP को अक्षम करना, डीबग ओवरराइड और ट्रैफ़िक रीडायरेक्शन के कॉन्फ़िगरेशन का समर्थन करता है।

xml
<!-- res/xml/network_security_config.xml -->
<network-security-config>
    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">api.example.com</domain>
        <pin-set expiration="2027-01-01">
            <pin digest="SHA-256">
                47DEQpj8HBSa+/TImW+5JCeuQeRkm5NMpJWZG3hSuFU=
            </pin>
        </pin-set>
    </domain-config>
</network-security-config>

Android के लिए Network Security Config। Base-config क्लियरटेक्स्ट ट्रैफ़िक को ब्लॉक करता है और केवल सिस्टम CA प्रमाणपत्रों पर भरोसा करता है (कोई उपयोगकर्ता प्रमाणपत्र नहीं — उपयोगकर्ताओं द्वारा MitM प्रमाणपत्र स्थापना से सुरक्षा)। api.example.com के लिए Domain-config में SHA-256 प्रमाणपत्र फ़िंगरप्रिंट के साथ pin-set है। यदि सर्वर प्रमाणपत्र निर्दिष्ट समाप्ति तिथि से पहले बदलता है, तो कनेक्शन अस्वीकार कर दिया जाएगा — यह Certificate Pinning का एक सख्त रूप है।

Certificate Pinning और सुरक्षा

Certificate Pinning एप्लिकेशन कोड में सर्वर के प्रमाणपत्र या सार्वजनिक कुंजी को फिक्स करने की एक तकनीक है। प्रत्येक TLS हैंडशेक के दौरान, क्लाइंट सर्वर प्रमाणपत्र की तुलना पहले से सहेजी गई फ़िंगरप्रिंट (SHA-256 हैश) से करता है। भले ही कोई हमलावर विश्वसनीय CA प्रमाणपत्र प्राप्त कर ले या प्रमाणपत्र प्राधिकरण से समझौता कर ले, वे MitM हमला नहीं कर सकते — एप्लिकेशन CA श्रृंखला नहीं, बल्कि विशिष्ट फ़िंगरप्रिंट की जाँच करता है। यह विशेष रूप से वित्तीय एप्लिकेशन और संवेदनशील डेटा वाले ऐप्स के लिए महत्वपूर्ण है।

Pinning के जोखिम और विकल्प

Certificate Pinning में सावधानी की आवश्यकता है: जब सर्वर प्रमाणपत्र बदलता है, तो एप्लिकेशन के सभी पुराने संस्करण कनेक्ट होना बंद कर देंगे। कई बैकअप फ़िंगरप्रिंट (प्राथमिक + बैकअप) संग्रहीत करने, pin-set समाप्ति तिथि निर्दिष्ट करने और मानक CA सत्यापन के माध्यम से फ़ॉलबैक तंत्र लागू करने की अनुशंसा की जाती है। एक विकल्प ट्रस्ट ऑन फ़र्स्ट यूज़ (TOFU) है, जहाँ एप्लिकेशन पहले कनेक्शन पर प्रमाणपत्र को याद रखता है और बदलने पर उपयोगकर्ता को चेतावनी देता है। OWASP (2026) के अनुसार, Certificate Pinning की अनुपस्थिति मोबाइल एप्लिकेशन की शीर्ष 3 कमज़ोरियों (M3: असुरक्षित संचार) में से एक है।

Alamofire में Pinning का कार्यान्वयन

Alamofire 5+ में, Certificate Pinning को ServerTrustManager के साथ PinnedCertificatesTrustEvaluator (पूर्ण प्रमाणपत्र जाँच) या PublicKeysTrustEvaluator (केवल सार्वजनिक कुंजी) के माध्यम से कॉन्फ़िगर किया जाता है। सार्वजनिक कुंजी बेहतर है — यह उसी CA के साथ प्रमाणपत्र नवीनीकरण पर नहीं बदलती है। [host: evaluator] शब्दकोश के साथ ServerTrustManager बनाएँ, इसे Session को पास करें, और सुरक्षित API के सभी अनुरोधों के लिए इसका उपयोग करें।

अक्सर पूछे जाने वाले प्रश्न

SSL और TLS में क्या अंतर है?

SSL एक पुराना प्रोटोकॉल है (संस्करण 2.0 और 3.0), जिसे POODLE और BEAST कमज़ोरियों के कारण असुरक्षित माना गया। TLS इसका उत्तराधिकारी है, जो TLS 1.0 (RFC 2246, 1999) से शुरू होता है। कोई भी आधुनिक “SSL प्रमाणपत्र” एक X.509 प्रमाणपत्र है जो TLS प्रोटोकॉल द्वारा उपयोग किया जाता है। SSL 3.0 सभी आधुनिक ऑपरेटिंग सिस्टम और ब्राउज़रों में प्रतिबंधित है।

Apple HTTP कनेक्शन क्यों ब्लॉक करता है?

App Transport Security Apple की एप्लिकेशन सुरक्षा आवश्यकता है। HTTP डेटा को सादे टेक्स्ट में प्रेषित करता है, जिससे सार्वजनिक Wi-Fi नेटवर्क पर टोकन और उपयोगकर्ताओं के व्यक्तिगत डेटा को इंटरसेप्ट किया जा सकता है। ATS डिफ़ॉल्ट रूप से HTTP और TLS 1.2 से नीचे के HTTPS को ब्लॉक करता है, डेवलपर की कार्रवाई के बिना भी उपयोगकर्ताओं की सुरक्षा करता है।

कैसे जाँचें कि सर्वर TLS 1.3 का समर्थन करता है?

SSL Labs (ssllabs.com/ssltest) या कमांड लाइन का उपयोग करें: openssl s_client -tls1_3 -connect example.com:443। अधिकांश क्लाउड प्लेटफ़ॉर्म (AWS CloudFront, Cloudflare, Nginx 1.19+, Caddy) पर, TLS 1.3 डिफ़ॉल्ट रूप से सक्षम है। Android 10+ पर, समर्थन सिस्टम Conscrypt प्रदाता में निर्मित है।

सेल्फ-साइन्ड सर्टिफिकेट क्या है और क्या इसे प्रोडक्शन में उपयोग किया जा सकता है?

सेल्फ-साइन्ड सर्टिफिकेट एक प्रमाणपत्र है जो प्रमाणपत्र प्राधिकरण द्वारा नहीं, बल्कि स्वयं द्वारा हस्ताक्षरित होता है। इसे प्रोडक्शन में उपयोग नहीं किया जा सकता — मोबाइल ऑपरेटिंग सिस्टम ऐसे प्रमाणपत्र पर भरोसा नहीं करते हैं। इसका उपयोग स्थानीय डेवलपमेंट के लिए किया जाता है: MDM के माध्यम से प्रमाणपत्र को विश्वसनीय में जोड़ें या सत्यापन अक्षम के साथ डीबग बिल्ड का उपयोग करें।

Alamofire में Pinning कैसे कॉन्फ़िगर करें?

ServerTrustManager को PinnedCertificatesTrustEvaluator या PublicKeysTrustEvaluator के साथ बनाएँ। पहला पूर्ण प्रमाणपत्र की जाँच करता है, दूसरा — केवल सार्वजनिक कुंजी (बेहतर)। मैनेजर को Session(configuration: serverTrustManager:) में पास करें और सभी API अनुरोधों के लिए सत्र का उपयोग करें।

सारांश

  • TLS एक आधुनिक एन्क्रिप्शन प्रोटोकॉल है, जो पुराने SSL का उत्तराधिकारी है, सभी मोबाइल एप्लिकेशन के लिए अनिवार्य है।
  • TLS 1.3 1 RTT में हैंडशेक करता है (TLS 1.2 से 2 गुना तेज़) अनिवार्य फॉरवर्ड सीक्रेसी और केवल AEAD सिफ़र के साथ।
  • App Transport Security (iOS) iOS 9+ वाले सभी Apple उपकरणों पर HTTP और TLS 1.2 से नीचे को स्वचालित रूप से ब्लॉक करता है।
  • Network Security Config (Android) कोड बदले बिना XML के माध्यम से HTTPS, Certificate Pinning और क्लियरटेक्स्ट प्रतिबंध कॉन्फ़िगर करता है।
  • Certificate Pinning Network Security Config या ServerTrustManager में SHA-256 प्रमाणपत्र फ़िंगरप्रिंट को पिन करके MitM हमलों से सुरक्षा करता है।
  • TLS 1.3 5 AEAD सिफ़र सूट का उपयोग करता है, पुराने RSA कुंजी विनिमय और CBC एन्क्रिप्शन मोड को छोड़कर।
  • TLS कॉन्फ़िगरेशन एक अनिवार्य प्रकाशन चरण है: App Store ATS की जाँच करता है, Google Play Network Security Config के माध्यम से क्लियरटेक्स्ट ट्रैफ़िक की जाँच करता है।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें