কম্পিউটার টিউটোরিয়াল

MySQL ক্লায়েন্টের জন্য TLS সক্ষম করা


TLS কে SSL (Secure Sockets Layer) ও বলা হয়। এটি Transport Layer Security-কে বোঝায়।

যখন MySQL ক্লায়েন্ট এবং সার্ভারের মধ্যে আনএনক্রিপ্টেড সংযোগ থাকে, তবে নেটওয়ার্ক এক্সেস থাকা কেউ সকল ট্রাফিক দেখতে এবং ক্লায়েন্ট ও সার্ভারের মাঝপথে পাঠানো/প্রাপ্ত ডেটা যাচাই করতে পারে। যখন ব্যবহারকারী নেটওয়ার্কের মাধ্যমে তথ্য সুরক্ষিত পদ্ধতিতে প্রেরণ করতে চায়, তখন আনএনক্রিপ্টেড সংযোগ গ্রহণযোগ্য নয়।

কোনো ডেটা অপাঠ্য করতে হলে এনক্রিপশন ব্যবহার করতে হয়। এনক্রিপশন অ্যালগরিদম সাধারণত নিরাপত্তা উপাদান অন্তর্ভুক্ত করে যা অনেক পরিচিত আক্রমণ প্রতিরোধে সাহায্য করে, যেনে এনক্রিপ্টেড মেসেজের অর্ডার পরিবর্তন করা বা ডেটা দুবার রিপ্লে করা। MySQL ক্লায়েন্ট এবং সার্ভারের মধ্যে এনক্রিপ্টেড সংযোগ সমর্থন করে যেখানে TLS প্রোটোকল ব্যবহার করা হয়। কিন্তু MySQL এনক্রিপ্টেড সংযোগের জন্য SSL প্রোটোকল ব্যবহার করে না কারণ এর এনক্রিপশন দুর্বল।

TLS এনক্রিপশন অ্যালগরিদম ব্যবহার করে নিশ্চিত করে যে পাবলিক নেটওয়ার্কের মাধ্যমে প্রাপ্ত ডেটা বিশ্বস্ত ডেটা। এটি ডেটা পরিবর্তন, ক্ষতি, বা রিপ্লে ডিটেক্ট করার অনেক উপায় রাখে। TLS X.509 স্ট্যান্ডার্ডের সাহায্যে আইডেন্টিটি ভেরিফিকেশনের জন্য অ্যালগরिदমও ব্যবহার করে।

TLS সক্ষম করার ধাপসমূহ

MySQL প্রতি-সংযোগ ভিত্তিতে এনক্রিপশন করে। একটি নির্দিষ্ট ইউজারের জন্য এনক্রিপশন অপশনাল বা বাধ্যতামূলক হতে পারে। এটি অ্যাপ্লিকেশনের প্রয়োজনীয়তা অনুযায়ী ব্যবহারকারীকে এনক্রিপ্টেড বা আনএনক্রিপ্টেড সংযোগ বেছে নেওয়ার সুযোগ দেয়।

MySQL ক্লায়েন্টের জন্য TLS কীভাবে সক্ষম করবেন:

  • সার্ভার স্টার্ট করার সময় কনফিগারেশন ফাইলে ssl-cert এবং ssl-key প্যারামিটার নির্দিষ্ট করতে হবে।
  • সার্টিফিকেট বা কী OpenSSL দিয়ে সাইন ও জেনারেট করতে হবে।
  • এই কী MySQL-এর mysql_ssl_rsa_setup টুল দিয়েও জেনারেট করা যায়:
    mysql_ssl_rsa_setup --datadir=./certs
  • প্যারামিটারগুলো সঠিক হলে, সার্ভার স্টার্ট হলে সিকিউর সংযোগ সক্ষম হওয়ার আউটপুট দেখায়।
  • সার্টিফিকেট, কী এবং CA রিলোড করা হয়- সার্ভার ইনস্ট্যান্সে ALTER INSTANCE RELOAD TLS স্টেটমেন্ট এক্সিকিউট করা হয়। এটি নিশ্চিত করে যে সার্ভার ইনস্ট্যান্স রিস্টার্ট করা লাগবে না।
  • নতুন লোড করা সার্টিফিকেট, কী, এবং CA úspěшно সংযোগ স্থাপনের পর প্রয়োগী হয়।
  • MySQL ক্লায়েন্টকে এনক্রিপ্টেড সংযোগ ব্যবহার করার জন্য কনফিগার করা হয়- ডিফল্টভাবে এনক্রিপ্টেড সংযোগ স্থাপনের চেষ্টা করা হয়। যদি সার্ভার এনক্রিপ্টেড সংযোগ সমর্থন না করে, তবে স্বয়ংক্রিয়ভাবে আনএনক্রিপ্টেড সংযোগ ফেরত দেওয়া হয়।
  • --ssl-mode প্যারামিটার দিয়ে ক্লায়েন্টের সংযোগ আচরণ পরিবর্তন করা যায়:
    --ssl-mode=REQUIRED- এনক্রিপ্টেড সংযোগ আবশ্যক বলে বলে।

অথেন্টিকেশন সক্ষম করতে হবে: যদি ssl-ca প্যারামিটার নির্দিষ্ট না করা হয়, তবে ক্লায়েন্ট বা সার্ভার ডিফল্টভাবে অথেন্টিকেশন করে না।

  • সার্ভারে ssl-cert, ssl-key, এবং ssl-ca প্যারামিটার নির্দিষ্ট করতে হবে।
  • MySQL ক্লায়েন্টে --ssl-ca প্যারামিটার নির্দিষ্ট করতে হবে।
  • MySQL ক্লায়েন্টে --ssl-mode VERIFY_CA-তে সেট করতে হবে।
  • সার্ভারে কনফিগার করা সার্টিফিকেট (ssl-cert) ক্লায়েন্টের --ssl-ca প্যারামিটার দ্বারা নির্দিষ্ট CA দ্বারা সাইন করা থাকতে হবে।
  • না হলে অথেন্টিকেশন ফেল করবে।

সার্ভার থেকে MySQL ক্লায়েন্টকে অথেন্টিকেট করতে:

  • সার্ভারে ssl-cert, ssl-key, এবং ssl-ca প্যারামিটার নির্দিষ্ট করতে হবে।
  • ক্লায়েন্টে --ssl-cert এবং --ssl-key প্যারামিটার নির্দিষ্ট করতে হবে।
  • সার্ভার-কনফিগারড সার্টিফিকেট এবং ক্লায়েন্ট-কনফিগারড সার্টিফিকেট সার্ভার দ্বারা নির্দিষ্ট ssl-ca দ্বারা সাইন করা থাকতে হবে।
  • সার্ভার-টু-ক্লায়েন্ট অথেন্টিকেশন অপশনাল। যদি ক্লায়েন্ট TLS হ্যান্ডশেকের সময় তার আইডেন্টিটি সার্টিফিকেট না দেখায়, TLS সংযোগ הוקমো স্থাপিত হয়।
  • চেক করুন বর্তমান সংযোগ কোনো এনক্রিপশন ব্যবহার করছে কিনা।

  1. macOS-এ MySQL ইনস্টলেশন

  2. Microsoft Windows-এ MySQL ইনস্টলেশন

  3. Windows সিস্টেমে TLS Failures, Timeouts এর ওয়ার্কআরাউন্ড সমাধান

  4. সমাধান: ওয়াইফাই-এর জন্য DHCP সক্রিয় নয়