Tیہ مضمون آپ کو Nginx پر SSL سرٹیفکیٹ انسٹال کرنے کے مراحل سے روشناس کرائے گا اور HTTP:// سے HTTPS:// پر خودکار ری ڈائریکٹ ترتیب دینے میں مدد دے گا۔
1. اپنے ویب سائٹ کے میزبانی کرنے والے سرور پر سرٹیفکیٹس اپ لوڈ کریں
CSR کوڈ جنریشن اور SSL ایکٹیویشن کے مراحل مکمل کرنے کے بعد، آپ کو ای میل کے ذریعے Sectigo (جسے پہلے Comodo کہا جاتا تھا) کے سرٹیفکیٹس کے ساتھ ایک زپ فائل موصول ہوگی۔ آپ alternatively اسے اپنے NiceNic اکاؤنٹ پینل سے بھی ڈاؤن لوڈ کر سکتے ہیں۔
نوٹ: اگر آپ نے سرٹیفکیٹ فعال کرتے وقت NGINX سرور منتخب کیا ہے، تو آپ کو ایک زپ فائل موصول ہوگی جس میں '.crt' توسیع والی سرٹیفکیٹ فائل اور '.ca-bundle' توسیع والی سرٹیفکیٹ اتھارٹی (CA) بنڈل فائل شامل ہوگی۔
دونوں فائلز کو اپنی مرضی کے مطابق طریقہ سے اپنے سرور پر اپ لوڈ کریں۔ مثال کے طور پر FTP کلائنٹ کا استعمال کر کے۔
آپ ہر سرٹیفکیٹ کے لیے بنڈل فائل بھی یہاں دی گئی ہدایت کے مطابق ڈاؤن لوڈ کر سکتے ہیں۔
2. تمام سرٹیفکیٹس کو ایک فائل میں ضم کریں
آپ کو تمام سرٹیفکیٹس (?? ??_?????.crt اور ?? ??_?????.ca-bundle) کو ایک '.crt' فائل میں ضم کرنا ہوگا۔
آپ کے ڈومین کے سرٹیفکیٹ کو فائل میں پہلے آنا چاہیے، اس کے بعد سرٹیفکیٹ چین (CA Bundle) ہونی چاہیے۔
اس ڈائریکٹری میں جائیں جہاں آپ نے سرٹیفکیٹ فائلوں کو اپ لوڈ کیا ہے۔ فائلوں کو ضم کرنے کے لیے مندرجہ ذیل کمانڈ چلائیں:
$ cat ?? ??_?????.crt ?? ??_?????.ca-bundle >> ?? ??_?????_chain.crt
براہ کرم نوٹ کریں اگر سرٹیفکیٹ فائلیں آپ کے NiceNic اکاؤنٹ سے ڈاؤن لوڈ کی گئی ہیں، تو بہترین کمانڈ یہ ہوگی:
$ cat ?? ??_?????.crt > ?? ??_?????_chain.crt ; echo >> ?? ??_?????_chain.crt ; cat ?? ??_?????.ca-bundle >> ?? ??_?????_chain.crt
3. ایک علیحدہ Nginx سرور بلاک بنائیں یا موجودہ کنفیگریشن فائل میں ترمیم کریں
Nginx پر SSL سرٹیفکیٹ انسٹال کرنے کے لیے، آپ کو سرور کو دکھانا ہوگا کہ کون سی فائلیں استعمال کریں، یا تو a) نیا کنفیگریشن فائل بنا کر، یا b) موجودہ فائل میں ترمیم کر کے۔
a) ویب سائٹ کے لیے نیا کنفیگریشن فائل بنا کر آپ اس بات کو یقینی بنا سکتے ہیں کہ علیحدہ کنفیگریشن فائل سے کوئی مسئلہ نہ ہو۔ مزید برآں، نئے کنفیگریشن میں کسی بھی مسئلے کی صورت میں انسٹالیشن کو حل کرنا آسان ہوگا۔
ہم مشورہ دیتے ہیں کہ اس فولڈر میں نیا کنفیگریشن فائل بنائیں:
/etc/nginx/conf.d
یہ کمانڈ چلائیں:
sudo nano /etc/nginx/conf.d/Your_?????*-ssl.conf
جہاں Your_?????*-ssl.conf نیا بنائی گئی فائل کا نام ہے۔
اس کے بعد 443 پورٹ کے لیے نیچے دیے گئے سرور بلاکس میں سے کسی ایک کو کاپی کرکے پیسٹ کریں اور ڈائریکٹریز میں ترمیم کریں۔ یقینی بنائیں کہ سرور نام اور ویب روٹ کا راستہ پورٹ 80 اور 443 دونوں سرور بلاکس میں میل کھاتے ہوں۔ اگر کوئی اور اہم ویلیوز محفوظ کرنی ہوں تو انہیں نئے سرور بلاک میں بھی منتقل کریں۔
b) ویب سرور کی ڈیفالٹ کنفیگریشن فائل، جس کا نام nginx.conf ہے، میں ترمیم کریں۔ یہ فائل مندرجہ ذیل فولڈرز میں ہو سکتی ہے:
/usr/local/nginx/conf
/etc/nginx
/usr/local/etc/nginx
آپ اس کمانڈ کا استعمال کر کے اسے تلاش بھی کر سکتے ہیں:
sudo find / -type f -iname "nginx.conf"
جب آپ اسے تلاش کر لیں تو فائل کو اس طرح کھولیں:
sudo nano nginx.conf
پھر نیچے دیے گئے 443 پورٹ کے سرور بلاکس میں سے کسی ایک کو کاپی کریں اور اپنے 80 پورٹ کے سرور بلاک کے مطابق ڈائریکٹریز میں ترمیم کریں (سرور نام، ویب روٹ کا راستہ، اور دیگر اہم ویلیوز کے ساتھ جو آپ کو چاہئیں)۔ متبادل طور پر، آپ 80 پورٹ کے سرور بلاک کو کاپی کریں، پھر اسے نیچے پیسٹ کریں، پورٹ اپ ڈیٹ کریں اور ضروری SSL متعلقہ ہدایات شامل کریں۔
سرور بلاک منتخب کریں:
نیچے آپ اپنے Nginx ورژن کے لیے ایک سرور بلاک حاصل کر سکتے ہیں۔
نوٹ: اپنے Nginx ورژن کو چیک کرنے کے لیے یہ کمانڈ چلائیں:
sudo nginx -v

نوٹ: سرور بلاک میں فائل کے ناموں کی جگہ، جیسے ?? ??_?????_chain.crt, کو اپنی تفصیلات کے ساتھ تبدیل کریں، اور ان کے راستوں کو /path/to/ کا استعمال کرتے ہوئے درست کریں۔
Nginx ورژن 1.14 اور اس سے نیچے کے لیے سرور بلاک:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/?? ??_?????_chain.crt;
ssl_certificate_key /path/to/?? ??_private.key;
root /path/to/webroot;
server_name ?? ??_?????.com;
}
نوٹ: اگر ضرورت ہو تو، آپ اس طرح کے کنفیگریشن میں کئی ہوسٹ نیم بھی مخصوص کر سکتے ہیں، جیسے:
server {
listen 443;
ssl on;
ssl_certificate /path/to/certificate/?? ??_?????_chain.crt;
ssl_certificate_key /path/to/?? ??_private.key;
root /path/to/webroot;
server_name ?? ??_?????.com www.?? ??_?????.your;
}
Nginx ورژن 1.15 اور اوپر کے لیے سرور بلاک:
server {
listen 443 ssl;
ssl_certificate /path/to/certificate/?? ??_?????_chain.crt;
ssl_certificate_key /path/to/?? ??_private.key;
root /path/to/webroot;
server_name ?? ??_?????.com;
}
ssl_certificate کو اس فائل کی طرف اشارہ کرنا چاہیے جس میں آپ نے پہلے ملے جلے سرٹیفکیٹس بنائے تھے۔
ssl_certificate_key کو اس پرائیویٹ کی کی طرف اشارہ کرنا چاہیے جو CSR کوڈ کے ساتھ بنائی گئی تھی۔
یہاں کچھ تجاویز ہیں کہ Nginx پر پرائیویٹ کی کیسے تلاش کریں۔
اہم: چاہے آپ کے پاس ملٹی ڈومین ہو یا وائلڈکارڈ سرٹیفکیٹ، آپ کو ہر متعلقہ ڈومین/سب ڈومین کے لیے الگ سرور بلاک شامل کرنا ہوگا۔ یقینی بنائیں کہ سرور بلاک میں ڈومین/سب ڈومین اور متعلقہ سرٹیفکیٹ فائلوں کے راستے درست طریقے سے شامل کیے گئے ہوں، جیسا کہ اوپر بیان کیا گیا ہے۔
ایک بار جب متعلقہ سرور بلاک فائل میں شامل ہو جائے، تو تبدیلیوں کو محفوظ کریں۔ پھر آپ درج ذیل مراحل کے ذریعے تبدیلیوں کو دوبارہ چیک کر سکتے ہیں۔
اس کمانڈ کو چلائیں تاکہ کنفیگریشن فائل کی سنٹیکس جانچی جا سکے:
sudo nginx -t

اگر آپ کو غلطیاں موصول ہوں تو دوبارہ چیک کریں کہ آپ نے گائیڈ کو صحیح طریقے سے فالو کیا ہے۔ اگر آپ کے پاس کوئی سوالات ہوں تو بلا جھجھک ہماری سپورٹ ٹیم سے رابطہ کریں۔
یہاں ایک ٹپ ہے: غلطی لاگز تلاش کرنے کے لیے، صرف یہ کمانڈ چلائیں:
sudo nginx -T | grep 'err??_log'
اگر مذکورہ فائلز موجود نہیں ہیں، فائلز کمنٹ آؤٹ ہیں یا کوئی ایرر لاگ فائل مخصوص نہیں ہے، تو ڈیفالٹ سسٹم لاگ کو چیک کرنا چاہیے:
tail /var/log/nginx/err??.log -n 20
اگر سرور ٹیسٹ کامیابی سے ظاہر کرے، تو تبدیلیوں کو نافذ کرنے کے لیے Nginx کو اس کمانڈ کے ذریعہ دوبارہ شروع کریں:
sudo nginx -s reload
اب آپ کا SSL سرٹیفکیٹ انسٹال ہو چکا ہے۔ آپ یہاں انسٹالیشن چیک کر سکتے ہیں۔
اہم نوٹس:
کبھی کبھار، کمانڈ لائن کے ذریعے ملے جلے SSL فائل انسٹال کرنے کے بعد 'Nginx/Apache err??: 0906D066:PEM routines:PEM_read_bio:bad end line' کی خرابی کا سامنا ہو سکتا ہے، اس صورت میں مسئلے کا حل حوالہ جاتی گائیڈ میں موجود ہے۔
اس مرحلے پر ایک اور عام مسئلہ 'Nginx SSL: err??:0B080074:x509 certificate routines: X509_check_private_key:key values mismatch' کی خرابی ہے، آپ اس آرٹیکل میں اس کے مزید تفصیلات اور ممکنہ حل حاصل کر سکتے ہیں۔
4. HTTPS ری ڈائریکٹ ترتیب دیں
ہم مشورہ دیتے ہیں کہ آپ HTTP سے HTTPS پر ری ڈائریکٹ انسٹال کریں۔ اس طرح آپ کے ویب سائٹ ملاحظین صرف آپ کی سائٹ کے محفوظ ورژن تک رسائی حاصل کر پائیں گے۔
اس کے لیے، آپ کو 80 پورٹ کے سرور بلاک کی کنفیگریشن فائل میں ایک لائن شامل کرنی ہوگی۔
تجاویز:
آپ درج ذیل کمانڈز میں سے کسی ایک کا استعمال کر کے فعال کنفیگریشن فائلز کی تلاش کر سکتے ہیں:
sudo nginx -T | grep -iw "configuration file"
sudo nginx -T | grep -iw "include"
ڈیفالٹ کنفیگریشن فائل کے راستے یہ ہیں:
RHEL مبنی لینکس ?? ??? پر: /etc/nginx/conf.d/default.conf
Debian مبنی لینکس ?? ??? پر: /etc/nginx/sites-enabled/default
آپ فائلز کھول کر چیک کر سکتے ہیں کہ کون سی فائل میں مطلوبہ سرور بلاک موجود ہے۔ اس کے لیے یہ کمانڈ چلائیں:
sudo nano name_of_the_file
جب آپ کو وہ فائل مل جائے جس میں 80 پورٹ کے سرور بلاک (ڈیفالٹ HTTP پورٹ) موجود ہو، تو اس میں درج ذیل لائن شامل کریں:
return 301 https://$server_name$request_uri;
نوٹ: مذکورہ ری ڈائریکٹ رول سرور بلاک میں آخری لائن کے طور پر داخل کرنا چاہیے۔
{{/G454}}
آپ یہاں Nginx پر ری ڈائریکشن کے اختیارات کے بارے میں مزید تفصیلات حاصل کر سکتے ہیں۔