TLS को SSL (सिक्योर सॉकेट लेयर) के नाम से भी जाना जाता है। यह ट्रांसपोर्ट लेयर सिक्योरिटी को संदर्भित करता है।
जब MySQL क्लाइंट और सर्वर के बीच एक अनएन्क्रिप्टेड कनेक्शन होता है, तो नेटवर्क तक पहुंच रखने वाला व्यक्ति सभी ट्रैफ़िक देख सकता है और क्लाइंट और सर्वर के बीच भेजे या प्राप्त किए जा रहे डेटा का निरीक्षण कर सकता है। जब उपयोगकर्ता किसी नेटवर्क पर सुरक्षित तरीके से जानकारी स्थानांतरित करना चाहता है, तो एक अनएन्क्रिप्टेड कनेक्शन स्वीकार्य नहीं है।
किसी भी प्रकार के डेटा को अपठनीय बनाने के लिए एन्क्रिप्शन का उपयोग करना पड़ता है। एन्क्रिप्शन एल्गोरिदम में आमतौर पर सुरक्षा तत्व शामिल होते हैं जो कई प्रकार के ज्ञात हमलों का विरोध करने में मदद करते हैं, जिनमें से कुछ में एन्क्रिप्टेड संदेशों के क्रम को बदलना या डेटा को दो बार फिर से चलाना शामिल है। MySQL क्लाइंट और सर्वर के बीच होने वाले एन्क्रिप्टेड कनेक्शन का समर्थन करता है जहां वे दोनों TLS प्रोटोकॉल का उपयोग करते हैं। लेकिन एन्क्रिप्शन कमजोर होने के कारण MySQL एन्क्रिप्टेड कनेक्शन के लिए SSL प्रोटोकॉल का उपयोग नहीं करता है।
टीएलएस यह सुनिश्चित करने के लिए एन्क्रिप्शन एल्गोरिदम का उपयोग करता है कि सार्वजनिक नेटवर्क पर प्राप्त होने वाला डेटा विश्वसनीय डेटा है। इसमें डेटा परिवर्तन, हानि, या फिर से चलाने का पता लगाने के कई तरीके हैं। टीएलएस एल्गोरिदम का भी उपयोग करता है जो X.509 मानक की सहायता से पहचान सत्यापन के साथ आते हैं।
TLS सक्षम करने के चरण
MySQL प्रति-कनेक्शन के आधार पर एन्क्रिप्शन करता है। किसी दिए गए उपयोगकर्ता के लिए एन्क्रिप्शन या तो वैकल्पिक या अनिवार्य हो सकता है। यह उपयोगकर्ता को अनुप्रयोगों की आवश्यकताओं के आधार पर एक एन्क्रिप्टेड या अनएन्क्रिप्टेड कनेक्शन चुनने में सक्षम बनाता है।
आइए समझते हैं कि MySQL क्लाइंट के लिए TLS को कैसे सक्षम किया जा सकता है:
- कॉन्फ़िगरेशन फ़ाइल में ssl-प्रमाणपत्र और ssl-कुंजी पैरामीटर निर्दिष्ट किए जाने चाहिए जब सर्वर प्रारंभ हो।
- प्रमाणपत्र या कुंजी ओपनएसएसएल की सहायता से हस्ताक्षरित और उत्पन्न होती है।
- इस कुंजी को MySQL में mysql_ssl_rsa_setup टूल का उपयोग करके भी जेनरेट किया जा सकता है:
mysql_ssl_rsa_setup --datadir=./certs
- यदि पैरामीटर सही हैं, तो एक सुरक्षित कनेक्शन को आउटपुट के रूप में पास किया जाता है जो उसके प्रारंभ होने पर सक्षम हो जाता है।
- प्रमाण पत्र, कुंजी और सीए पुनः लोड किए जाते हैं- ALTER INSTANCE RELOAD TLS कथन सर्वर इंस्टेंस पर निष्पादित किया जाता है। यह सुनिश्चित करता है कि सर्वर इंस्टेंस को फिर से लोड नहीं करना पड़ेगा।
- नया लोड किया गया प्रमाणपत्र, कुंजी, और CA कनेक्शन के बाद प्रभावी रूप से प्रदर्शित होता है जिसे सफलतापूर्वक निष्पादित किया गया है।
- MySQL क्लाइंट को एन्क्रिप्टेड कनेक्शन का उपयोग करने के लिए कॉन्फ़िगर किया गया है- एक एन्क्रिप्टेड कनेक्शन को डिफ़ॉल्ट रूप से सेट करने का प्रयास किया जाता है। यदि सर्वर एन्क्रिप्टेड कनेक्शन का समर्थन नहीं करता है, तो एक अनएन्क्रिप्टेड कनेक्शन स्वचालित रूप से वापस आ जाता है।
- क्लाइंट के कनेक्शन व्यवहार को --ssl-mode पैरामीटर का उपयोग करके बदला जा सकता है:
--ssl-mode=REQUIRED- Tells that en encrypted connection is needed.
प्रमाणीकरण को सक्षम करने की आवश्यकता है:यदि ssl-ca पैरामीटर निर्दिष्ट नहीं है, तो क्लाइंट या सर्वर डिफ़ॉल्ट रूप से प्रमाणीकरण नहीं करता है।
- एसएसएल-प्रमाणपत्र और एसएसएल-कुंजी पैरामीटर सर्वर में निर्दिष्ट किए जाने चाहिए।
- --ssl-ca पैरामीटर MySQL क्लाइंट में निर्दिष्ट है।
- --ssl-mode MySQL क्लाइंट में VERIFY_CA के लिए निर्दिष्ट है।
- सर्वर में कॉन्फ़िगर किया गया प्रमाणपत्र (ssl-cert) क्लाइंट --ssl-ca पैरामीटर द्वारा निर्दिष्ट CA द्वारा हस्ताक्षरित है।
- यदि नहीं, तो प्रमाणीकरण विफल हो जाता है।
सर्वर से MySQL क्लाइंट को प्रमाणित करने के लिए:
- ssl-cert, ssl-key, और ssl-ca पैरामीटर निर्दिष्ट सर्वर हैं।
- --ssl-cert और --ssl-कुंजी पैरामीटर क्लाइंट में निर्दिष्ट हैं।
- सर्वर-कॉन्फ़िगर प्रमाणपत्र और क्लाइंट-कॉन्फ़िगर प्रमाणपत्र सर्वर द्वारा निर्दिष्ट एसएसएल-सीए द्वारा हस्ताक्षरित हैं।
- सर्वर-टू-क्लाइंट प्रमाणीकरण वैकल्पिक है। यदि क्लाइंट टीएलएस हैंडशेक के दौरान अपना पहचान प्रमाणपत्र नहीं दिखाता है, तो टीएलएस कनेक्शन अभी भी स्थापित है।
- जांचें कि क्या वर्तमान कनेक्शन किसी एन्क्रिप्शन का उपयोग करता है।