Certbot کا استعمال کرتے ہوئے Nginx پر مفت Let's Encrypt SSL سرٹیفکیٹ سے اپنی سائٹ کو محفوظ بنانے کے لیے ایک درست، قدم بہ قدم رہنمائی، جس میں systemd کے ذریعے قابلِ اعتماد خودکار تجدید شامل ہے، سعودی عرب میں میزبان سرورز کے لیے۔
Let's Encrypt کے ساتھ مفت SSL کیوں
ہر عوامی ویب سائٹ کو HTTPS کی ضرورت ہوتی ہے۔ براؤزر سادہ HTTP صفحات کو "Not secure" کے طور پر نشان زد کرتے ہیں، سرچ انجن خفیہ کاری والی سائٹوں کو ترجیح دیتے ہیں، اور PDPL کے تحت سعودی ڈیٹا تحفظ کی توقعات ٹریفک کو راستے میں خفیہ کرنا ایک بنیادی ضرورت بنا دیتی ہیں۔ Let's Encrypt ایک مفت، خودکار، غیر منافع بخش سرٹیفکیٹ اتھارٹی ہے جس پر تمام بڑے براؤزر اعتماد کرتے ہیں۔ سرکاری ACME کلائنٹ Certbot کے ساتھ مل کر، آپ بغیر کسی دستی کام اور بغیر کسی لاگت کے سرٹیفکیٹ جاری اور تجدید کر سکتے ہیں۔
یہ رہنمائی Nginx (Ubuntu/Debian) پر سرٹیفکیٹ نصب کرنے، اس کی تصدیق کرنے، اور — سب سے اہم بات — ایسی تجدید ترتیب دینے کا احاطہ کرتی ہے جو نہ ٹوٹے۔ تجدید کا حصہ پہلے سے کہیں زیادہ اہمیت رکھتا ہے: "Let's Encrypt سرٹیفکیٹ تاریخی طور پر 90 دن کے لیے درست رہے ہیں، اور صنعت اب کم مدتوں کی طرف بڑھ رہی ہے (45 دن کا ایک پروفائل 2026 میں رول آؤٹ ہونا شروع ہوا)۔" دستی تجدید اب حقیقت پسندانہ نہیں رہی، لہٰذا خودکاری لازمی ہے۔
اگر آپ مملکت کے اندر کسی VPS یا کلاؤڈ سرور پر Skyline Cloud کے ساتھ میزبانی کرتے ہیں، تو نیچے دیے گئے مراحل آپ کے ان-کنگڈم سرور پر بغیر کسی تبدیلی کے کام کرتے ہیں، جس سے آپ کا ڈیٹا اور آپ کی TLS ٹرمینیشن دونوں سعودی سرزمین پر رہتے ہیں۔
پیشگی شرائط
- Ubuntu 22.04/24.04 یا Debian چلانے والا ایک کلاؤڈ سرور یا VPS، جس میں
sudoرسائی ہو۔ - ایک ڈومین (مثال کے طور پر
example.com) جس میں آپ کے سرور کے عوامی IP کی طرف اشارہ کرنے والا ایک DNS A record ہو۔ اگر آپ Skyline کے منظم DNS کے ذریعے DNS کا انتظام کرتے ہیں، تو وہاں ریکارڈ شامل کریں اور اسے پھیلنے دیں۔ - Nginx نصب ہو اور آپ کی سائٹ کو پورٹ 80 پر سرو کر رہا ہو۔
- آپ کے فائر وال اور کسی بھی کلاؤڈ سیکیورٹی گروپ میں پورٹ 80 اور 443 کھلے ہوں۔
آگے بڑھنے سے پہلے تصدیق کریں کہ DNS آپ کے سرور پر حل ہوتا ہے:
dig +short example.com
واپس آنے والا IP آپ کے سرور کے عوامی IP سے مطابقت رکھنا چاہیے۔ بصورت دیگر ڈومین کی توثیق ناکام ہو جائے گی۔
مرحلہ 1 — Certbot نصب کریں
تجویز کردہ طریقہ snap پیکیج ہے، جسے EFF برقرار رکھتا اور تازہ رکھتا ہے:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
snap کے بغیر تقسیموں پر، APT پیکیج بھی کام کرتا ہے:
sudo apt update
sudo apt install certbot python3-certbot-nginx
دونوں طریقوں میں نیچے استعمال ہونے والا Nginx پلگ ان شامل ہے۔
مرحلہ 2 — سرٹیفکیٹ جاری کریں
Nginx پلگ ان سرٹیفکیٹ حاصل کرتا ہے اور ایک ہی مرحلے میں HTTPS کو فعال کرنے کے لیے آپ کے سرور بلاکس میں ترمیم کرتا ہے:
sudo certbot --nginx -d example.com -d www.example.com
Certbot ایک ای میل کے لیے کہے گا (جو میعاد ختم ہونے کی تنبیہات اور بازیابی کے لیے استعمال ہوتا ہے) اور آپ سے ACME شرائط سے اتفاق کرنے کے لیے کہے گا۔ جب یہ پوچھے کہ آیا HTTP کو HTTPS کی طرف ری ڈائریکٹ کرنا ہے، تو Redirect کا انتخاب کریں تاکہ تمام ٹریفک خفیہ ہو جائے۔
پسِ منظر میں، Certbot HTTP-01 challenge کا استعمال کرتا ہے: یہ /.well-known/acme-challenge/ کے تحت ایک ٹوکن رکھتا ہے اور Let's Encrypt اسے پورٹ 80 پر حاصل کرتا ہے تاکہ یہ ثابت ہو کہ آپ ڈومین کو کنٹرول کرتے ہیں۔
متبادل: webroot (Nginx میں کوئی ترمیم نہیں)
اگر آپ ترجیح دیتے ہیں کہ Certbot آپ کی کنفیگ کو نہ چھوئے — یہ عام ہے جب آپ کی TLS ترتیبات ٹیمپلیٹڈ یا منظم ہوں — تو صرف سرٹیفکیٹ حاصل کرنے کے لیے webroot طریقہ استعمال کریں:
sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com
پھر آپ خود اپنے Nginx سرور بلاک میں فائلوں کا حوالہ دیتے ہیں:
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ہمیشہ Nginx کو live/ راستے کی طرف اشارہ کریں، کبھی بھی تاریخ والی archive/ فائلوں کی طرف نہیں — live/ symlinks ہر تجدید پر اپ ڈیٹ ہوتے ہیں۔
مرحلہ 3 — تصدیق کریں کہ HTTPS کام کرتا ہے
Nginx کو دوبارہ لوڈ کریں اور اپنی سائٹ کھولیں:
sudo nginx -t && sudo systemctl reload nginx
https://example.com پر جائیں۔ آپ کو تالا (padlock) نظر آنا چاہیے۔ کمانڈ لائن سے سرٹیفکیٹ اور chain کی تصدیق کریں:
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates
یہ جاری کنندہ (Let's Encrypt) اور درستگی کی مدت پرنٹ کرتا ہے۔
مرحلہ 4 — خودکار تجدید سیٹ کریں
یہ وہ مرحلہ ہے جو رات 3 بجے کی بندشوں کو روکتا ہے۔ Certbot باقی ماندہ مدت کی بنیاد پر تجدید کرتا ہے، نہ کہ کسی مقررہ شیڈول پر، لہٰذا تجدید کی جانچ کو بار بار چلانا محفوظ ہے — اور اسی کا ارادہ بھی ہے۔
زیادہ تر تنصیبات پہلے ہی ایک تجدید جاب بنا دیتی ہیں۔ اس کے لیے جانچ کریں:
systemctl list-timers | grep certbot
اگر آپ کو ایک certbot.timer نظر آئے، تو خودکار تجدید فعال ہے۔ بطور پہلے سے طے شدہ یہ دن میں دو بار چلتا ہے، Let's Encrypt کے سرورز پر بوجھ کو پھیلانے کے لیے ایک بے ترتیب تاخیر کے ساتھ۔ "دن میں دو بار چلانا EFF کی اپنی سفارش ہے اور 90 دن اور کم 45 دن دونوں سرٹیفکیٹس کو آرام سے سنبھالتا ہے۔"
جاری کیے بغیر تجدید کی جانچ
ہمیشہ ایک dry run کے ساتھ تجدید کے راستے کے سرے سے سرے تک کام کرنے کی تصدیق کریں، جو staging ماحول کے خلاف تجدید کی نقالی کرتا ہے:
sudo certbot renew --dry-run
کامیاب dry run کا مطلب ہے کہ حقیقی تجدیدیں کامیاب ہوں گی۔
تجدید کے بعد Nginx کو دوبارہ لوڈ کریں
تجدید شدہ سرٹیفکیٹ صرف Nginx کے دوبارہ لوڈ ہونے کے بعد سرو ہوتا ہے۔ ایک deploy hook شامل کریں تاکہ ہر تجدید پر دوبارہ لوڈ خودکار طور پر ہو:
sudo certbot renew --deploy-hook "systemctl reload nginx"
Certbot اس hook کو سرٹیفکیٹ کی تجدید کی کنفیگریشن کے ساتھ محفوظ کرتا ہے، لہٰذا بعد کی خودکار تجدیدیں آپ کے لیے Nginx کو دوبارہ لوڈ کرتی ہیں۔ یہ دوبارہ لوڈ نرم (graceful) ہوتا ہے، جس سے لائیو کنکشنز میں تقریباً صفر خلل پڑتا ہے۔
اگر کوئی timer موجود نہ ہو (دستی cron)
پہلے سے ترتیب شدہ timer کے بغیر شاذ و نادر نظام پر، ایک cron اندراج شامل کریں جو دن میں دو بار ایک بے ترتیب sleep کے ساتھ جانچ چلائے:
echo "0 0,12 * * * root sleep $((RANDOM \% 3600)) && certbot renew -q --deploy-hook 'systemctl reload nginx'" | sudo tee /etc/cron.d/certbot
ایک نظر میں تجدید کے طریقے
| طریقہ | کب استعمال کریں | Nginx کو دوبارہ لوڈ کرتا ہے |
|---|---|---|
certbot.timer (systemd) |
زیادہ تر نظاموں پر پہلے سے طے شدہ؛ ترجیحی | deploy hook کے ذریعے |
/etc/cron.d/certbot |
systemd timers کے بغیر نظام | deploy hook کے ذریعے |
دستی certbot renew |
صرف ایک بار / مسئلہ حل کرنے کے لیے | --deploy-hook شامل کریں |
مسائل کا حل
- Challenge ناکام / timeout: اجرا کے دوران پورٹ 80 انٹرنیٹ سے قابلِ رسائی ہونا چاہیے۔ اپنے فائر وال اور کلاؤڈ سیکیورٹی گروپ کی جانچ کریں۔
- DNS مطابقت نہیں:
dig +short example.comدوبارہ چلائیں اور تصدیق کریں کہ یہ سرور IP سے مطابقت رکھتا ہے۔ DNS تبدیلیوں کے بعد پھیلاؤ کے لیے وقت دیں۔ - Rate limited: Let's Encrypt فی ہفتہ فی ڈومین سرٹیفکیٹس کو محدود کرتا ہے۔ جانچ کے لیے
--dry-runاستعمال کریں تاکہ آپ اپنا کوٹہ نہ جلائیں۔ - غلط راستہ سرو ہوا: یقینی بنائیں کہ Nginx
/etc/letsencrypt/live/...کا حوالہ دے، نہ کہarchive/کا۔
اختتامیہ
اب آپ کے پاس Nginx پر ایک مفت، براؤزر کے قابلِ اعتماد SSL سرٹیفکیٹ ہے جس کی تجدید بلا نگرانی چلتی ہے اور آپ کے ویب سرور کو خودکار طور پر دوبارہ لوڈ کرتی ہے — جو 90 دن اور نئی کم مدت والے سرٹیفکیٹ دونوں کے سامنے مضبوط ہے۔ ای میل کے لیے، وہی اصول لاگو ہوتا ہے: محفوظ میل ٹرانسپورٹ بھی اہمیت رکھتی ہے، اور Skyline business email hosting آپ کے لیے ترتیب شدہ TLS کے ساتھ فراہم ہوتی ہے۔ سرٹیفکیٹس، chains اور تعمیل میں مزید گہرائی تک جانے کے لیے، SSL سرٹیفکیٹس وسائل ہب دیکھیں۔
تیار ہیں کہ اسے ایک تیز رفتار، PDPL کے مطابق ان-کنگڈم سرور پر مقامی عربی سپورٹ کے ساتھ چلائیں؟ اپنا Skyline Cloud اکاؤنٹ بنائیں اور آج ہی ایک محفوظ سائٹ تعینات کریں۔
Comments
0 total · 0 threads