এই গাইডে দেখানো হয়েছে Pound-এ কীভাবে SSL/TLS সার্টিফিকেট ইনস্টল করবেন, যা একটি লাইটওয়েট HTTP/HTTPS রিভার্স প্রক্সি। এতে সেই অংশটি কভার করা হয়েছে যা বেশিরভাগ অপারেটরকে বিভ্রান্ত করে: Pound-এর প্রয়োজনীয় একক সম্মিলিত PEM ফাইল সঠিক ক্রমে তৈরি করা, তারপর একটি কার্যকর ListenHTTPS ব্লক লেখা যা পুরনো প্রোটোকলগুলো নিষ্ক্রিয় করে, Pound-কে একটি ব্যাকএন্ডের দিকে নির্দেশ করে, এবং সার্ভিস রিস্টার্ট করার আগে একটি কনফিগারেশন চেক পাস করে।
এই গাইড কোন Pound-কে টার্গেট করে সে বিষয়ে একটি সংক্ষিপ্ত নোট। মূল Apsis Pound প্রজেক্টটি সেপ্টেম্বর ২০২২-এ বন্ধ করে দেওয়া হয়েছে। সক্রিয় ডেভেলপমেন্ট চলে গেছে Sergey Poznyakoff-এর মেইনটেইন করা ফর্কে, যা পাওয়া যাবে github.com/graygnuorg/pound-এ, এবং এটিই এখন প্রামাণিক আপস্ট্রিম এবং বর্তমান লিনাক্স ডিস্ট্রিবিউশনগুলোতে যা প্যাকেজ করা হয়। নিচের নির্দেশগুলো আধুনিক 4.x সিরিজের সাথে মিলে যায়।
Pound-এর জন্য CSR তৈরি করুন
আপনি যদি ইতিমধ্যে আপনার CSR তৈরি করে থাকেন এবং ইস্যু করা সার্টিফিকেট ফাইলগুলো হাতে থাকে, তাহলে সরাসরি Pound-এ SSL সার্টিফিকেট ইনস্টল করুন অংশে চলে যান।
একটি সার্টিফিকেট অথরিটি আপনার সার্টিফিকেট ইস্যু করার আগে, আপনাকে একটি CSR (Certificate Signing Request) জমা দিতে হবে: এটি একটি ছোট টেক্সট ব্লক যাতে আপনার ডোমেইনের তথ্য এবং একটি পাবলিক কী থাকে, যা সার্ভারে থাকা একটি প্রাইভেট কীয়ের সাথে যুক্ত। আপনার কাছে দুটি বিকল্প রয়েছে:
- আমাদের CSR Generator দিয়ে স্বয়ংক্রিয়ভাবে CSR তৈরি করুন। এই টুলটি CSR এবং তার সাথে মিলে যাওয়া প্রাইভেট কী দুটোই ফেরত দেয়, যা আপনি তারপর সার্ভারে স্থানান্তর করবেন।
- OpenSSL ব্যবহার করে সরাসরি সার্ভারেই CSR তৈরি করুন, আমাদের টিউটোরিয়াল অনুসরণ করে Pound-এ কীভাবে CSR তৈরি করবেন। প্রাইভেট কী সার্ভারেই থাকে।
সার্টিফিকেটের জন্য আবেদন করার সময়, সম্পূর্ণ CSR ব্লক পেস্ট করুন, যার মধ্যে —–BEGIN CERTIFICATE REQUEST—– এবং —–END CERTIFICATE REQUEST—– লাইনগুলোও রয়েছে। জমা দেওয়ার আগে CSR-এর বিষয়বস্তু নিশ্চিত করতে চাইলে, এটি আমাদের CSR decoder-এ পেস্ট করুন। মিলে যাওয়া প্রাইভেট কী ফাইলটি (সাধারণত yourdomain.key) নিরাপদ কোথাও রাখুন যা কেবল root পড়তে পারবে; ইনস্টলেশনের সময় আপনার এটি প্রয়োজন হবে।
Pound-এ SSL সার্টিফিকেট ইনস্টল করুন
একবার CA সার্টিফিকেট ইস্যু করলে, আপনি সাধারণত পাবেন:
- আপনার প্রাইমারি (সার্ভার) সার্টিফিকেট, সাধারণত একটি .crt বা .pem ফাইল, যার নাম আপনার ডোমেইনের নামে রাখা।
- এক বা একাধিক ইন্টারমিডিয়েট সার্টিফিকেট, যা আলাদা ফাইল হিসেবে বা একটি .ca-bundle ফাইলে একত্রিত থাকতে পারে।
- প্রাইভেট কী (একটি .key ফাইল) যা আপনার CSR-এর সাথে একসাথে তৈরি হয়েছিল।
Pound-এর একটি একক PEM ফাইল প্রয়োজন যাতে সার্টিফিকেট, ইন্টারমিডিয়েট চেইন এবং এনক্রিপ্ট না করা প্রাইভেট কী থাকে। graygnuorg-এর ম্যানুয়ালে ক্রম সম্পর্কে স্পষ্টভাবে বলা আছে: প্রথমে সার্টিফিকেট, তারপর ইন্টারমিডিয়েট সার্টিফিকেট (যদি থাকে), তারপর প্রাইভেট কী, ঠিক এই ক্রমে। চেইন বাদ দেওয়া হলো সবচেয়ে সাধারণ ইনস্টলেশন ভুল: সার্টিফিকেটটি ডেস্কটপ ব্রাউজারে ঠিকঠাক দেখায়, কিন্তু Android-এ, iOS-এ এবং কমান্ড-লাইন ক্লায়েন্টগুলোতে ব্যর্থ হয়।
ধাপ ১: সম্মিলিত PEM ফাইল তৈরি করুন
এই গাইডে ধরে নেওয়া হয়েছে যে সার্টিফিকেট ফাইলগুলো /etc/pound/-তে রাখা আছে। আপনার নিজের লেআউটের সাথে মিল রেখে পাথগুলো পরিবর্তন করুন। তিনটি ফাইলকে একটি PEM ফাইলে সংযুক্ত করুন। নিচের pipe-to-tee প্যাটার্নটি root প্রিভিলেজ সহ রিডাইরেক্ট চালায়, যা প্রয়োজনীয় কারণ /etc/pound/ সাধারণত শুধু root দ্বারা লিখনযোগ্য (একটি সাধারণ sudo cat … > /etc/pound/… ব্যর্থ হবে, কারণ shell আউটপুট ফাইলটি আপনার সাধারণ ব্যবহারকারী হিসেবে খোলে, sudo চলার আগেই):
cat your_domain.crt intermediate.crt your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null
যদি CA ইন্টারমিডিয়েটগুলো একটি একক .ca-bundle ফাইল হিসেবে পাঠিয়ে থাকে, তাহলে এর পরিবর্তে এটি ব্যবহার করুন:
cat your_domain.crt your_domain.ca-bundle your_domain.key | sudo tee /etc/pound/your_domain.pem > /dev/null
ফাইলের নামগুলো আপনার নিজের নাম দিয়ে প্রতিস্থাপন করুন। সম্মিলিত ফাইলের মধ্যে থাকা প্রাইভেট কী অবশ্যই এনক্রিপ্ট না করা হতে হবে, কারণ Pound নন-ইন্টারেক্টিভভাবে শুরু হয় এবং পাসফ্রেজের জন্য প্রম্পট করতে পারে না। ফলাফল ফাইলটি লক করুন যাতে কেবল root এটি পড়তে পারে:
sudo chown root:root /etc/pound/your_domain.pem
sudo chmod 600 /etc/pound/your_domain.pem
ধাপ ২: pound.cfg সম্পাদনা করুন
Pound কনফিগারেশন ফাইল খুলুন (সাধারণত Debian এবং Ubuntu-তে /etc/pound/pound.cfg, বা অন্য কিছু ডিস্ট্রিবিউশনে /etc/pound.cfg) এবং একটি ListenHTTPS ব্লক যুক্ত করুন যা সম্মিলিত PEM ফাইলের দিকে নির্দেশ করে। একটি ন্যূনতম আধুনিক ব্লক এরকম দেখায়:
ListenHTTPS
Address 0.0.0.0
Port 443
Cert "/etc/pound/your_domain.pem"
# Modern TLS only: disables SSLv2, SSLv3, TLSv1.0 and TLSv1.1,
# leaving TLSv1.2 and TLSv1.3 enabled.
Disable TLSv1_1
Ciphers "ECDHE+AESGCM:ECDHE+CHACHA20:!aNULL:!MD5:!DSS"
Service
Backend
Address 127.0.0.1
Port 8080
End
End
End
উপরের নির্দেশগুলো সম্পর্কে কয়েকটি নোট:
- Cert ধাপ ১-এ আপনি যে সম্মিলিত PEM ফাইল তৈরি করেছেন তা সরবরাহ করে। ম্যানুয়ালে স্পষ্ট করা আছে যে Cert-কে লিসেনারের ভিতরে অন্য সমস্ত SSL-নির্দিষ্ট নির্দেশের আগে থাকতে হবে, তাই এটি ব্লকের শীর্ষে রাখুন।
- Disable নির্দিষ্ট প্রোটোকল এবং এর থেকে পুরনো সব প্রোটোকল নিষ্ক্রিয় করে দেয়। Disable TLSv1_1 এভাবে SSLv2, SSLv3, TLSv1.0 এবং TLSv1.1 নিষ্ক্রিয় করে দেয়, TLSv1.2 এবং TLSv1.3 সক্রিয় রাখে, যা বর্তমান ইন্ডাস্ট্রি গাইডলাইনের সাথে সামঞ্জস্যপূর্ণ।
- Ciphers OpenSSL সাইফার লিস্ট সেট করে (TLS 1.2-এর জন্য ব্যবহৃত; TLS 1.3 নিজের সাইফারসুইট নেগোশিয়েট করে)। উপরের লিস্টটি প্রক্সিকে AEAD-সহ আধুনিক ECDHE স্যুটগুলোতে সীমাবদ্ধ করে; যদি আপনার পুরনো ক্লায়েন্ট সাপোর্ট করার প্রয়োজন হয়, তাহলে ssl-config.mozilla.org থেকে Mozilla-এর “intermediate” প্রোফাইলটি বসিয়ে নিন।
- Service / Backend হলো যেখানে Pound ডিক্রিপ্ট করা ট্র্যাফিক প্রক্সি করে। উদাহরণটি লুপব্যাক ইন্টারফেসের (পোর্ট 8080) একটি একক ব্যাকএন্ডে ফরওয়ার্ড করে; আপনার অ্যাপ্লিকেশন যেখানে শুনছে তার অ্যাড্রেস এবং পোর্ট দিয়ে এটি প্রতিস্থাপন করুন, এবং Pound-কে লোড-ব্যালান্স করাতে চাইলে আরও Backend ব্লক যুক্ত করুন।
যদি আপনি চান Pound সাধারণ HTTP গ্রহণ করে সেটি ফরওয়ার্ড করুক (সাধারণত কেবল HTTPS-এ রিডাইরেক্ট করার জন্য, ধাপ ৪ দেখুন), তাহলে একই ফাইলে একটি আলাদা ListenHTTP ব্লক যুক্ত করুন।
ধাপ ৩: কনফিগারেশন চেক করুন এবং Pound রিস্টার্ট করুন
সার্ভিস রিলোড করার আগে, কনফিগারেশন ফাইলটি যাচাই করে নিন যাতে একটি টাইপো প্রক্সিকে অফলাইন করে দিতে না পারে। Pound-এর একটি বিল্ট-ইন চেক মোড রয়েছে:
sudo pound -c -f /etc/pound/pound.cfg
এটি সফল হলে status 0 নিয়ে বের হয় এবং কিছু প্রিন্ট করে না, অথবা ব্যর্থ হলে status 1 এবং একটি ফাইল-ও-লাইন এরর মেসেজ দেয়। স্পষ্ট “configuration OK” নিশ্চিতকরণ পেতে চাইলে -v যুক্ত করুন। চেক পাস হয়ে গেলে, Pound রিস্টার্ট করুন যাতে এটি নতুন লিসেনার গ্রহণ করে:
sudo systemctl restart pound
systemd ছাড়া সিস্টেমগুলোতে, এর পরিবর্তে পুরনো init স্ক্রিপ্ট ব্যবহার করুন:
sudo /etc/init.d/pound restart
নিশ্চিত করুন যে সার্ভিসটি চলছে এবং পোর্ট 443-এ শুনছে:
sudo systemctl status pound
sudo ss -tlnp | grep ':443'
ধাপ ৪ (সুপারিশকৃত): HTTP থেকে HTTPS-এ রিডাইরেক্ট করুন
যারা কেবল ডোমেইনের নাম টাইপ করে এসেছেন তারাও সুরক্ষিত URL-এ পৌঁছাবেন এটি নিশ্চিত করতে, একটি সাধারণ HTTP লিসেনার যুক্ত করুন যা প্রতিটি রিকোয়েস্টকে একই পাথের HTTPS সংস্করণে একটি স্থায়ী রিডাইরেক্ট দিয়ে সাড়া দেবে:
ListenHTTP
Address 0.0.0.0
Port 80
Service
Redirect 301 "https://example.com$1"
End
End
example.com-কে আপনার নিজের ডোমেইন দিয়ে প্রতিস্থাপন করুন। $1 ব্যাক-রেফারেন্স মূল রিকোয়েস্ট পাথ ধরে রাখে। আবার sudo pound -c -f /etc/pound/pound.cfg চালান, তারপর সার্ভিস রিস্টার্ট করুন।
SSL ইনস্টলেশন টেস্ট করুন
একটি ব্রাউজারে https://-এর মাধ্যমে আপনার সাইট খুলুন এবং চেক করুন যে প্যাডলক বন্ধ আছে এবং সার্টিফিকেটটি আপনার ডোমেইনের সাথে মিলে যায়। তারপর আমাদের SSL Checker দিয়ে একটি গভীর স্কান চালান, যা সার্টিফিকেট, চেইন, এবং Pound যে প্রোটোকল ও সাইফার অফার করছে সে সম্পর্কে তাৎক্ষণিক রিপোর্ট দেয়। এখানে একটি ক্লিন ফলাফল মানে হলো, মোবাইল এবং API ক্লায়েন্ট সহ প্রতিটি প্রধান প্ল্যাটফর্মের ক্লায়েন্ট সার্টিফিকেটটি বিশ্বাস করবে।
প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী
মূল Apsis প্রজেক্টটি ২০২২ সালে পরিত্যক্ত হয়েছিল। সক্রিয়ভাবে মেইনটেইন করা ফর্কটি হলো graygnuorg/pound, যা তৈরি করেছেন Sergey Poznyakoff, বর্তমানে 4.x সিরিজে রয়েছে, এবং এটিই প্রধান লিনাক্স ডিস্ট্রিবিউশনগুলো pound নামে প্যাকেজ করে। আপনি যদি পুরনো 2.x লাইনের কিছু চালান, তাহলে বর্তমান রিলিজে স্থানান্তরের পরিকল্পনা করুন: এই গাইডের কনফিগারেশন নির্দেশগুলো আধুনিক ফর্ক অনুমান করে।
Pound ম্যানুয়াল অনুযায়ী: প্রথমে সার্ভার সার্টিফিকেট, তারপর ইন্টারমিডিয়েট সার্টিফিকেট (যদি থাকে), তারপর প্রাইভেট কী, সবগুলো PEM-এনকোডেড, একই ফাইলে। প্রাইভেট কী পাসফ্রেজ-সুরক্ষিত হওয়া চলবে না, কারণ Pound একটি ডিমন হিসেবে শুরু হয় এবং একটির জন্য প্রম্পট করার কোনো উপায় নেই।
ListenHTTPS ব্লকের ভিতরে Disable নির্দেশ ব্যবহার করুন। Pound-এর Disable নির্দিষ্ট প্রোটোকল এবং এর থেকে পুরনো সব প্রোটোকল বন্ধ করে দেয়, তাই Disable TLSv1_1 SSLv2, SSLv3, TLSv1.0 এবং TLSv1.1 নিষ্ক্রিয় করে দেয়, শুধু TLSv1.2 এবং TLSv1.3 রেখে দেয়। এটি নতুন ডিপ্লয়মেন্টের জন্য সুপারিশকৃত সেটিং।
হ্যাঁ। Pound SNI সাপোর্ট করে, তাই আপনি একই ListenHTTPS লিসেনারের ভিতরে একাধিক Cert স্টেটমেন্ট ঘোষণা করতে পারেন (বা Cert-কে PEM ফাইলগুলোর একটি ডিরেক্টরির দিকে নির্দেশ করাতে পারেন)। Pound সার্টিফিকেটগুলোর মধ্য দিয়ে ক্রমানুসারে যায় এবং যার Common Name বা SAN রিকোয়েস্ট করা হোস্ট নামের সাথে মিলে যায় সেটি প্রথমে সার্ভ করে, তাই ওয়াইল্ডকার্ডের আগে আরও নির্দিষ্ট সার্টিফিকেটগুলো (হোস্ট নাম) তালিকায় রাখুন।
sudo pound -c -f /etc/pound/pound.cfg চালান। -c ফ্ল্যাগটি কনফিগারেশন ফাইলে সিনট্যাক্স এরর চেক করে এবং প্রক্সি শুরু না করেই বের হয়ে যায়; exit status 0 মানে ঠিক আছে, status 1 মানে একটি এরর আছে (মেসেজটি আপনাকে বলে দেবে কোন ফাইল ও লাইন)। স্পষ্ট সফলতার মেসেজের জন্য -v যুক্ত করুন।
মার্চ ১৫, ২০২৬ থেকে, প্রকাশ্যে বিশ্বস্ত SSL/TLS সার্টিফিকেটগুলোর সীমা ২০০ দিনে বাঁধা, এবং CA/Browser Forum আরও কমানোর পরিকল্পনা করেছে (২০২৭ সালে ১০০ দিন এবং ২০২৯ সালে ৪৭ দিন)। প্রতিটি মেয়াদ শেষ হওয়ার আগে উপরের ইনস্টল প্রক্রিয়াটি পুনরাবৃত্তি করার পরিকল্পনা করুন, বা ACME দিয়ে রিনিউয়াল স্বয়ংক্রিয় করুন।
আজ অর্ডার করার সময় SSL শংসাপত্রে 10% সংরক্ষণ করুন!
দ্রুত ইস্যু, শক্তিশালী এনক্রিপশন, 99.99% ব্রাউজার বিশ্বাস, নিবেদিত সমর্থন, এবং 25 দিনের অর্থ ফেরত গ্যারান্টি। কুপন কোড: SAVE10


