منو سایت

  • خانه
  • وبلاگ
  • چگونه Nginx را با نصب SSL رایگان در CentOS 7 ایمن کنیم

چگونه Nginx را با نصب SSL رایگان در CentOS 7 ایمن کنیم

 تاریخ انتشار :
/
  وبلاگ
چگونه Nginx را با نصب SSL رایگان در CentOS 7 ایمن کنیم

مدتی است که گوگل شرکت ها و وب سایت ها را مجبور به استفاده از گواهینامه های 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 می کنیم.

خرید ssl

مرحله 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

سرویس رایگان SSL چه تفاوتی با سایر SSL ها دارد؟ در مقاله زیر بخوانید.

تفاوت بین SSL رایگان و تجاری

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 روی nginx

در مورد نصب 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 هستیم.

در مورد نصب گواهی SSL در کنترل پنل Direct Admin و تغییر مسیر HTTPS در مقاله زیر بخوانید.

نصب 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 را در nginx فعال کنید

با نصب SSL در CentOS 7 امنیت Nginx را افزایش دهید!

نتیجه

در این آموزش سیستم عامل Cent، ما کلاینت Let’s Encrypt’s Certbot را نصب کردیم، گواهی‌های SSL را برای دامنه دانلود کردیم، Nginx را برای استفاده از گواهی‌ها پیکربندی کردیم و تمدید خودکار گواهی را تنظیم کردیم. اگر در حین انجام مراحل نصب SSL در CentOS 7 به سوال یا ابهامی برخوردید، آن را از طریق نظر با ما در میان بگذارید.

دستورالعمل نصب SSL در کنترل پنل cPanel و تغییر مسیر از http به https را در مقاله زیر بخوانید.

نصب SSL در سی پنل

سوالات متداول

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 روز ذخیره می شوند. اگر گواهی درخواستی شما دارای تمام اعتبار سنجی های ذخیره شده در حافظه پنهان باشد، اعتبارسنجی تا زمانی که منقضی نشده باشد انجام نمی شود.

{ “@context”: “https://schema.org”، “@type”: “FAQPage”، “mainEntity”: [{
“@type”: “Question”,
“name”: “گواهینامه SSL چیست و چه کاربردی دارد؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “لایه سوکت‌های امن (SSL) فناوری استانداردی برای اطمینان از امنیت اتصال اینترنتی و محافظت از هرگونه داده حساس ارسال‌شده بین دو سیستم است. گواهی SSL با این کار از دستیابی مجرمان به اطلاعات منتقل‌شده و تغییر آن جلوگیری می‌کند.”
}
},{
“@type”: “Question”,
“name”: “Let’s Encrypt چیست و چه کاری انجام می‌دهد؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “این مجموعه مرجع جهانی صدور گواهینامه SSL/TLS است که به‌‌رایگان برای سازمان‌ها و وب‌سایت‌ها گواهینامه را صادر و تمدید و آن را مدیریت می‌کند.”
}
},{
“@type”: “Question”,
“name”: “Nginx چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “Nginx وب‌سروری است که می‌تواند به‌جای پروکسی معکوس، متعادل‌کننده بار، پروکسی ایمیل و کش HTTP نیز استفاده شود. Igor Sysoev، سازنده این نرم‌افزار رایگان و متن‌باز، آن را در سال ۲۰۰۴  تحت‌مجوز 2-clause BSD منتشر کرد.”
}
},{
“@type”: “Question”,
“name”: “CentOS چیست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “CentOS پروژه متن‌بازی است که دو توزیع مختلف از لینوکس به نام‌های CentOS Stream و CentOS Linux را عرضه کرده است. CentOS پلتفرم توسعه بالادستی برای انتشار محصول تجاری آینده Red Hat Enterprise Linux به‌حساب می‌آید.”
}
},{
“@type”: “Question”,
“name”: “مراحل نصب SSL روی وب‌سرور Nginx چگونه است؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “نصب نرم‌افزارهای موردنیاز: سیستم‌عامل CentOS 7 و وب‌سرور Nginx
ایجاد کاربر غیرروت با امتیازهای sudo
نصب کلاینت مخصوص Let’s Encrypt به نام Certbot
تنظیم Nginx و شناساندن آن به Certbot
به‌روزرسانی فایروال و بازکردن پورت‌های مرتبط
دریافت و اتصال گواهی SSL
تنظیم تمدید خودکار گواهی”
}
},{
“@type”: “Question”,
“name”: “آیا گواهی‌های Let’s Encrypt مورد‌اعتماد مرورگرهاست؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “بله، Let’s Encrypt در بیشتر مرورگرها و سیستم‌‌عامل‌ها مورداعتماد است.”
}
},{
“@type”: “Question”,
“name”: “آیا گواهی‌های Let’s Encrypt امن هستند؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “تا آن‌جا که پیشرفت‌های امنیت و فناوری‌های رمزنگاری اجازه دهد، گواهی‌های رایگان Let’s Encrypt به‌اندازه گواهی‌های تجاری دیگر مراجع صدور SSL امن هستند. سرعت انقضا و مدت‌زمان کوتاه گواهی‌های Let’s Encrypt در‌واقع یکی از ویژگی‌های آن است و به پولی یا غیرپولی‌ بودن ارتباط ندارد.”
}
},{
“@type”: “Question”,
“name”: “آیا می‌توان چندین گواهینامه SSL را برای چندین وب‌سایت در یک سرور صادر کرد؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “بله، Nginx هیچ‌گونه محدودیتی برای پشتیبانی و اتصال گواهینامه‌های مختلف SSL ندارد. گواهینامه‌های رایگان نیز می‌توانند به‌طور‌نامحدود برای وب‌سایت‌های مختلف صادر شوند.”
}
},{
“@type”: “Question”,
“name”: “من با موفقیت گواهینامه را تمدید کردم؛ اما اعتبارسنجی انجام نشد، چطور ممکن است؟”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “زمانی‌که تمام اقدامات و چالش‌های دومین را با موفقیت پشت‌سر گذاشتید، نتیجه اعتبارسنجی برای حساب شما ذخیره کش می‌شود تا در آینده نیز از آن استفاده کنید. اعتبارسنجی‌های کش‌شده تا ۳۰ روز ذخیره می‌شوند. اگر گواهی‌ای که برایش درخواست داده‌اید تمام اعتبارسنجی‌های کش‌شده را داشته باشد، تا زمانی که منقضی شود، اعتبارسنجی اتفاق نخواهد افتاد.”
}
}]
}

منبع:

اقیانوس دیجیتال

پست چگونه Nginx را با نصب رایگان SSL در CentOS 7 ایمن کنیم اولین بار در پارسپک پدیدار شد. به نظر می رسد.