বিনামূল্যে Let's Encrypt সার্টিফিকেট
certbot দিয়ে VPS-এ কীভাবে HTTPS সার্টিফিকেট ইস্যু ও স্বয়ংক্রিয়ভাবে নবায়ন করবেন, যার মধ্যে পোর্ট 80 ইতিমধ্যে ব্যবহৃত থাকার ক্ষেত্রও রয়েছে।
আপডেট: ২৩ আগস্ট, ২০২৬
ব্রাউজার যাতে “Not secure” না দেখায় এবং ফর্ম ও পেমেন্ট আদৌ কাজ করে, সেজন্য আপনার একটি সার্টিফিকেট দরকার। Let's Encrypt বিনামূল্যে ৯০ দিনের জন্য একটি সার্টিফিকেট দেয়, সাথে স্বয়ংক্রিয় নবায়ন।
প্রস্তুতি
তিনটি বিষয় যাচাই করুন, নাহলে ইস্যু ব্যর্থ হবে:
dig +short example.ru # should return your machine's address
ss -tulpn | grep -E ':80|:443'
- ডোমেইনের A রেকর্ডটি
/hosting/vds/m/<id>-এ প্যানেলের “Overview” ট্যাবে দেখানো ঠিকানার দিকে নির্দেশ করে; - পোর্ট 80 বাইরে থেকে পৌঁছানো যায় — Let's Encrypt এটি দিয়ে ডোমেইনের মালিকানা যাচাই করে;
- একটি ওয়েব সার্ভার চালু আছে: Nginx বা Apache।
আপনি যদি Caddy ব্যবহার করেন, তাহলে কিছুই করতে হবে না — এটি নিজেই সার্টিফিকেট ইস্যু করে।
ইস্যু করা
apt install -y certbot python3-certbot-nginx # Debian, Ubuntu
dnf install -y certbot python3-certbot-nginx # AlmaLinux, CentOS Stream
certbot --nginx -d example.ru -d www.example.ru
Apache-এর ক্ষেত্রে একই পথ, শুধু python3-certbot-apache এবং --apache ফ্ল্যাগ দিয়ে। Certbot নিজেই কনফিগে সার্টিফিকেট ব্লক ও HTTP থেকে HTTPS-এ রিডাইরেক্ট যোগ করে।
ফলাফল যাচাই করুন:
certbot certificates
curl -I https://example.ru
স্বয়ংক্রিয় নবায়ন
প্যাকেজটি একটি সিস্টেম টাইমার ইনস্টল করে, যা নবায়নও সামলায়। টাইমারটি সক্রিয় আছে কিনা নিশ্চিত করুন এবং একটি পরীক্ষামূলক নবায়ন চালান:
systemctl list-timers | grep certbot
certbot renew --dry-run
ড্রাই রান বাধ্যতামূলক। এটি সেই পরিস্থিতি ধরে ফেলে যেখানে দুই মাস পর নবায়ন ভেঙে যাবে — উদাহরণস্বরূপ, আপনি সাইট কনফিগের নাম বদলেছেন এবং certbot আর জানে না যাচাই ফাইলটি কোথায় রাখতে হবে।
যখন পোর্ট 80 দখল করা
যদি কোনো অ্যাপ্লিকেশন পোর্ট 80-এ চলছে এবং আপনি সেখানে ওয়েব সার্ভার বসাতে না পারেন, তাহলে আলাদা মোড ব্যবহার করুন:
certbot certonly --standalone --preferred-challenges http -d example.ru
যাচাইয়ের সময়টুকু Certbot নিজের একটি অস্থায়ী সার্ভার চালু করবে। সেজন্য অ্যাপ্লিকেশনটি থামাতে হবে: --pre-hook এবং --post-hook এটি স্বয়ংক্রিয়ভাবে করতে পারে।
ইস্যু করার পর সার্টিফিকেটগুলো /etc/letsencrypt/live/example.ru/-এ থাকে: fullchain.pem এবং privkey.pem।
সাধারণ ত্রুটি
| লক্ষণ | কারণ |
|---|---|
Timeout during connect | পোর্ট 80 ফায়ারওয়াল দ্বারা ব্লক করা, অথবা ডোমেইনটি ভিন্ন মেশিনের দিকে নির্দেশ করছে |
too many certificates already issued | আপনি ডোমেইনের সাপ্তাহিক সীমায় পৌঁছে গেছেন — অপেক্ষা করুন বা --staging দিয়ে ডিবাগ করুন |
| ইস্যু করার পর সাইটটি পুরোনো সার্টিফিকেট পরিবেশন করে | আপনি ওয়েব সার্ভার রিলোড করেননি: systemctl reload nginx |
| সার্টিফিকেটের মেয়াদ শেষ হয়ে গেছে | টাইমারটি নিষ্ক্রিয় — systemctl enable --now certbot.timer যাচাই করুন |
/etc/letsencryptডিরেক্টরিটি আপনার ডেটার অংশ। মেশিনের স্বয়ংক্রিয় ব্যাকআপ নেই, তাই আপনার ওয়েব সার্ভার কনফিগের সাথে এটিও ব্যাকআপে রাখুন।