HTTPS এবং TLS আসলে কীভাবে কাজ করে: একটি ব্যবহারিক গাইড
আপনি সম্ভবত আপনার ব্রাউজারে তালা আইকনটি দেখেছেন এবং জানেন যে এর মানে "সুরক্ষিত"। কিন্তু আপনি যখন একটি HTTPS ওয়েবসাইটে যান তখন আসলে কী ঘটে? আপনার ব্রাউজার কীভাবে জানে যে এটি আসল সার্ভারের সাথে কথা বলছে, কোনো প্রতারক নয়? এবং কেন TLS কখনও কখনও কাজ ধীর করে দেয়? এই গাইডটি HTTPS এবং TLS-কে ব্যবহারিক ভাষায় ব্যাখ্যা করে, যাতে আপনি আত্মবিশ্বাসের সাথে আপনার ওয়েব অ্যাপ্লিকেশন কনফিগার, ডিবাগ এবং সুরক্ষিত করতে পারেন।
HTTPS আসলে কী
HTTPS হলো সহজভাবে HTTP যা TLS (ট্রান্সপোর্ট লেয়ার সিকিউরিটি)-এর উপরে স্তরিত। TLS তিনটি গ্যারান্টি প্রদান করে:
- গোপনীয়তা: ডেটা এনক্রিপ্ট করা হয় যাতে ইভসড্রপাররা এটি পড়তে না পারে।
- অখণ্ডতা: ট্রানজিটে ডেটা সনাক্তকরণ ছাড়া পরিবর্তন করা যায় না।
- প্রমাণীকরণ: সার্ভার একটি সার্টিফিকেট ব্যবহার করে তার পরিচয় প্রমাণ করে।
TLS ছাড়া, HTTP সবকিছু প্লেইনটেক্সটে পাঠায়: পাসওয়ার্ড, কুকি এবং ব্যক্তিগত ডেটা নেটওয়ার্ক পথে যে কেউ দেখতে পারে। HTTPS এটি ঠিক করে।
সহজ বাংলায় TLS হ্যান্ডশেক
কোনো এনক্রিপ্টেড ডেটা প্রবাহিত হওয়ার আগে, ক্লায়েন্ট এবং সার্ভার এনক্রিপশন কী-তে সম্মত হতে এবং পরিচয় যাচাই করতে একটি হ্যান্ডশেক সম্পাদন করে। একটি সাধারণ TLS 1.3 হ্যান্ডশেকে (আধুনিক মান) যা ঘটে তা এখানে:
- ক্লায়েন্ট হ্যালো: ব্রাউজার সমর্থিত সাইফার স্যুট, TLS সংস্করণ এবং একটি র্যান্ডম মানের তালিকা পাঠায়।
- সার্ভার হ্যালো: সার্ভার একটি সাইফার স্যুট বেছে নেয়, নিজের র্যান্ডম মান পাঠায় এবং তার সার্টিফিকেট চেইন সরবরাহ করে।
- কী এক্সচেঞ্জ: উভয় পক্ষ একটি কী এক্সচেঞ্জ অ্যালগরিদম (যেমন ECDHE) ব্যবহার করে একটি শেয়ার্ড সিক্রেট তৈরি করে যা কখনো সরাসরি প্রেরণ করা হয় না।
- সার্টিফিকেট যাচাই: ক্লায়েন্ট বিশ্বস্ত রুট CA-এর বিরুদ্ধে সার্ভারের সার্টিফিকেট পরীক্ষা করে, ডোমেইন নাম যাচাই করে এবং মেয়াদ শেষের তারিখ পরীক্ষা করে।
- সমাপ্ত: উভয় পক্ষ হ্যান্ডশেকের অখণ্ডতা নিশ্চিত করতে একটি MAC পাঠায় এবং এনক্রিপ্টেড অ্যাপ্লিকেশন ডেটা শুরু হয়।
TLS 1.3 এটি একক রাউন্ড ট্রিপ (1-RTT) এ হ্রাস করে এবং এমনকি পুনরায় ভিজিটকারীদের জন্য 0-RTT পুনরায় শুরু সমর্থন করে, যা TLS 1.2 এর তুলনায় লেটেন্সি উল্লেখযোগ্যভাবে হ্রাস করে।
সার্টিফিকেট: বিশ্বাসের অ্যাঙ্কর
একটি সার্টিফিকেট একটি পাবলিক কী-কে একটি ডোমেইন নামের সাথে আবদ্ধ করে এবং একটি সার্টিফিকেট অথরিটি (CA) দ্বারা স্বাক্ষরিত হয়। ব্রাউজার এবং অপারেটিং সিস্টেম বিশ্বস্ত রুট CA-এর একটি স্টোর সহ আসে। যখন একটি সার্ভার তার সার্টিফিকেট উপস্থাপন করে, ক্লায়েন্ট একটি বিশ্বস্ত রুট পর্যন্ত চেইন যাচাই করে।
সাধারণ সার্টিফিকেট প্রকার:
- DV (ডোমেইন ভ্যালিডেটেড): ডোমেইনের নিয়ন্ত্রণ প্রমাণ করে; দ্রুত জারি করা হয় এবং প্রায়ই বিনামূল্যে (যেমন Let's Encrypt)।
- OV (অর্গানাইজেশন ভ্যালিডেটেড): যাচাইকৃত সংস্থার বিবরণ অন্তর্ভুক্ত; জারি করতে বেশি সময় লাগে।
- EV (এক্সটেন্ডেড ভ্যালিডেশন): সর্বোচ্চ যাচাইকরণ স্তর; ঐতিহাসিকভাবে সবুজ বার দেখাত, কিন্তু আধুনিক ব্রাউজার আর এটি জোর দেয় না।
সার্টিফিকেটের মেয়াদ শেষ হয়, তাই অটোমেশন অপরিহার্য। Certbot বা ACME ক্লায়েন্টের মতো টুলগুলি আপনার রিভার্স প্রক্সির সাথে একীভূত হয়ে স্বয়ংক্রিয়ভাবে নবায়ন পরিচালনা করে।
আপনার সার্ভারে HTTPS কনফিগার করা
এখানে একটি ন্যূনতম Nginx কনফিগারেশন যা আধুনিক TLS সেটিংস সহ HTTPS সক্রিয় করে:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';
ssl_prefer_server_ciphers off;
# HSTS (পরীক্ষার পরে সক্রিয় করুন)
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
location / {
proxy_pass http://localhost:3000;
}
}
server {
listen 80;
server_name example.com;
return 301 https://$host$request_uri;
}
মূল বিষয়: শুধুমাত্র TLS 1.2 এবং 1.3 ব্যবহার করুন, ফরওয়ার্ড সিক্রেসির জন্য ECDHE সাইফার স্যুট পছন্দ করুন এবং HTTP-কে HTTPS-এ রিডাইরেক্ট করুন। HSTS ব্রাউজারকে বলে যে আপনার ডোমেইনের জন্য সর্বদা HTTPS ব্যবহার করতে, তবে দীর্ঘ max-age সহ এটি সক্রিয় করার আগে সাবধানে পরীক্ষা করুন।
সাধারণ ভুল এবং কীভাবে এড়াবেন
- মিশ্র কন্টেন্ট: একটি HTTPS পৃষ্ঠায় HTTP সম্পদ লোড করলে তালা ভেঙে যায়। আপেক্ষিক URL ব্যবহার করুন বা নিশ্চিত করুন যে সমস্ত সম্পদ HTTPS।
- মেয়াদোত্তীর্ণ সার্টিফিকেট: নবায়ন স্বয়ংক্রিয় করুন এবং মেয়াদ শেষের তারিখ নিরীক্ষণ করুন। একটি মেয়াদোত্তীর্ণ সার্টিফিকেট তাৎক্ষণিক ব্রাউজার সতর্কতা সৃষ্টি করে।
- দুর্বল প্রোটোকল: TLS 1.0 এবং 1.1 নিষ্ক্রিয় করুন; এগুলি বাতিল এবং ঝুঁকিপূর্ণ।
- অসম্পূর্ণ সার্টিফিকেট চেইন: সার্ভারকে промежуточные সার্টিফিকেট পাঠাতে হবে; অন্যথায় কিছু ক্লায়েন্ট ব্যর্থ হয়। পরীক্ষা করতে SSL Labs-এর মতো টুল ব্যবহার করুন।
- HSTS প্রিলোড নেই: সর্বোচ্চ সুরক্ষার জন্য, সমস্ত সাবডোমেইন HTTPS সমর্থন করে তা নিশ্চিত করার পরে আপনার ডোমেইনটি HSTS প্রিলোড তালিকায় জমা দিন।
TLS 1.2 বনাম TLS 1.3: কী পরিবর্তন হয়েছে
| বৈশিষ্ট্য | TLS 1.2 | TLS 1.3 |
|---|---|---|
| হ্যান্ডশেক রাউন্ড ট্রিপ | 2-RTT | 1-RTT (পুনরায় শুরু সহ 0-RTT) |
| কী এক্সচেঞ্জ | RSA বা ECDHE | শুধুমাত্র ECDHE (ফরওয়ার্ড সিক্রেসি বাধ্যতামূলক) |
| সাইফার স্যুট | অনেক, দুর্বলগুলি সহ | সীমিত সেট, সব AEAD |
| 0-RTT ডেটা | সমর্থিত নয় | সমর্থিত (রিপ্লে ঝুঁকি সহ) |
TLS 1.3 দ্রুততর এবং সহজ, লিগ্যাসি অ্যালগরিদম সরিয়ে দেয়। বেশিরভাগ আধুনিক ক্লায়েন্ট এটি সমর্থন করে, তবে পুরানো ডিভাইসের জন্য TLS 1.2 রাখুন।
TLS সমস্যা ডিবাগ করা
যখন HTTPS ব্যর্থ হয়, এগুলি পরীক্ষা করুন:
- সার্টিফিকেট চেইন এবং হ্যান্ডশেক পরিদর্শন করতে
openssl s_client -connect example.com:443 -servername example.comব্যবহার করুন। - TLS সংস্করণ এবং সাইফার নেগোশিয়েটেড দেখতে
curl -vI https://example.comচালান। - হ্যান্ডশেক ত্রুটির জন্য সার্ভার লগ পরীক্ষা করুন; Nginx SSL ত্রুটিগুলি ত্রুটি লগে লগ করে।
- একটি বিস্তৃত গ্রেড এবং সুপারিশ পেতে অনলাইন SSL পরীক্ষক ব্যবহার করুন।
আপনি যদি নিয়মিত Nginx লগ নিয়ে কাজ করেন, Nginx লগ বিশ্লেষক আপনাকে TLS হ্যান্ডশেক ব্যর্থতা এবং অন্যান্য সমস্যা দ্রুত সনাক্ত করতে সাহায্য করতে পারে।
সাধারণ জিজ্ঞাসা
HTTPS এবং TLS এর মধ্যে পার্থক্য কী?
HTTPS হলো TLS-এর উপরে HTTP। TLS হলো ক্রিপ্টোগ্রাফিক প্রোটোকল যা এনক্রিপশন, অখণ্ডতা এবং প্রমাণীকরণ প্রদান করে। HTTPS হলো HTTP-এর সুরক্ষিত সংস্করণ যা TLS ব্যবহার করে।
আমার কি অভ্যন্তরীণ পরিষেবাগুলির জন্য সার্টিফিকেট প্রয়োজন?
হ্যাঁ, উৎপাদন অভ্যন্তরীণ পরিষেবাগুলির জন্য, আপনার নিজের CA বা একটি পাবলিক CA থেকে সার্টিফিকেট ব্যবহার করুন। স্ব-স্বাক্ষরিত সার্টিফিকেট বিশ্বাসের সমস্যা সৃষ্টি করে; বিকাশের জন্য একটি প্রাইভেট PKI বা mkcert-এর মতো টুল ব্যবহার করার কথা বিবেচনা করুন।
সার্টিফিকেট কত ঘন ঘন নবায়ন করা উচিত?
আধুনিক সেরা অনুশীলন হলো 90-দিনের সার্টিফিকেট সহ স্বয়ংক্রিয় নবায়ন, যেমন Let's Encrypt অফার করে। সংক্ষিপ্ত জীবনকাল একটি কী compromised হলে ঝুঁকি কমায়।
আপনার সাইট সুরক্ষিত করতে প্রস্তুত? একটি SSL চেকার দিয়ে আপনার বর্তমান TLS কনফিগারেশন পরীক্ষা করে শুরু করুন, তারপর উপরের Nginx সেটিংস প্রয়োগ করুন। ওয়েব সুরক্ষায় আরও গভীরে যেতে, OWASP টপ 10 এবং XSS প্রতিরোধের আমাদের অন্যান্য গাইডগুলি দেখুন।