نحوه ایمنسازی Nginx با نصب SSL رایگان در CentOS 7
در این مقاله میخوانید
گوگل مدتی است که شرکتها و وبسایتها را به استفاده از گواهینامه SSL مجبور کرده است. بیش از ۴۶میلیون وبسایت در سراسر دنیا برای اینکه رتبهشان در صفحه نتایج گوگل افت نکند، با این تصمیم موافقت کردهاند. این گواهی تراکنشها و اطلاعات حساس کاربر را ایمن نگه میدارد و به امنیت بیشتر فضای وب و اعتمادسازی بیشتر موتور جستوجوی گوگل کمک میکند.
Let’s Encrypt مرجع جدیدی (CA) برای صدور گواهینامههای رایگان TLS و SSL است که HTTPS رمزنگاریشده را روی سرورهای وب فعال میکند. Let’s Encrypt فرایند صدور گواهی را با فراهمکردن کلاینتی نرمافزاری به نام Certbot آنقدر هموار میکند که اغلب مراحل ضروری بهطورخودکار انجام میشود. درحالحاضر، تمام فرایند دریافت و نصب گواهینامههای SSL روی وبسرورهای Apache و Nginx کاملاً خودکار شده است. در این مطلب آموزش لینوکس، به شما آموزش خواهیم داد که چگونه از کلاینت Certbot برای دریافت گواهی SSL رایگان و اتصال آن به Nginx در CentOS 7 بهره ببرید و آن را بهطورخودکار تمدید کنید. اگر میخواهید امنیت Nginx را با نصب SSL روی CentOS 7 بالا ببرید، این مطلب میتواند راهنمای خوبی برایتان باشد.
خرید گواهینامه SSL از پارس پک
شما میتوانید از این مقاله برای مدیریت گواهی SSL خود استفاده کنید و اگر قصد خرید هر یک از انواع گواهیهای SSL پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
قبل از اینکه فرایند کار را آغاز کنیم، به چند چیز نیاز داریم:
- سرور CentOS 7 با کاربر غیرروت که امتیازهای sudo را داشته باشد.
- برای تهیه گواهی SSL، باید مالک دامنه ثبتشده باشید یا آن را مدیریت کنید. اگر هنوز دامنهای ثبت نکردهاید، میتوانید دامنهتان را با پسوند دلخواه از پارس پک سفارش دهید.
- رکورد A در DNS دامنه شما را به آدرس آیپی عمومی روی سرورتان متصل میکند. چرا به این کار نیاز است؛ چون Let’s Encrypt از این طریق مالکیت دامنهای را تأیید میکند که قرار است برایش گواهی صادر شود. برای مثال، اگر بخواهید گواهینامه SSL برای دامنه example.com بگیرید، باید آن را به سرورتان متصل کنید تا فرایند اعتبارسنجی انجام شود. در تنظیمات ما از دو دامنه example.com و www.example.com استفاده میکنیم؛ پس دو رکورد DNS لازم است.
خرید سرویس لینوکس با سیستم CentOS از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
هر زمان که تمام نیازمندیهای یادشده را فراهم کردید، بهسراغ نصب نرمافزار کلاینت مخصوص Let’s Encrypt میرویم.
نصب SSL رایگان روی CentOS و Nginx و رمزنگاری دادهها یک سرمایهگذاری بلندمدت برای افزایش امنیت و اعتماد کاربران است. ایمنسازی Nginx با نصب SSL رایگان در CentOS 7 باعث میشود مهاجمان سایبری در دسترسی به دادههای مهمتان ناکام بمانند.
قدم اول: نصبکردن کلاینت 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 نصب شده و آماده استفاده است.
قدم دوم: تنظیم Nginx
اگر هنوز Nginx را نصب نکردهاید، باهم انجامش میدهیم. ازآنجاکه مخزن EPEL در مرحله قبل فعال شده است، میتوانید Nginx را با دستور زیر نصب کنید:
sudo yum install nginx
سپس، با استفاده از systemctl وبسرور Nginx را راه بیندازید:
sudo systemctl start nginx
Certbot میتواند بهطورخودکار SSL را برای Nginx پیکربندی کند؛ اما اول باید بتواند بلوک سرور مخصوص شما را در پیکربندی سرور پیدا کند. این کار ازطریق جستوجوی نام سروری (Server-Name) انجام میشود که دقیقاً منطبق بر دومین درخواستکننده گواهینامه است. اگر بهتازگی Nginx را نصب کردهاید، با استفاده از vi یا ویرایشگر متنی دلخواه خود میتوانید فایل پیکربندی پیشفرض Nginx را بهروز کنید:
sudo vi /etc/nginx/nginx.conf
خط server-name را بیابید:
server_name _;
خط _ را با نام دامنه خود جایگزین کنید:
server_name example.com www.example.com;
فایل را ذخیره کنید و از ویرایشگر خارج شوید. اگر از vi استفاده میکنید، برای ذخیره و خروج ابتدا 😡 و سپس y را بزنید. با دستور زیر باید درست یا غلط بودن کدهای دستوری خود را برای پیکربندی وبسرور بررسی و تأیید کنید:
sudo nginx –t
اگر دستورها بدون خطا اجرا شد، Nginx را دوباره راهاندازی کنید تا پیکربندی جدید بارگذاری شود:
sudo systemctl reload nginx
Certbot حالا میتواند بلوک سرور وبسایت شما را پیدا و بهروزرسانی کند.
قدم سوم: بهروزرسانی فایروال
اگر فایروال سرور را فعال کردهاید، مطمئن شوید که پورتهای ۸۰ و ۴۳۳ برای ترافیک ورودی باز باشند. اگر فایروال روی سرور اجرا نمیشود، از این مرحله بگذرید.
اگر دیوار آتش Firewall را اجرا میکنید، دستور زیر را برای بازکردن پورتها بنویسید:
sudo firewall-cmd --add-service=http sudo firewall-cmd --add-service=https sudo firewall-cmd --runtime-to-permanent
اگر دیوار آتش Iptables را اجرا میکنید، دستورهای لازم به مجموعه قوانین (Rule Set) کنونی شما بستگی دارد. اگر به Rule Set دست نزدهاید، با دستور زیر میتوانید دسترسی 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 هستیم.
نصب گواهی SSL در کنترل پنل دایرکت ادمین و ری دایرکت HTTPS را در مقاله زیر بخوانید.
قدم چهارم: دریافت گواهینامه
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:// باز کنید و نشانگر امنیت مرورگر را زیرنظر بگیرید. اگر همه مراحل را بهدرستی طی کرده باشید، علامت قفل سبزرنگ باید امنیت وبسایت شما را نشان دهد.
قدم پنجم: تنظیم تمدید خودکار
گواهینامههای Let’s Encrypt تنها برای ۹۰ روز معتبرند. این مدتزمان برای تشویق کاربران به خودکارسازی فرایند تمدید گواهینامه است. برای بررسی انقضای گواهینامه و تمدید خودکار آن، باید دستور اجرایی منظمی را تنظیم کنید. ما از cron که سرویس سیستمی استاندارد مخصوص کارهای دورهای است، برای بررسی روزانه تمدید گواهینامه استفاده میکنیم. بهمنظور دستوردادن به cron، باید فایلی به نام crontab را باز و ویرایش کنید:
sudo crontab –e
ویرایشگر متنی شما فایل پیشفرض crontab را باز میکند که در این لحظه خالی است. خط زیر را وارد فایل کنید و ذخیره را بزنید و آن را ببندید:
. . . 15 3 * * * /usr/bin/certbot renew --quiet
بخش 15 3 * * * از این خط باعث اجرای دستور در ساعت ۱۵:۳ هرروز میشود؛ البته شما میتوانید هر ساعتی را انتخاب کنید.
دستور renew دادهشده به certbot، تمام گواهیهای نصبشده روی سیستم را بررسی و گواهینامههای دارای تاریخ انقضای کمتر از ۳۰ روز را بهروزرسانی میکند. –quiet نیز به Certbot میگوید از هیچ اطلاعاتی خروجی نگیرد یا منتظر ورودی کاربر نماند.
حالا cron این دستور را هرروز اجرا میکند. زمانیکه ۳۰ روز یا کمتر به تاریخ انقضای هریک از گواهینامهها مانده باشد، آن گواهی تمدید و دوباره بارگذاری میشود.
جمعبندی
در این مطلب از آموزش سنت او اس، کلاینت Certbot را روی Let’s Encrypt نصب، گواهینامههای SSL را برای دامنه دانلود، Nginx را برای استفاده از گواهینامهها پیکربندی و تمدید خودکار گواهینامهها را تنظیم کردیم. اگر هنگام انجام فرایند نصب SSL روی CentOS 7 با سؤال یا ابهامی مواجه شدید، ازطریق کامنت آن را با ما در میان بگذارید.
با نصب SSL رایگان روی وب سرور انجینایکس میتوانید از اطلاعات مبادلهشده بین کاربران و سرور محافظت کنید. دراینصورت افراد سودجو مانند مهاجمان سایبری نمیتوانند به اطلاعات شخصی و محرمانه کاربران دسترسی پیدا کنند و حتی درصورت دسترسی، بهدلیل رمزنگاری اطلاعات نمیتوانند محتویات اطلاعات را مشاهده کنند. ایمنسازی Nginx با نصب SSL رایگان در CentOS 7 به گواهی Let’s Encrypt، اتصال صحیح دامنه به سرور و نصب سیستمعامل سنتاواس روی سرور میزبان نیاز دارد.
آموزش نصب SSL در کنترل پنل سی پنل و ری دایرکت از http به https را در مقاله زیر بخوانید.
سؤالات متداول
۱. گواهینامه SSL چیست و چه کاربردی دارد؟
لایه سوکتهای امن (SSL) فناوری استانداردی برای اطمینان از امنیت اتصال اینترنتی و محافظت از هرگونه داده حساس ارسالشده بین دو سیستم است. گواهی SSL با این کار از دستیابی مجرمان به اطلاعات منتقلشده و تغییر آن جلوگیری میکند.
۲. Let’s Encrypt یا ssl رایگان چیست و چه کاری انجام میدهد؟
این مجموعه مرجع جهانی صدور گواهینامه SSL/TLS است که بهرایگان برای سازمانها و وبسایتها گواهینامه را صادر و تمدید و آن را مدیریت میکند.
۳. Nginx چیست؟
Nginx وبسروری است که میتواند بهجای پروکسی معکوس، متعادلکننده بار، پروکسی ایمیل و کش HTTP نیز استفاده شود. Igor Sysoev، سازنده این نرمافزار رایگان و متنباز، آن را در سال ۲۰۰۴ تحتمجوز 2-clause BSD منتشر کرد.
۴. CentOS چیست؟
CentOS پروژه متنبازی است که دو توزیع مختلف از لینوکس به نامهای CentOS Stream و CentOS Linux را عرضه کرده است. CentOS پلتفرم توسعه بالادستی برای انتشار محصول تجاری آینده Red Hat Enterprise Linux بهحساب میآید.
۵. مراحل نصب SSL روی وبسرور Nginx چگونه است؟
- نصب نرمافزارهای موردنیاز: سیستمعامل CentOS 7 و وبسرور Nginx
- ایجاد کاربر غیرروت با امتیازهای sudo
- نصب کلاینت مخصوص Let’s Encrypt به نام Certbot
- تنظیم Nginx و شناساندن آن به Certbot
- بهروزرسانی فایروال و بازکردن پورتهای مرتبط
- دریافت و اتصال گواهی SSL
- تنظیم تمدید خودکار گواهی
۶. آیا گواهیهای Let’s Encrypt مورداعتماد مرورگرهاست؟
بله، Let’s Encrypt در بیشتر مرورگرها و سیستمعاملها مورداعتماد است.
۷. آیا گواهیهای Let’s Encrypt امن هستند؟
تا آنجا که پیشرفتهای امنیت و فناوریهای رمزنگاری اجازه دهد، گواهیهای رایگان Let’s Encrypt بهاندازه گواهیهای تجاری دیگر مراجع صدور SSL امن هستند. سرعت انقضا و مدتزمان کوتاه گواهیهای Let’s Encrypt درواقع یکی از ویژگیهای آن است و به پولی یا غیرپولی بودن ارتباط ندارد.
۸. آیا میتوان چندین گواهینامه SSL را برای چندین وبسایت در یک سرور صادر کرد؟
بله، Nginx هیچگونه محدودیتی برای پشتیبانی و اتصال گواهینامههای مختلف SSL ندارد. گواهینامههای رایگان نیز میتوانند بهطورنامحدود برای وبسایتهای مختلف صادر شوند.
۹. من با موفقیت گواهینامه را تمدید کردم؛ اما اعتبارسنجی انجام نشد، چطور ممکن است؟
زمانیکه تمام اقدامات و چالشهای دومین را با موفقیت پشتسر گذاشتید، نتیجه اعتبارسنجی برای حساب شما ذخیره کش میشود تا در آینده نیز از آن استفاده کنید. اعتبارسنجیهای کششده تا ۳۰ روز ذخیره میشوند. اگر گواهیای که برایش درخواست دادهاید تمام اعتبارسنجیهای کششده را داشته باشد، تا زمانی که منقضی شود، اعتبارسنجی اتفاق نخواهد افتاد.