آموزش ها-هاست نگار

چگونه Nginx را با Let's Encrypt در CentOS 7 ایمن کنیم

 

Let’s Encrypt یک مرجع صدور گواهینامه (CA) جدید است که راهی برای دریافت و نصب گواهینامه‌های رایگان TLS/SSL ارائه می‌کند و در نتیجه HTTPS رمزگذاری شده را در سرورهای وب فعال می‌کند. این فرآیند را Certbot با ارائه یک سرویس گیرنده نرم افزاری، ساده می کند که سعی می کند اکثر (اگر نه همه) مراحل مورد نیاز را خودکار کند. در حال حاضر، کل فرآیند دریافت و نصب گواهی بر روی هر دو وب سرور Apache و Nginx به طور کامل خودکار است.
 
در این آموزش، نحوه استفاده از certbot Let’s Encrypt برای دریافت گواهی رایگان SSL و استفاده از آن با Nginx در CentOS 7 را به شما نشان خواهیم داد. همچنین به شما نشان خواهیم داد که چگونه به طور خودکار گواهی SSL خود را تمدید کنید.
 
پیش نیازها
یک سرور CentOS 7 با یک کاربر غیر روت که دارای امتیازات sudo است.
شما باید مالک یا کنترل نام دامنه ثبت شده ای باشید که می خواهید از گواهی استفاده کنید. اگر قبلاً یک نام دامنه ثبت‌شده ندارید، می‌توانید یک دامنه در یکی از بسیاری ثبت‌کنندگان نام دامنه، ثبت کنید.
یک DNS که دامنه شما را به آدرس IP عمومی سرور شما نشان می دهد. این مورد به دلیل اینکه Let’s Encrypt چگونه تأیید می کند که شما مالک دامنه ای هستید که برای آن گواهی صادر می کند، لازم است. به عنوان مثال، اگر می خواهید یک گواهی برای example.com دریافت کنید، آن دامنه باید به سرور شما متصل شود تا فرآیند اعتبار سنجی کار کند. راه اندازی ما از example.com و www.example.com به عنوان نام دامنه استفاده می کند، بنابراین هر دو رکورد DNS مورد نیاز است.
هنگامی که تمام پیش نیازها را تهیه کردید، بیایید به نصب نرم افزار Let’s Encrypt برویم.
 
مرحله 1 - نصب Certbot Let’s Encrypt Client
اولین قدم برای استفاده از Let’s Encrypt برای دریافت گواهی SSL این است که نرم افزار certbot را روی سرور خود نصب کنید. در حال حاضر، بهترین راه برای نصب این، از طریق مخزن EPEL است.
با تایپ کردن کد زیر، دسترسی به مخزن EPEL سرور خود را فعال کنید:
sudo yum install epel-release
پس از فعال شدن مخزن، می توانید بسته certbot-nginx را با تایپ کردن زیر دریافت کنید:
sudo yum install certbot-nginx
سرویس گیرنده certbot Let’s Encrypt اکنون نصب شده و آماده استفاده است.
 
مرحله 2 - راه اندازی Nginx
اگر هنوز Nginx را نصب نکرده اید، می توانید همین الان این کار را انجام دهید. مخزن EPEL باید قبلاً از قسمت قبلی فعال باشد، بنابراین می توانید Nginx را با تایپ کردن:
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 موجود را پیدا کنید:
;_server_name
خط تیره _ را با نام دامنه خود جایگزین کنید:
;server_name example.com www.example.com
فایل را ذخیره کنید و از ویرایشگر خود خارج شوید. اگر از vi استفاده می کنید، برای ذخیره و خروج، :x و سپس y را در صورت درخواست وارد کنید. نحو ویرایش های پیکربندی خود را با استفاده از:
sudo nginx -t
اگر بدون خطا اجرا شد، Nginx را مجدداً بارگیری کنید تا پیکربندی جدید بارگیری شود:
sudo systemctl reload nginx
Certbot اکنون می تواند بلوک سرور صحیح را پیدا کرده و آن را به روز کند. اکنون فایروال خود را برای اجازه ترافیک HTTPS به روز می کنیم.
 
مرحله 3 - به روز رسانی فایروال
اگر فایروال را فعال کرده اید، مطمئن شوید که پورت 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 و دریافت گواهینامه های خود هستیم.
 
مرحله 4 - دریافت گواهینامه
Certbot راه های مختلفی را برای دریافت گواهینامه SSL از طریق پلاگین های مختلف ارائه می دهد. افزونه Nginx کانفیگ مجدد Nginx و بارگیری مجدد پیکربندی را در صورت لزوم انجام می دهد:
sudo certbot --nginx -d example.com -d www.example.com
این ربات certbot را با افزونه --nginx اجرا می کند و از -d برای تعیین نام هایی استفاده می کند که می خواهیم گواهینامه برای آنها معتبر باشد.
اگر اولین باری است که certbot را اجرا می کنید، از شما خواسته می شود یک آدرس ایمیل وارد کنید و با شرایط خدمات موافقت کنید. پس از انجام این کار، certbot با سرور Let’s Encrypt ارتباط برقرار می کند، سپس چالشی را اجرا می کند تا تأیید کند که دامنه ای را که برای آن درخواست گواهی دارید کنترل می کنید. پیکربندی به‌روزرسانی می‌شود و Nginx برای برداشتن تنظیمات جدید دوباره بارگیری می‌شود. 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
 
گواهی‌های شما دانلود، نصب و بارگیری می‌شوند. سعی کنید وب سایت خود را با استفاده از https:// بارگیری مجدد کنید و به نشانگر امنیتی مرورگر خود توجه کنید. این باید نشان دهد که سایت به درستی ایمن شده است، معمولاً با نماد قفل سبز رنگ.
 
مرحله 5 - تنظیم تمدید خودکار
گواهینامه های Let’s Encrypt فقط برای نود روز معتبر هستند. این برای تشویق کاربران به خودکارسازی فرآیند تمدید گواهی است. برای بررسی اعتبار گواهینامه ها و تمدید خودکار آنها، باید یک فرمان به طور منظم اجرا کنیم.
برای اجرای روزانه بررسی تمدید، از cron، یک سرویس استاندارد سیستمی برای اجرای کارهای دوره ای استفاده می کنیم. با باز کردن و ویرایش فایلی به نام crontab به cron می گوییم که چه کاری انجام دهد.
sudo crontab -e
ویرایشگر متن شما crontab پیش فرض را باز می کند که در این مرحله یک فایل متنی خالی است. در خط زیر قرار دهید، سپس آن را ذخیره کرده و ببندید:
. . .
15 3 * * * /usr/bin/certbot renew --quiet
قسمت 15 3 * * * این خط به معنای "دستور زیر را در ساعت 3:15 صبح، هر روز اجرا کنید". شما می توانید هر زمانی را انتخاب کنید.
دستور تمدید برای Certbot همه گواهی‌های نصب شده روی سیستم را بررسی می‌کند و هر گواهی‌هایی را که قرار است در کمتر از سی روز منقضی شوند، به‌روزرسانی می‌کند. --quiet به Certbot می گوید که اطلاعات را خروجی ندهد یا منتظر ورودی کاربر نماند.
cron اکنون این دستور را روزانه اجرا خواهد کرد. همه گواهی‌های نصب‌شده به‌طور خودکار تمدید و بارگیری می‌شوند که سی روز یا کمتر تا انقضای آنها باقی بماند.
 
در این آموزش ما Let’s Encrypt را نصب کرده ایم، گواهینامه های SSL را برای دامنه خود دانلود کرده ایم، Nginx را برای استفاده از این گواهی ها پیکربندی کرده ایم و تمدید خودکار گواهی را تنظیم کرده ایم. امیدواریم این مقاله آموزشی برای شما مفید بوده باشد، برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.
 
 
 
 
 

نوشتن دیدگاه


تصویر امنیتی
تصویر امنیتی جدید

آموزش های مرتبط