ایمن سازی Nginx با Let’s Encrypt در CentOS چگونه است؟ Let’s Encrypt یک مرجع صدور گواهینامه (CA) جدید است که راهی برای دریافت و نصب گواهیهای رایگان TLS/SSL فراهم میکند و در نتیجه HTTPS رمزگذاری شده را در وب سرورها فعال میکند.
این فرآیند با ارائه یک کلاینت نرم افزاری، Certbot که تلاش میکند اکثر مراحل مورد نیاز را خودکار کند، فرآیند را ساده میکند. در حال حاضر، کل فرآیند دریافت و نصب گواهی نامه در هر دو وب سرور آپاچی و Nginx به صورت کامل خودکار است.
در این آموزش، نحوه استفاده از certbot Let’s Encrypt برای دریافت گواهی رایگان SSL و استفاده از آن با Nginx در CentOS را به شما نشان خواهیم داد. همچنان خواهید آموخت که چگونه به طور خودکار گواهی SSL خود را تمدید کنید.
پیش نیازهای ایمن سازی Nginx با Let’s Encrypt
قبل از دنبال کردن این آموزش، به چند مورد نیاز دارید:
- یک سرور ابری با سیستم عامل CentOS و یک کاربر non-root که دارای امتیازات sudo است.
- لازم است برای تهیه گواهی SSL، مالک دامنه ثبتشده باشید یا آن را مدیریت کنید.
- یک DNS رکورد که دامنه شما را به آدرس آی پی عمومی سرور شما متصل میکند. این موضوع به این دلیل است که Let’s Encrypt تایید میکند که شما مالک دامنه ای هستید که برای آن گواهی صادر میکند. به عنوان مثال، اگر میخواهید گواهی نامهای برای example.com دریافت کنید، آن دامنه باید به سرور مجازی شما متصل شود تا فرآیند اعتبارسنجی انجام شود. در تنظیمات ما از دو دامنه example.com و www.example.com استفاده خواهیم کردt پس دو رکورد DNS لازم است.
ابر آسیاتک با ارائه سرور ابری رایگان به مدت ۲۴ ساعت، این امکان را برای کاربران فراهم میآورد تا برای یادگیری بهتر بتوانند مطالب آموزشی را در سرور خود تست و پیادهسازی کنند.
نصب Let’s Encrypt Client به نام Certbot
اولین قدم برای استفاده از Let’s Encrypt دریافت گواهی SSL، نصب نرم افزار certbot روی سرور است. در حال حاضر، بهترین راه برای نصب آن از طریق مخزن EPEL است.
با اجرای دستور زیر، دسترسی به EPEL repository سرور خود را فعال کنید.
sudo yum install epel-release
پس از فعال شدن repository، میتوانید بسته certbot-nginx را با اجرای دستور زیر دریافت کنید.
sudo yum install certbot-nginx
حالا کلاینت Certbot نصب شده و آماده استفاده است.
نحوه نصب و راهاندازی Nginx
اگر هنوز Nginx را نصب نکردهاید، در ادامه مطلب ایمن سازی Nginx با Let’s Encrypt، با ما همراه باشید. EPEL repository باید از بخش قبلی فعال شده باشد، بنابراین میتوانید انجین اکس را با اجرای دستور زیر نصب کنید.
sudo yum install nginx
سپس، Nginx را با استفاده از systemctl راهاندازی کنید.
sudo systemctl start nginx
Certbot میتواند به طور خودکار SSL را برای Nginx پیکربندی کند، اما باید بتواند بلوک سرور صحیح را در پیکربندی شما پیدا کند.
این عمل با جستجوی Server-Name انجام میشود که با دامنهای که برای آن درخواست گواهی میکنید، مطابقت دارد.
اگر بهتازگی Nginx را نصب کردهاید، میتوانید فایل پیکربندی پیش فرض را با استفاده از vi یا ویرایشگر متن دلخواه خود به روز کنید.
sudo vi /etc/nginx/nginx.conf
خط server_name موجود را بیابید.
/etc/nginx/nginx.conf
server_name _;
خط _ را با نام دامنه خود جایگزین کنید.
/etc/nginx/nginx.conf
server_name example.com www.example.com;
در نهایت، فایل را ذخیره کنید و از ویرایشگر خارج شوید.
اگر از ویرایشگر vi استفاده میکنید، برای ذخیره و خروج، x: و سپس y را در صورت درخواست وارد کنید.
با اجرای دستور زیر، صحت اطلاعات کدهای دستوری خود را برای پیکربندی وبسرور بررسی و تأیید کنید.
sudo nginx -t
درصورتی که بدون خطا اجرا شد، Nginx را مجدداً تنظیم و راه اندازی کنید تا پیکربندی جدید بارگذاری شود.
sudo systemctl reload nginx
اکنون Certbot میتواند بلوک سرور صحیح را پیدا کرده و آن را بهروزرسانی کند.
بهروزرسانی فایروال
اگر فایروال سرور ابری را فعال کردهاید، از باز بودن پورتهای 80 و 443 برای ترافیک ورودی باز اطمینان حاصل کنید. در صورتی که فایروال روی سرور اجرا نمیشود، میتوانید از ادامه کار صرف نظر کنید.
اگر یک فایروال در حال اجرا دارید، دستور زیر را برای بازکردن پورتها اجرا کنید.
sudo firewall-cmd --add-service=http
sudo firewall-cmd --add-service=https
sudo firewall-cmd --runtime-to-permanent
اگر فایروال iptables در حال اجرا باشد، دستورهای لازم برای اجرا به شدت به مجموعه قوانین فعلی شما بستگی دارند. برای مجموعه قوانین اولیه، میتوانید دسترسی HTTP و HTTPS را با اجرای دستور زیر اضافه کنید.
sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT -p tcp -m tcp --dport 443 -j ACCEPT
ما اکنون آماده اجرای Certbot و دریافت گواهینامههای SSL هستیم.
اخذ گواهینامه
Certbot روشهای مختلفی را برای دریافت گواهینامه SSL از طریق پلاگینهای مختلف ارائه میدهد. افزونه Nginx مسئول پیکربندی Nginx و بارگذاری دوباره آن در مواقع لزوم است.
sudo certbot --nginx -d example.com -d www.example.com
دستور اجرا شده، certbot را با افزونه nginx– اجرا میکند و از -d برای مشخصکردن وبسایتهای ما بهمنظور دریافت گواهی معتبر استفاده میکند.
اگر اولین باری است که certbot را اجرا میکنید، از شما خواسته میشود یک آدرس ایمیل وارد کنید و با شرایط و قوانین استفاده از خدمات موافقت کنید.
پس از انجام این کار، certbot با سرور Let’s Encrypt ارتباط برقرار میکند، سپس یک چالش اجرا میکند تا تأیید کند که دامنهای را که برای آن درخواست گواهی دادهاید را کنترل میکنید.
درنهایت، certbot با یک پیام به شما اعلام میکند که این فرآیند موفقیت آمیز بوده و محل ذخیرهسازی گواهیهای شما را اطلاع میدهد.
Output
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/your_domain/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/your_domain/privkey.pem
Your certificate will expire on 2022-10-20. 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
گواهینامههای TLS/SSL شما دانلود و نصب و بارگذاری میشوند. اکنون وبسایت خود را با https:// باز کنید و به نشانگر امنیتی مرورگر خود توجه کنید. اگر همه مراحل را بهدرستی طی کرده باشید، علامت قفل سبزرنگ باید امنیت وبسایت شما را نشان دهد.
تنظیم تمدید خودکار
گواهینامههای Let’s Encrypt تنها به مدت 90 روز معتبر هستند. این مدتزمان برای تشویق کاربران به خودکارسازی فرآیند تمدید گواهی است. برای بررسی اعتبار گواهینامهها و تمدید خودکار آنها، باید دستور اجرایی منظمی را تنظیم کنید.
cron سرویس سیستمی استاندارد مخصوص کارهای دورهای است که برای بررسی روزانه تمدید گواهینامه استفاده میکنیم. بهمنظور دستوردادن به cron، باید فایلی به نام crontab را باز و ویرایش کنید.
sudo crontab –e
ویرایشگر متنی شما فایل پیشفرض crontab را باز میکند که در این مرحله یک فایل متنی خالی است. خط زیر را وارد فایل کنید و سپس آن را ذخیره کرده و ببندید.
crontab
. . .
15 3 * * * /usr/bin/certbot renew --quiet
بخش 15 3 * * * از این خط باعث اجرای دستور در ساعت ۱۵:۳ هرروز میشود؛ البته شما میتوانید هر ساعتی را انتخاب کنید.
دستور renew برای Certbot همه گواهیهای نصب شده در سیستم را بررسی میکند و هر گواهیهایی را که قرار است در کمتر از 30 روز منقضی شوند، بهروزرسانی میکند. quiet– به Certbot میگوید که هیچ اطلاعاتی را خروجی نگیرد یا منتظر ورودی کاربر نماند.
اکنون cron این دستور را روزانه اجرا خواهد کرد. همه گواهیهای نصبشده بهطور خودکار تمدید و بارگیری میشوند که 30 روز یا کمتر تا انقضای آنها باقی بماند.
جمع بندی
Nginx یکی از محبوبترین وب سرورها است که برای ارائه خدمات وب استفاده میشود. اما برای اطمینان از امنیت ارتباط بین کاربران و سرور، نیاز به استفاده از گواهینامههای SSL/TLS میباشد. در این مقاله، با استفاده از مراحلی که برای ایمنسازی Nginx با Let’s Encrypt در CentOS لازم است انجام دهید، آشنا شدیم. با پیشرفت امنیت و نگرانیهای مربوط به حریم خصوصی کاربران، ایمنسازی سرورها از اهمیت بسیار بالایی برخوردار است. استفاده از گواهینامههای SSL معتبر و رایگان از Let’s Encrypt، یک راه کار نسبتاً آسان و موثر برای ایجاد امنیت در سرور Nginx در CentOS است.
[yasr_overall_rating]