انڈروئد

اوبنٹو 16.04 پر انکرپٹ کے ساتھ محفوظ nginx

ئەو ڤیدیۆی بوویە هۆی تۆبە کردنی زۆر گەنج

ئەو ڤیدیۆی بوویە هۆی تۆبە کردنی زۆر گەنج

فہرست کا خانہ:

Anonim

چلو انکرپٹ ایک مفت اور کھلا سرٹیفکیٹ اتھارٹی ہے جو انٹرنیٹ سیکیورٹی ریسرچ گروپ (ISRG) کے ذریعہ تیار کیا گیا ہے۔ چلو انکرپٹ کے ذریعہ جاری کردہ سرٹیفکیٹس پر آج تقریبا almost تمام براؤزرز پر بھروسہ کیا گیا ہے۔

اس ٹیوٹوریل میں ، ہم مرحلہ وار ہدایات فراہم کریں گے کہ اوبنٹو 16.04 پر سندٹبوٹ ٹول کا استعمال کرتے ہوئے لیٹ انکرپٹ کے ذریعہ اپنے نگنیکس کو کیسے محفوظ بنایا جائے۔

شرطیں

اس ٹیوٹوریل کو جاری رکھنے سے پہلے یقینی بنائیں کہ آپ نے مندرجہ ذیل شرائط کو پورا کرلیا ہے۔

  • آپ کا ایک ڈومین نام ہے جو آپ کے عوامی سرور IP کی طرف اشارہ کرتا ہے۔ اس ٹیوٹوریل میں ہم example.com کا استعمال کریں گے۔ آپ نے اوبنٹو 16.04 پر Nginx کو انسٹال کرنے کے طریقے پر عمل کرکے Nginx انسٹال کیا ہے۔

سرٹبوٹ انسٹال کریں

سیرٹ بوٹ ازگر میں لکھی جانے والی ایک افادیت ہے جو چلو انکرپٹ ایس ایس ایل سرٹیفکیٹ کو حاصل کرنے اور تجدید کرنے اور ویب سرورز کی تشکیل کے لئے کاموں کو خود بخود کرسکتی ہے۔

پہلے software-properties-common پیکیج انسٹال کریں جو اضافی پی پی اے کو شامل کرنے کے لئے درکار add-apt-repository ٹول فراہم کرتا ہے۔

پیکیجز انڈیکس کو اپ ڈیٹ کریں اور software-properties-common کو انسٹال کریں۔

sudo apt update sudo apt install software-properties-common

ایک بار جب انسٹالیشن مکمل ہوجائے تو ، مندرجہ ذیل کمانڈ کا استعمال کرکے اپنے سسٹم میں سیرٹبوٹ پی پی اے مخزن شامل کریں۔

sudo add-apt-repository ppa:certbot/certbot

پیکجوں کی فہرست کو اپ ڈیٹ کریں اور سیرٹبوٹ پیکیج انسٹال کریں:

sudo apt update sudo apt install certbot sudo apt update sudo apt install certbot

مضبوط ڈی ایچ (ڈفی ہیلمین) گروپ تیار کریں

ڈیفی – ہیلمین کیچ ایکسچینج (ڈی ایچ) غیر محفوظ مواصلات کے چینل پر کرپٹوگرافک چابیاں کا محفوظ طریقے سے تبادلہ کرنے کا ایک طریقہ ہے۔ سیکیورٹی کو مستحکم کرنے کے لئے 2048 بٹ ڈی ایچ پیرامیٹرز کا ایک نیا سیٹ تیار کریں:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048 اگر آپ پسند کرتے ہیں تو آپ سائز کو 4096 بٹس تک تبدیل کرسکتے ہیں ، لیکن اس صورت میں ، نسل انسٹروپی کے حساب سے 30 منٹ سے زیادہ وقت لے سکتی ہے۔

آئیے اینکرپٹ ایس ایس ایل سرٹیفکیٹ حاصل کرنا

ہمارے ڈومین کے لئے ایس ایس ایل سرٹیفکیٹ حاصل کرنے کے ل we're ہم ویبروٹ پلگ ان کا استعمال کرنے جارہے ہیں جو domain ${webroot-path}/.well-known/acme-challenge ڈائرکٹری میں مطلوبہ ڈومین کی توثیق کرنے کے لئے عارضی فائل تشکیل دے کر کام کرتا ہے۔ چلو انکرپٹ سرور عارضی فائل سے HTTP درخواست کرتا ہے تاکہ یہ تصدیق کی جاسکے کہ درخواست کردہ ڈومین سرور میں حل ہوجاتا ہے جہاں سرٹیٹ بوٹ چلتا ہے۔

اس کو مزید آسان بنانے کے /var/lib/letsencrypt ایک واحد ڈائرکٹری ، /var/lib/letsencrypt .well-known/acme-challenge لئے تمام HTTP درخواستوں کا نقشہ /var/lib/letsencrypt گے۔

مندرجہ ذیل کمانڈز ڈائریکٹری تشکیل دیں گے اور اسے نینگس سرور کیلئے قابل تحریر بنا دیں گے۔

mkdir -p /var/lib/letsencrypt/.well-known chgrp www-data /var/lib/letsencrypt chmod g+s /var/lib/letsencrypt

نقل کوڈ سے بچنے کے لئے درج ذیل دو ٹکڑوں کو تخلیق کریں جسے ہم اپنی تمام Nginx سرور بلاک فائلوں میں شامل کرنے جارہے ہیں۔

/etc/nginx/snippets/letsencrypt.conf

location ^~ /.well-known/acme-challenge/ { allow all; root /var/lib/letsencrypt/; default_type "text/plain"; try_files $uri =404; } /etc/nginx/snippets/ssl.conf

ssl_dhparam /etc/ssl/certs/dhparam.pem; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS'; ssl_prefer_server_ciphers on; ssl_stapling on; ssl_stapling_verify on; resolver 8.8.8.8 8.8.4.4 valid=300s; resolver_timeout 30s; add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload"; add_header X-Frame-Options SAMEORIGIN; add_header X-Content-Type-Options nosniff;

مذکورہ ٹکڑے میں موزیلا کے ذریعہ چیپروں کی بحالی شامل ہے ، او سی ایس پی اسٹپلنگ ، ایچ ٹی ٹی پی سخت ٹرانسپورٹ سیکیورٹی (ایچ ایس ٹی ایس) کو اہل بناتا ہے اور حفاظتی مرکوز ایچ ٹی ٹی پی ہیڈر کو نافذ کرتا ہے۔

ایک بار اس کے ٹکڑوں کے letsencrypt.conf بعد ، ڈومین سرور بلاک کھولیں اور letsencrypt.conf کا ٹکڑا شامل کریں جیسا کہ ذیل میں دکھایا گیا ہے:

/etc/nginx/sites-avala/example.com.conf

server { listen 80; server_name example.com www.example.com; include snippets/letsencrypt.conf; }

sites-enabled sites-available علامتی لنک بنا کر سرور بلاک کو sites-enabled :

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

تبدیلیوں کے اثر انداز ہونے کے لئے نینگینکس ترتیب کو دوبارہ لوڈ کریں۔

sudo systemctl reload nginx

ویبروٹ پلگ ان کے ساتھ سیرٹ بوٹ اسکرپٹ چلائیں اور SSL سرٹیفکیٹ فائلوں کو حاصل کریں:

sudo certbot certonly --agree-tos --email [email protected] --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com

اگر ایس ایس ایل سرٹیفکیٹ کامیابی کے ساتھ حاصل کرلیا گیا ہے ، تو سرٹی بوٹ مندرجہ ذیل پیغام کو پرنٹ کرے گا۔

IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2018-04-23. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF:

اب جب کہ ہمارے پاس سرٹیفکیٹ فائلیں ہیں ، اس طرح ڈومین سرور بلاک میں ترمیم کریں:

/etc/nginx/sites-avala/example.com.conf

server { listen 80; server_name www.example.com example.com; include snippets/letsencrypt.conf; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name www.example.com; ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; return 301 https://example.com$request_uri; } 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_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem; include snippets/ssl.conf; include snippets/letsencrypt.conf; #… other code }

مذکورہ بالا ترتیب کے ساتھ ہم ایچ ٹی ٹی پی ایس کو مجبور کررہے ہیں اور ڈومین کے www ورژن کو www ورژن میں بھیج رہے ہیں۔

تبدیلیوں کے اثر انداز ہونے کے لئے نینگینکس سروس کو دوبارہ لوڈ کریں:

sudo systemctl reload nginx

SSL سرٹیفکیٹ آٹو تجدید

آئیے اینکرپٹ کے سرٹیفکیٹ 90 دن کے لئے موزوں ہیں۔ سرٹیفکیٹ کی میعاد ختم ہونے سے پہلے خود بخود تجدید کرنے کے لئے ، سرٹ بوٹ پیکیج ایک ایسا کراؤن کام تیار کرتا ہے جو دن میں دو بار چلے گا اور کسی بھی سرٹیفکیٹ کی میعاد ختم ہونے سے 30 دن قبل خود بخود تجدید ہوجائے گا۔

چونکہ جب ہم سرٹیفکیٹ کی تجدید ہوجاتا ہے تو ہم سرٹبوٹ ویبروٹ پلگ ان کا استعمال کر رہے ہیں ، ہمیں نین ایکس ایکس سروس بھی دوبارہ لوڈ کرنا ہوگی۔ ایسا کرنے کے لئے /etc/cron.d/certbot فائل میں --renew-hook "systemctl reload nginx" کریں تاکہ جیسے یہ نظر آئے:

/etc/cron.d/certbot

0 */12 * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload nginx"

تجدید کاری کے عمل کی جانچ کرنے کے لئے ، سرٹبوٹ --dry-run ڈرائی --dry-run سوئچ کا استعمال کریں:

sudo certbot renew --dry-run

اگر کوئی غلطیاں نہیں ہیں تو ، اس کا مطلب ہے کہ تجدید کا عمل کامیاب رہا۔

نتیجہ اخذ کرنا

اس ٹیوٹوریل میں ، آپ نے اپنے ڈومین کے لئے SSL سرٹیفکیٹ حاصل کرنے کے لئے لیٹس اینکرپٹ کلائنٹ ، سرٹ بوٹ کا استعمال کیا۔ آپ نے کوڈ ڈپلیکیکشن سے بچنے کے لئے نینجینس کے ٹکڑوں کو بھی تشکیل دیا ہے اور سرٹیفکیٹ کو استعمال کرنے کے لئے نجنکس کو تشکیل دیا ہے۔ سبق کے اختتام پر آپ نے خود کار طریقے سے سرٹیفکیٹ کی تجدید کیلئے ایک کرون کام ترتیب دیا ہے۔

nginx ubuntu آئیے encrypt certbot ssl کریں