یک راه آسان برای امن سازی Nginx در Debian 10/11 استفاده از یک گواهی صادرکننده به نام Let’s Encrypt است. این گواهی صادرکننده روشی را برای دریافت و نصب گواهینامه های رایگان TLS/SSL ارائه می دهد. همچنین HTTP رمزگذاری شده را در وب سرورها فعال می کند. فرآیند نصب و دریافت گواهینامه ها در Nginx به طور کامل خودکار است. Let’s Encrypt که توسط ISRG توسعه یافته است، یک گواهی صادرکننده رایگان و متن باز است که گواهینامه های SSL رایگان ارائه می دهد. تمام مرورگرهای اصلی به گواهینامه های Let’s Encrypt که از تاریخ صدور آنها سه ماه اعتبار دارند، اعتماد می کنند.
استفاده از Certbot
این مقاله از ابزار آسان استفاده Certbot برای دریافت یک گواهینامه SSL رایگان برای امن سازی Nginx در Debian 10/11 استفاده می کند. همچنین از یک فایل بلوک سرور Nginx جداگانه به جای فایل پیش فرض استفاده می شود. برای حفظ فایل های پیش فرض به عنوان یک پیکربندی پشتیبان، می توانید فایل های بلوک سرور Nginx جدید را برای هر دامنه ایجاد کنید.
پیش نیازهای Nginx در Debian
برای اینکه این آموزش به درستی کار کند، گزینه های زیر را در نظر بگیرید و برای امن سازی Nginx در Debian 10/11 ادامه دهید.
- یک سرور لینوکس در حال اجرای Debian.
- یک کاربر غیر ریشه با امتیازات سودو.
- یک دامنه که به آدرس IP عمومی سرور شما اشاره می کند تا گواهینامه SSL را دریافت کند.
نکته: در این راهنما، your_domain به آدرس IP عمومی سرور شما اشاره می کند و www.your_domain به آدرس IP عمومی سرور شما اشاره می کند.
آموزش امن سازی Nginx در Debian 10/11
برای امن سازی Nginx در Debian 10/11، باید یک گواهینامه SSL رایگان Let’s Encrypt را نصب کنید. همانطور که ذکر شد، از Certbot برای دریافت و تمدید گواهینامه ها استفاده می کنیم. Certbot یک ابزار کامل است که وظایف دریافت و تمدید گواهینامه های SSL Let’s Encrypt و پیکربندی وب سرورها برای استفاده از گواهینامه ها را به طور خودکار انجام می دهد.
با ما همراه شوید تا از مراحل این راهنما برای امن سازی Nginx در Debian 10/11 بگذریم.
مرحله ۱. نصب Certbot
اولین قدم برای امن سازی Nginx در Debian، نصب Certbot است. در حالی که Certbot در مخازن پیش فرض Debian وجود دارد، دستورات زیر را برای نصب آن اجرا کنید.
sudo apt update
sudo apt install python3-certbot-nginx
اجرای دستورات فوق، Certbot را برای استفاده در سرور Debian شما آماده می کند. فقط برخی از پیکربندی های Nginx را برای کمک به آن در پیکربندی SSL برای Nginx تأیید کنید.
مرحله ۲. تأیید پیکربندی Nginx
همانطور که می دانید، Certbot نیاز دارد تا بلوک سرور مناسب را در پیکربندی Nginx پیدا کند تا بتواند SSL را به طور خودکار پیکربندی کند. بنابراین، از ویرایشگر مورد علاقه خود برای باز کردن فایل بلوک سرور برای دامنه خود استفاده کنید تا آن را تأیید کنید. در اینجا، از nano استفاده می کنیم.
sudo nano /etc/nginx/sites-available/your_domain
برای پیدا کردن بلوک سرور صحیح، در خط server-name جستجو کنید که با دامنه درخواستی شما مطابقت داشته باشد، مانند زیر:
/etc/nginx/sites-available/your_domain
server_name your_domain www.your_domain;
اگر نتیجه فوق را دریافت کردید، همه چیز آماده است. اما اگر نه، باید آن را به روز کنید. فایل بلوک باید برای بررسی و تصحیح هرگونه اشتباه تایپی یا کاراکترهای گم شده، دوباره باز شود.
هرچند، برای ادامه به مرحله بعد، فایل را ذخیره کرده و از ویرایشگر خارج شوید، و برای بررسی نحوه نگارش تغییرات پیکربندی خود، دستور زیر را اجرا کنید:
sudo nginx -t
زمانی که یک فایل پیکربندی صحیح داشتید، از دستور زیر برای بارگذاری مجدد Nginx و بارگیری پیکربندی جدید استفاده کنید:
sudo systemctl reload nginx
به این ترتیب، بلوک سرور صحیح می تواند توسط Certbot پیدا و به روز شود. سه مرحله دیگر برای امن سازی Nginx در Debian باقی مانده است. با ما همراه باشید.
مرحله ۳. تغییر تنظیمات فایروال برای اجازه دادن به ترافیک HTTPS
در این بخش، باید به ترافیک HTTPS اجازه دهید و فایروال را به روز کنید. اگر فایروال ufw را فعال کرده اید، تنظیمات را برای اجازه دادن به ترافیک HTTPS تنظیم کنید. بنابراین، ابتدا از دستور زیر برای مشاهده تنظیمات فعلی استفاده کنید.
sudo ufw status
زمانی که در خروجی وضعیت فعال را مشاهده کردید، می توانید مطمئن شوید که فقط ترافیک HTTP به وب سرور اجازه داده شده است.
سپس، به پروفایل کامل Nginx اجازه دهید و اجازه پروفایل اضافی Nginx HTTP را حذف کنید.
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'
باید وضعیتی مانند این داشته باشید:
sudo ufw status
مرحله ۴. دریافت گواهینامه SSL
در صورت گذراندن موفقیت آمیز سه مرحله اخیر، می توانید در این بخش Certbot را اجرا کرده و گواهینامه های خود را دریافت کنید. روش های مختلفی برای دریافت گواهینامه های SSL از طریق پلاگین های Certbot وجود دارد. استفاده از پلاگین Nginx به شما کمک می کند تا Nginx را پیکربندی مجدد کرده و پیکربندی را بارگذاری کنید. دستور زیر را برای استفاده از این پلاگین اجرا کنید.
sudo certbot --nginx -d your_domain -d www.your_domain
اگر برای اولین بار از certbot استفاده می کنید، از شما خواسته می شود تا آدرس ایمیل خود را وارد کرده و پذیرش شرایط خدمات را تأیید کنید. پس از این، certbot به سرور Let’s Encrypt متصل می شود و یک چالش را برای تأیید اینکه شما مالک دامنه ای هستید که برای آن درخواست گواهینامه می دهید، راه اندازی می کند. اگر موفقیت آمیز باشد، certbot از شما می پرسد که چگونه می خواهید تنظیمات HTTPS شما تنظیم شود.
انتخاب خود را انجام دهید و سپس ENTER را فشار دهید. پس از به روزرسانی پیکربندی، Nginx بارگذاری مجدد شده و تنظیمات جدید را در نظر می گیرد. زمانی که فرآیند به پایان رسید، certbot یک پیام را برای شما ارسال می کند که نتیجه و محل گواهینامه های شما را اطلاع می دهد:
شما گواهینامه های خود را دانلود، راه اندازی و بارگذاری کرده اید. پس از بارگذاری مجدد صفحه وب خود با پروتکل https://، نشانگر امنیتی مرورگر خود را بررسی کنید. باید یک آیکون قفل را با رنگ سبز معمول نشان دهد تا نشان دهد که وب سایت به درستی امن شده است.
تنها یک مرحله برای امن سازی Nginx در Debian 10/11 باقی مانده است که آزمایش فرآیند تمدید است.
مرحله ۵. تأیید تمدید خودکار Certbot
به عنوان آخرین مرحله، باید تمدید خودکار Certbot را تأیید کنید. همانطور که ذکر شد، گواهینامه های Let’s Encrypt فقط برای نود روز معتبر هستند. بنابراین، این ضرب العجل را دارید تا فرآیند تمدید گواهینامه خود را خودکار کنید. بسته certbot که نصب شده است، با اضافه کردن یک اسکریپت تمدید به /etc/cron.d از این کار مراقبت می کند. این اسکریپت دو بار در روز اجرا می شود و به طور خودکار هر گواهینامه ای را که تا سی روز دیگر منقضی می شود، تمدید می کند.
دستور زیر را برای آزمایش فرآیند تمدید وارد کنید:
sudo certbot renew --dry-run
بسته certbot همچنین یک تایمر systemd را اضافه می کند که دو بار در روز اجرا می شود و به طور خودکار هر گواهینامه ای را تمدید می کند. برای پرس و جوی وضعیت تایمر با systemctl، دستور زیر را اجرا کنید:
sudo systemctl status certbot.timer
در این مرحله، Certbot گواهینامه های شما را تمدید می کند و Nginx را برای اعمال تغییرات بارگذاری مجدد می کند. عدم دریافت خطا به این معنی است که همه چیز آماده است. اگر از Let’s Encrypt هشداری مبنی بر اینکه گواهینامه شما در آستانه انقضا است، دریافت کردید، به این معنی است که فرآیند تمدید خودکار هرگز شکست نمی خورد.
تبریک! تمام مراحل مورد نیاز برای امن سازی Nginx در Debian با موفقیت انجام شد.
نتیجه گیری
در این مقاله، شما آموختید که چگونه Nginx را در Debian 10/11 امن کنید. شما با نصب مشتری Let’s Encrypt یعنی certbot شروع کردید و سپس گواهینامه های SSL برای دامنه شما دانلود شد، Nginx برای استفاده از این گواهینامه ها پیکربندی شد و تمدید خودکار گواهینامه راه اندازی شد.
اگر مراحل لازم این راهنما را به درستی دنبال کرده باشید، Nginx شما باید در Debian بدون هیچ خطایی امن شده باشد.