نحوه رمزگذاری Nginx در اوبونتو
نحوه رمزگذاری Nginx در اوبونتو را مشاهده میکنید از وبلاگ فاما سرور,در این آموزش قصد داریم تا نحوه رمزنگاری وب سرور Nginx را مرور کنیم و برای نصب Nginx میتوانید آموزش نصب Nginx در اوبونتو را مشاهده کنید.
مقدمه
Let’s Encrypt یک مجوز مجوز (CA) است که روشی آسان برای به دست آوردن و نصب مجوزهای رایگان TLS / SSL فراهم می کند و بدین ترتیب HTTPS رمزگذاری شده را روی سرورهای وب امکان می دهد. این فرایند را با ارائه یک مشتری نرم افزاری ، Certbot ، که سعی در خودکارسازی بیشتر (اگر نه همه) مراحل لازم انجام شود ، ساده می کند. در حال حاضر ، کل مراحل اخذ و نصب گواهینامه به طور کامل در هر دو آپاچی و Nginx انجام می شود.
در این آموزش از Certbot برای به دست آوردن گواهینامه رایگان SSL برای Nginx در اوبونتو ۲۰٫۰۴ استفاده می کنید و گواهی خود را برای تجدید خودکار تنظیم می کنید.
در این آموزش به جای فایل پیش فرض از یک فایل پیکربندی سرور Nginx جداگانه استفاده می شود. ما توصیه می کنیم برای هر دامنه فایلهای بلوک جدید سرور Nginx ایجاد کنید زیرا این امر به جلوگیری از اشتباهات رایج کمک می کند و فایل های پیش فرض را به عنوان پیکربندی برگشتی حفظ می کند.
پیش نیازها
برای دنبال کردن این آموزش ، شما نیاز دارید:
سرور مجازی یا سرور اختصاصی با سیستم عامل Ubuntu 20.04
نام دامنه ثبت شده در این آموزش از xample.com است که در سراسر مقاله استفاده می شود. هر دو پرونده DNS زیر برای سرور شما تنظیم شده اند.
دقت داشته باشید که دامنه ما باید ۲ a record را به آدرس آیپی اصلی سرور با نام های xample.com و www.xample.com رو برگرداند.
Nginx با دنبال کردن نحوه آموزش نصب Ngnix در اوبونتو نصب شده است. مطمئن باشید که یک بلوک سرور برای دامنه خود دارید. در این آموزش از /etc/nginx/sites-available/example.com به عنوان نمونه استفاده می شود.
نصب Certbot
اولین قدم برای استفاده از Letry Encrypt برای به دست آوردن گواهی SSL ، نصب نرم افزار Certbot در سرور شماست.
Certbot را نصب کنید و افزونه Nginx با کاربرد مناسب است:
sudo apt install certbot python3-certbot-nginx
Certbot اکنون آماده استفاده است ، اما برای آنکه بتواند SSL را برای Nginx به صورت خودکار پیکربندی کند ، باید برخی از پیکربندی های Nginx را تأیید کنیم.
پیکربندی Nginx
Certbot باید بتواند بلوک صحیح سرور را در تنظیمات Nginx شما پیدا کند تا بتواند SSL را بطور خودکار پیکربندی کند. به طور خاص ، این کار را با جستجوی یک دستورالعمل server_name متناسب با دامنه مورد نظر برای دریافت گواهینامه انجام می دهد.
اگر مرحله نصب بلوک سرور را در آموزش نصب Nginx دنبال کردید ، باید یک بلوک سرور برای دامنه خود در /etc/nginx/sites-available/example.com
با دستور server_name
که قبلاً به طور مناسب تنظیم شده است ، داشته باشید.
برای بررسی ، پرونده پیکربندی دامنه خود را با استفاده از نانو یا ویرایشگر متن مورد علاقه خود باز کنید:
sudo nano /etc/nginx/sites-available/example.com
خط server_name موجود را پیدا کنید. می بایست شبیه به این باشه:
... server_name example.com www.example.com; ...
اگر این کار را انجام داد ، از ویرایشگر خود خارج شوید و به مرحله بعدی بروید.
اگر اینطور نیست ، آن را به روز کنید تا مطابقت داشته باشد. سپس پرونده را ذخیره کنید ، از ویرایشگر خود خارج شوید و نحو ویرایش های پیکربندی خود را تأیید کنید:
sudo nginx -t
اگر خطایی رخ داد ، فایل بلوک سرور را مجدداً باز کنید و هرگونه علامت ضعف یا شخصیت گمشده را بررسی کنید. پس از اینکه نحو فایل پیکربندی شما صحیح است ، Nginx را بارگیری کنید تا پیکربندی جدید بارگیری شود:
sudo systemctl reload nginx
Certbot اکنون می توانید بلاک صحیح سرور را پیدا کرده و به طور خودکار آن را به روز کنید.
در مرحله بعد ، اجازه دهید تا ترافیک HTTPS فایروال را به روز کنیم.
اجازه دادن به HTTPS از طریق فایروال
اگر فایروال ufw را فعال کنید ، همانطور که توسط راهنماهای پیش نیاز توصیه شده است ، برای تنظیم ترافیک HTTPS ، باید تنظیمات را تنظیم کنید. خوشبختانه ، Nginx پس از نصب چند نمایه را با ufw ثبت می کند.
با تایپ می توانید تنظیم فعلی را مشاهده کنید:
sudo ufw status
این احتمالاً مانند این خواهد بود ، به این معنی که فقط ترافیک HTTP به سرور وب مجاز است:
خروجی
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
برای اینکه علاوه بر این در ترافیک HTTPS اجازه دهید ، به پروفایل Nginx Full اجازه دهید و هزینه اضافی پروفایل Nginx HTTP را حذف کنید:
sudo ufw allow 'Nginx Full' sudo ufw delete allow 'Nginx HTTP'
وضعیت شما اکنون باید به این شکل باشد:
sudo ufw status
خروجی
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx Full (v6) ALLOW Anywhere (v6)
بعد ، بیایید Certbot را اجرا کنیم و گواهینامه هایمان را واکشی کنیم.
اخذ گواهینامه SSL
Certbot روشهای مختلفی برای به دست آوردن گواهینامه های SSL از طریق افزونه ها ارائه می دهد. افزونه Nginx برای تنظیم مجدد Nginx و بارگیری مجدد پیکربندی در صورت لزوم ، مراقبت خواهد کرد. برای استفاده از این افزونه ، موارد زیر را تایپ کنید:
sudo certbot --nginx -d example.com -d www.example.com
این کار با افزونه --nginx
با استفاده از -d
برای مشخص کردن نام دامنه ای که می خواهیم برای آن معتبر باشد معتبر است.
اگر این نخستین بار است که در حال اجرا کردن certbot
هستید ، از شما خواسته می شود که آدرس ایمیل را وارد کنید و با شرایط خدمات موافقت کنید. بعد از انجام این کار ، certbot
با سرور Letry Encrypt ارتباط برقرار می کند ، سپس برای تأیید اینکه دامنه مورد نظر خود را کنترل می کنید ، یک چالش را اجرا کنید.
اگر این موفقیت آمیز باشد ، certbot
از شما می خواهد که چگونه می خواهید تنظیمات HTTPS خود را پیکربندی کنید.
خروجی
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ۱: No redirect - Make no further changes to the webserver configuration. ۲: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel):
ترجمه گزینه های بالا:
۱: بدون تغییر مسیر – هیچ تغییری در پیکربندی وب سرور ایجاد نکنید.
۲: تغییر مسیر – برای اطمینان از دسترسی HTTPS ، کلیه درخواستها را تغییر مسیر دهید. این را انتخاب کنید
انتخاب خود را انتخاب کرده و وارد ENTER
شوید. پیکربندی به روز خواهد شد ، و Nginx بارگیری می کند تا تنظیمات جدید را انتخاب کند. certbot
با پیغامی همراه خواهد شد که به شما می گوید روند موفقیت آمیز بود و گواهی نامه های شما در کجا ذخیره شده است:
خروجی
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 2020-08-18. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. 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: https://eff.org/donate-le
گواهینامه های شما بارگیری ، نصب و بارگیری می شوند. سعی کنید وب سایت خود را با استفاده از https: // بارگیری مجدد کنید و به نشانگر امنیتی مرورگر خود توجه کنید. باید نشان دهد که سایت به طور صحیح ایمن است ، معمولاً با نماد قفل. اگر سرور خود را با استفاده از SSL Labs Server Test تست كنید ، درجه A می گیرد.
بیایید با آزمایش روند تجدید به پایان برسیم.
تأیید تمدید خودکار Certbot
اجازه دهید گواهینامه های رمزگذاری شده فقط برای نود روز اعتبار داشته باشند. این امر برای ترغیب کاربران به اتوماسیون فرایند تجدید گواهینامه است. بسته certbot
ما نصب کرده ایم با اضافه کردن یک تایمر سیستمی که دو بار در روز اجرا می شود و به طور خودکار هر مدرکی را که در طی سی روز از انقضا باشد به طور خودکار تمدید می کند.
می توانید وضعیت تایمر را با systemctl
پرس و جو کنید:
sudo systemctl status certbot.timer
خروجی
●
certbot.timer - Run certbot twice daily Loaded: loaded (/lib/systemd/system/certbot.timer; enabled; vendor preset: enabled) Active: active (waiting) since Mon 2020-05-04 20:04:36 UTC; 2 weeks 1 days ago Trigger: Thu 2020-05-21 05:22:32 UTC; 9h left Triggers: ● certbot.service
برای آزمایش فرایند تجدید ، می توانید با استفاده از certbot یک اجرای خشک انجام دهید:
sudo certbot renew --dry-run
اگر خطایی نمی بینید ، همه چی روال است. در صورت لزوم ، Certbot گواهی های شما را تمدید کرده و Nginx را بارگیری می کند تا تغییرات را انتخاب کند. اگر فرایند تمدید خودکار هر زمان از کار نافتد ، Letry Encrypt پیامی را به ایمیلی که مشخص کرده اید ارسال می کنیم و به شما هشدار می دهیم که گواهی شما به پایان رسیده است.
نتیجه
در این آموزش ، شما lets Encrypt client certbot را نصب کردید ، گواهی های SSL را برای دامنه خود بارگیری کردید ، Nginx را برای استفاده از این گواهینامه ها پیکربندی کرده و تجدید خودکار گواهی نامه را تنظیم کردید. اگر سؤال دیگری در مورد استفاده از Certbot دارید ، با پشتیبانان فاما سرور تماس بگیرید.
مقاله نحوه رمزگذاری Nginx در اوبونتو از وبلاگ فاما سرور.