
مدتی است که گوگل شرکت ها و وب سایت ها را مجبور به استفاده از گواهینامه های SSL کرده است. بیش از 46 میلیون وب سایت در سراسر جهان با این راه حل موافقت کرده اند تا رتبه خود را در صفحه نتایج گوگل از دست ندهند. این گواهی تراکنشها و اطلاعات حساس کاربر را ایمن نگه میدارد و به ایمنتر و قابل اعتمادتر کردن وب برای موتور جستجوی Google کمک میکند.
Let’s Encrypt یک مرجع جدید (CA) است که گواهی های رایگان TLS و SSL را صادر می کند که HTTPS رمزگذاری شده را در سرورهای وب فعال می کند. Let’s Encrypt با ارائه یک کلاینت نرم افزاری به نام Certbot، فرآیند صدور گواهینامه را چنان روان می کند که اکثر مراحل لازم به صورت خودکار انجام می شود. در حال حاضر، کل فرآیند دریافت و نصب گواهینامه های SSL بر روی وب سرورهای Apache و Nginx به طور کامل خودکار است. در این مقاله نحوه استفاده از کلاینت Certbot برای دریافت گواهی رایگان SSL و اتصال آن به Nginx در CentOS 7 و تمدید خودکار آن را به شما آموزش می دهیم. اگر می خواهید امنیت Nginx را با نصب SSL بر روی CentOS 7 افزایش دهید، این مقاله می تواند راهنمای خوبی برای شما باشد.
پیش نیازها
قبل از شروع گردش کار، به چند چیز نیاز داریم:
- یک سرور CentOS 7 با یک کاربر غیر ریشه که دارای امتیازات sudo است.
- برای دریافت گواهی SSL، باید مالک یا مدیریت دامنه ثبت شده باشید. اگر هنوز دامنه ای ثبت نکرده اید می توانید دامنه خود را با پسوند مورد نظر از پارس پک سفارش دهید.
- یک رکورد A در DNS دامنه شما را با آدرس IP عمومی سرور شما مرتبط می کند. چرا این لازم است؟ زیرا به این ترتیب Let’s Encrypt مالکیت دامنه ای را که گواهی برای آن صادر می شود تأیید می کند. به عنوان مثال، اگر می خواهید یک گواهی SSL برای دامنه example.com دریافت کنید، باید آن را برای فرآیند اعتبار سنجی به سرور خود متصل کنید. در راه اندازی ما از دو دامنه example.com و www.example.com استفاده می کنیم. بنابراین دو رکورد DNS مورد نیاز است.
هر زمان که تمام الزامات ذکر شده را فراهم کردید، ما اقدام به نصب نرم افزار مشتری Let’s Encrypt می کنیم.

مرحله 1: کلاینت Let’s Encrypt به نام Certbot را نصب کنید
برای استفاده از Let’s Encrypt برای دریافت گواهی SSL، اولین قدمی که باید بردارید این است که کلاینت نرم افزار Certbot را روی سرور خود نصب کنید. در حال حاضر بهترین راه برای نصب آن از طریق مخزن EPEL است.
با وارد کردن دستور زیر اجازه دسترسی به مخزن EPEL روی سرور را بدهید:
sudo yum install epel-release
هنگامی که مخزن EPEL فعال شد، می توانید بسته certbot-nginx را با استفاده از دستور زیر دریافت کنید:
sudo yum install certbot-nginx
مشتری Certbot اکنون نصب شده و آماده استفاده است.
مرحله 2: Nginx را پیکربندی کنید
اگر هنوز Nginx را نصب نکرده اید، با هم این کار را انجام می دهیم. از آنجایی که مخزن EPEL در مرحله قبل فعال است، می توانید Nginx را با دستور زیر نصب کنید:
sudo yum install nginx
سپس وب سرور Nginx را با استفاده از systemctl راه اندازی کنید:
sudo systemctl start nginx
Certbot می تواند به طور خودکار SSL را برای Nginx پیکربندی کند. اما ابتدا باید بلاک سرور خاص شما را در پیکربندی سرور پیدا کند. این کار با جستجوی نام سروری که دقیقاً با درخواست کننده گواهی دوم مطابقت دارد انجام می شود. اگر اخیراً Nginx را نصب کردهاید، میتوانید فایل پیکربندی پیشفرض Nginx را با استفاده از vi یا ویرایشگر متن دلخواه خود بهروزرسانی کنید:
sudo vi /etc/nginx/nginx.conf
خط نام سرور را پیدا کنید:
server_name _;
خط _ را با نام دامنه خود جایگزین کنید:
server_name example.com www.example.com;
فایل را ذخیره کرده و از ویرایشگر خارج شوید. اگر از vi استفاده می کنید، 😡 و سپس y را برای ذخیره و خروج فشار دهید. با دستور زیر باید درست یا نادرست بودن کدهای دستوری خود را برای پیکربندی وب سرور بررسی و تأیید کنید:
sudo nginx –t
اگر دستورات بدون خطا اجرا می شوند، Nginx را مجدداً راه اندازی کنید تا پیکربندی جدید بارگیری شود:
sudo systemctl reload nginx
Certbot اکنون می تواند بلوک سرور وب سایت شما را پیدا کرده و به روز کند.

در مورد نصب SSL روی CentOS 7 برای افزایش امنیت Nginx چطور؟
مرحله 3: فایروال را به روز کنید
اگر فایروال روی سرور را فعال کرده اید، مطمئن شوید که پورت های 80 و 433 برای ترافیک ورودی باز هستند. اگر سرور فایروال در حال اجرا ندارد، این مرحله را رد کنید.
اگر از فایروال استفاده می کنید، دستور زیر را برای باز کردن پورت ها وارد کنید:
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 هستیم.
مرحله 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
در این مرحله، گواهیهای TLS/SSL شما دانلود و نصب میشوند. اکنون وب سایت خود را با https:// باز کنید و نشانگر امنیتی مرورگر را مشاهده کنید. اگر تمام مراحل را به درستی انجام داده اید، نماد قفل سبز باید به این معنی باشد که وب سایت شما امن است.
مرحله 5: تمدید خودکار را تنظیم کنید
گواهینامه های Let’s Encrypt فقط 90 روز معتبر هستند. این دوره برای تشویق کاربران به خودکارسازی فرآیند تمدید گواهی در نظر گرفته شده است. شما باید یک فرمان منظم برای بررسی انقضای گواهینامه و تمدید خودکار تنظیم کنید. ما از cron، یک سرویس سیستم وظیفه دوره ای استاندارد، برای بررسی تمدید گواهینامه روزانه استفاده می کنیم. برای دستور cron باید فایلی به نام crontab را باز کرده و ویرایش کنید:
sudo crontab –e
ویرایشگر متن شما فایل crontab پیش فرض را باز می کند که در حال حاضر خالی است. خط زیر را در فایل وارد کنید و Save را فشار دهید و آن را ببندید:
. . . 15 3 * * * /usr/bin/certbot renew --quiet
بخش 15 3 * * * در این خط باعث می شود دستور هر روز در ساعت 15:3 اجرا شود. البته، شما می توانید هر ساعتی را انتخاب کنید.
دستور تمدید داده شده به certbot تمام گواهی های نصب شده بر روی سیستم را اسکن می کند و گواهی های با تاریخ انقضای کمتر از 30 روز را به روز می کند. –quiet همچنین به Certbot می گوید که هیچ اطلاعاتی را خروجی ندهد یا منتظر ورودی کاربر بماند.
حالا cron این دستور را هر روز اجرا می کند. زمانی که 30 روز یا کمتر تا تاریخ انقضای هر گواهی باقی بماند، آن گواهی تمدید و بارگیری مجدد می شود.


با نصب SSL در CentOS 7 امنیت Nginx را افزایش دهید!
نتیجه
در این آموزش سیستم عامل Cent، ما کلاینت Let’s Encrypt’s Certbot را نصب کردیم، گواهیهای SSL را برای دامنه دانلود کردیم، Nginx را برای استفاده از گواهیها پیکربندی کردیم و تمدید خودکار گواهی را تنظیم کردیم. اگر در حین انجام مراحل نصب SSL در CentOS 7 به سوال یا ابهامی برخوردید، آن را از طریق نظر با ما در میان بگذارید.
سوالات متداول
1. گواهی SSL چیست و چه کاربردی دارد؟
لایه سوکت ایمن (SSL) یک فناوری استاندارد برای اطمینان از امنیت اتصال به اینترنت و محافظت از تمام داده های حساس ارسال شده بین دو سیستم است. به این ترتیب گواهی SSL به مجرمان اجازه دسترسی به اطلاعات ارسال شده و تغییر آن را نمی دهد.
2. Let’s Encrypt یا free ssl چیست و چه کاربردی دارد؟
این مرجع جهانی گواهینامه SSL/TLS است که گواهینامه ها را برای سازمان ها و وب سایت ها به صورت رایگان صادر، تمدید و مدیریت می کند.
3. Nginx چیست؟
Nginx یک وب سرور است که می تواند به جای پروکسی معکوس، متعادل کننده بار، پروکسی ایمیل و کش HTTP استفاده شود. ایگور سیسویف، خالق این نرم افزار رایگان و متن باز، آن را در سال 2004 تحت مجوز 2 بند BSD منتشر کرد.
4. CentOS چیست؟
CentOS یک پروژه بازی متنی است که دو توزیع مختلف لینوکس به نامهای CentOS Stream و CentOS Linux منتشر کرده است. CentOS پلت فرم توسعه بالادستی برای انتشار تجاری آتی لینوکس Red Hat Enterprise است.
5. چگونه SSL را روی وب سرور Nginx نصب کنیم؟
- نصب نرم افزار مورد نیاز: سیستم عامل CentOS 7 و وب سرور Nginx
- یک کاربر غیر ریشه با امتیازات sudo ایجاد کنید
- نصب یک کلاینت ویژه برای Let’s Encrypt به نام Certbot
- راه اندازی Nginx و ارائه آن به Certbot
- فایروال را به روز کنید و پورت های مربوطه را باز کنید
- گواهی SSL را دریافت و وصل کنید
- تمدید خودکار گواهی را تنظیم کنید
6. آیا گواهینامه های Let’s Encrypt مورد اعتماد مرورگرها هستند؟
بله، Let’s Encrypt مورد اعتماد اکثر مرورگرها و سیستم عامل ها است.
7. آیا گواهینامه های Let’s Encrypt امن هستند؟
گواهینامه های Free Let’s Encrypt به همان اندازه ایمن هستند که گواهینامه های تجاری سایر مقامات صادر کننده SSL، همانطور که فناوری های امنیتی و رمزنگاری اجازه می دهند. سرعت انقضا و کوتاه بودن مدت گواهینامه های Let’s Encrypt در واقع یکی از ویژگی های آن است و ربطی به پولی بودن یا عدم پرداخت آن ندارد.
8. آیا امکان صدور چندین گواهی SSL برای چندین وب سایت در یک سرور وجود دارد؟
بله، Nginx هیچ محدودیتی در پشتیبانی و اتصال گواهیهای SSL مختلف ندارد. گواهینامه های رایگان نیز می تواند برای تعداد نامحدودی از وب سایت های مختلف صادر شود.
9. گواهینامه را با موفقیت تمدید کردم. اما اعتبارسنجی ناموفق بود، چگونه این امکان وجود دارد؟
هنگامی که تمام مراحل و چالش های دامنه را با موفقیت پشت سر گذاشتید، نتیجه اعتبارسنجی برای استفاده در آینده برای حساب شما ذخیره می شود. چک های ذخیره شده تا 30 روز ذخیره می شوند. اگر گواهی درخواستی شما دارای تمام اعتبار سنجی های ذخیره شده در حافظه پنهان باشد، اعتبارسنجی تا زمانی که منقضی نشده باشد انجام نمی شود.
منبع:
اقیانوس دیجیتال