
مدتی است که گوگل شرکت ها و وب سایت ها را مجبور به استفاده از گواهینامه های SSL کرده است. بیش از 46 میلیون وب سایت در سراسر جهان با این تصمیم موافقت کرده اند تا رتبه خود را در صفحه نتایج گوگل از دست ندهند. این گواهی از تراکنشها و اطلاعات حساس کاربر محافظت میکند و به امنتر و قابل اعتمادتر کردن وب برای موتور جستجوی Google کمک میکند.
Let’s Encrypt یک مرجع جدید (CA) است که گواهی های رایگان TLS و SSL را صادر می کند که HTTPS رمزگذاری شده را در سرورهای وب فعال می کند. اجازه دهید گواهینامهها را رمزگذاری کنیم، فرآیند را آنقدر آسان میکند که یک کلاینت نرمافزاری به نام 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، مشتری Certbot را روی Let’s Encrypt نصب کردیم، گواهیهای 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 امن هستند؟
گواهینامههای Let’s Encrypt به همان اندازه ایمن هستند که گواهیهای تجاری سایر مراجع صادرکننده SSL تا آنجا که فناوریهای امنیتی و رمزنگاری اجازه میدهند. سرعت و مدت کوتاه گواهی Let’s Encrypt در واقع یکی از ویژگی های آن است و ربطی به پرداختی یا عدم پرداخت ندارد.
8. آیا امکان صدور چندین گواهی SSL برای چندین وب سایت در یک سرور وجود دارد؟
بله، Nginx هیچ محدودیتی در پشتیبانی و پیوند دادن گواهیهای SSL مختلف ندارد. گواهینامه های رایگان نیز می تواند برای تعداد نامحدودی از وب سایت های مختلف صادر شود.
9. گواهینامه را با موفقیت تمدید کردم. اما اعتبارسنجی ناموفق بود، چگونه ممکن است؟
هنگامی که تمام مراحل و چالش های دامنه را با موفقیت پشت سر گذاشتید، نتیجه تایید برای استفاده در آینده برای حساب شما ذخیره می شود. تأییدیه های ذخیره شده به مدت 30 روز ذخیره می شوند. اگر گواهیای که درخواست کردهاید همه تأییدیههای ذخیرهشده را داشته باشد، تا زمانی که تأیید به پایان برسد، تأیید انجام نمیشود.
منبع:
اقیانوس دیجیتال