آموزش ایمن کردن Nginx با استفاده از SSL در CentOS
یکی از راههای اعتباربخشی به وبسایتمان از نظر گوگل، داشتن گواهینامه SSL است. شرکتهایی هستند که گواهینامه SSL را به دو صورت رایگان و پولی عرضه میکنند که یکی از محبوبترین و معتبرترین آنها، یعنی “Let’s Encrypt” این سرویس را کاملا رایگان در اختیار صاحبین وبسایتها میگذارد تا میزان امنیت در سطح اینترنت افزایش یابد.
گواهینامه SSL گواهینامهای برای امنیت و اعتباربخشی به وبسایت ها است که توسط شرکت Let's Encrypt متعلق به گروه تحقیقاتی امنیت اینترنت (ISRG) به وبسایتها اختصاص داده میشود تا از اطلاعات رد و بدل شده بین کاربر و سرور محافظت شود. گوگل به وبسایتهایی که این گواهینامه را دارند، اعتبار و رتبه بالاتری نسبت به بقیه سایتها میدهد. این گواهینامه میتواند رایگان و پولی باشد که اخذ و تمدید گواهی شرکت Let's Encrypt رایگان بوده و مدت اعتبار آن 3 ماه است. از طریق کلاینت certbot با چند خط کد میتوانید این گواهی را بصورت اتوماتیک نصب و دریافت کنید.
البته این گواهینامه فقط به منظور اعتباربخشی نیست و با استقرار گواهی SSL بر روی سرور شما، اطلاعات رد و بدل شده بین کاربر و سرور برای دیگر افراد غیر قابل دسترسی خواهد بود.
در حال حاضر میتوان Let’s Encrypt را تقریبا بر روی تمامی وب سرویسها اعم از Apache, NGINX, NGINX Plus و OpenLiteSpeed نصب و از آن برای ایمن کردن Nginx استفاده کرد.
تمامی مرورگرهای محبوب و رسمی از قبیل Safari, Mozilla, Chrome از آن بعنوان شرکت ارائه دهنده گواهینامه SSL مورد اعتماد یاد کرده و آن را به رسمیت میشناسند.
Let’s Encrypt از طریق کلاینت certbot اقدام به انجام تمامی کارهای لازم برای دریافت گواهی SSL بصورت کاملا اتوماتیک میکند.
این امر یکی از جنبههای مثبت certbot است که کاربر را از کسب دانش برنامه نویسی بینیاز میکند. این گواهی به مدت 3 ماه اعتبار دارد و به شما آموزش خواهیم داد که چگونه بصورت دورهای و رایگان آن را تمدید کنید.
همان طور که در آموزشهای قبلی به موضوع ایمن کردن nginx در دبیان پرداختیم، در این مقاله نیز به بررسی نحوه ایمن کردن Nginx با استفاده از SSL در CentOS خواهیم پرداخت و با پیروی از این راهنمای آسان و خلاصه این گواهی را به سادگی میتوانید دریافت کنید.
مراحل ایمن کردن Nginx در CentOS از طریق SSL
تقریبا تمامی توضیحات کلی مورد نیاز در قسمت قبلی مقاله ذکر شد. با استفاده از دستورات زیر میتوانید نسبت به دریافت گواهی SSL وبسایت خود از شرکت Let’s Encrypt از طریق کلاینت certbot و اجرای دستور تمدید خودکار بصورت رایگان اقدام کنید.
1. پیش نیازهای امن کردن nginx با استفاده از certbot
تمامی پیش نیازها برای انجام کار به ۳ عامل محدود میشود:
- پکیج Extra Packages for Enterprise Linux یا همان (EPEL)
- یوزر root یا یوزری که امتیازات sudo دارد
- سرور مجازی لینوکس با توزیع CentOS
* جهت تهیه سرور مجازی لینوکس با امکانات لازم و امنیت بالا می توانید به آسام سرور اعتماد کنید.
مبنای ما در این آموزش، انجام تمامی دستورات از طریق کاربر root است. کارمان را با نصب پکیج EPEL از راه اجرای دستور زیر شروع می کنیم:
yum install epel-release
سپس با دستور زیر پکیجهای موجود در سیستم را آپدیت میکنیم تا یک پکیج لیست جدید را به package manager اضافه کنیم:
yum update
2. نصب و راه اندازی Nginx
برای نصب nginx از دستور زیر استفاده کنید و اگر قبلا آن را نصب کردهاید، مستقیما به گام سوم مراجعه کنید.
yum install nginx
service nginx start
3. نصب کلاینت certbot
با اجرای دستوری که در ادامه به آن اشاره شده میتوانیم certbot را نصب کنیم :
yum install certbot-nginx
با اجرای دستور بعدی یک گواهینامه SSL متعلق به Let’s Encrypt را با استفاده از پلاگین Nginx بر روی سرور نصب خواهیم کرد. با اجرای این دستور، Certbot بصورت اتوماتیک پیکربندی Nginx را با اضافه کردن خطوط مربوطه اصلاح میکند.
این خطوط حاوی مسیرهای گواهینامه و کلید عمومی (private key) تولید شده توسط خود Certbot هستند و این اصلاح قبل از reload یا بارگزاری مجدد Nginx انجام میشود. دستور ذکر شده به شرح زیر است:
certbot --nginx
سپس راهنمایی که Certbot نمایش میدهد را بخوانید، دستورالعمل را اجرا و ایمیل خود را وارد کنید و به همین سادگی گواهی SSL بر روی سرور شما نصب خواهد شد.
4. تمدید خودکار تجدید گواهی
همانطور که پیشتر اشاره شد، گواهی SSL کسب شده از جنب شرکت Let’s Encrypt فقط به مدت 90 روز اعتبار دارد. اما نگران نباشید. میتوانیم این گواهی را هروقت که خواستیم تمدید کنیم و خبر خوشتر این که تمدید آن نیز رایگان است.
با استفاده از یک کرون جاب (cronjob) میتوانیم پروسه تمدید را به حالت خودکار درآوریم تا کرون جاب بصورت دورهای، وضعیت گواهی و مدت زمان باقیمانده را چک و در صورت نیاز نسبت به تمدید آن اقدام کند.
با استفاده از دستور زیر در command line، فایل crontab را باز کنید:
crontab -e
با اجرای این دستور یک ویرایشگر متن، باز میشود که بایستی دستور زیر را در آن وارد کنید:
0 2 * * * /usr/bin/certbot renew --quiet
این دستور، باعث میشود تا دستور certbot هر روز راس ساعت 2 شب اجرا شود. میتوانید زمان آن را که بر پایه یک روز 24 ساعته است، به هر زمانی که دوست دارید ست کنید.
5 فیلد آن بصورت دو رقم در سمت چپ که نشانگر ساعتند، کارکتر دو نقطه ( : ) در وسط و دو رقم مربوط به دقیقه در سمت راست، است. مثلا ( 10:18 ) که ساعت 10 و 18 دقیقه صبح را نشان میدهد.
آپشن (quiet–) نیز به certbot دستور میدهد تا هیچ خروجی ای تولید نکند و به نوعی در سکوت این فرایند را هر روز انجام دهد. تغییرات را در ویرایشگر ذخیره (Save) کنید و از آن خارج شوید.
حالا شما گواهینامه SSL وبسایت خود را بصورت کاملا رایگان فعال کردهاید و به certbot دستور دادهاید تا هر روزه اعتبار آن را چک و در صورت نیاز تمدید کند.
همچنین جهت اطمینان و مشاهده اطلاعات گواهینامه SSL وبسایت خود، به وبسایتتان مراجعه کنید. نکته اول این که قبل از آدرس دامنه خود عبارت //:HTTPS و علامت قفل را خواهید دید.
برای دیدن اطلاعات بیشتر از گواهی وبسایت خود در محیط فایرفاکس روی علامت قفل، سپس عبارت ” Connection Secure ” و بعد ” More Information ” و نهایتا ” View Certificate ” کلیک کنید. در پنجره بازشده قادر به بررسی اطلاعات گواهی SSL سرور خود هستید.
5. اصلاح تنظیمات فایروال (اختیاری)
فایروال پیشفرض در firewalld ،CentOS نام دارد. میتوانید این فایروال را بطور کامل غیرفعال کنید تا مطمئن باشید که تمامی ارتباطات ورودی و خروجی سرور شما بلاک نخواهند شد. اما اگر مایل هستید تا از فایروال در سیستم خود استفاده کنید، لازم است firewalld را به طریقی اصلاح کنید تا به ارتباطات HTTPS اجازه دسترسی به سرورتان را بدهد.
دستور زیر به هر دو نوع ارتباط HTTPS و HTTP این اجازه را خواهد داد:
firewall-cmd --permanent --add-service=http --add-service=https
با دستور زیر فایروال را reload کنید تا تغییرات اعمال شوند:
firewall-cmd --reload
حالا فایروال شما فعال است و به هر دو نوع ارتباط HTTPS و HTTP اجازه دسترسی به سرور را میدهد. در اینجا لازم است به شما تبریک بگوییم که در عرض چند دقیقه توانستید با استفاده از SSL در Nginx ،CentOS را ایمن کنید.
سخن آخر
با خواندن این مقاله توانستید بصورت رایگان یک گواهینامه معتبر SSL برای وب سرور Nginx خود بر روی CentOS ایجاد کنید و حتی دستوری برای تمدید آن بنویسید که شما را از تمدید دستی گواهینامه بینیاز میکند.
بدون شک استفاده از گواهی SSL و نمایش علامت قفل در ابتدای آدرس دامنه، اعتماد مخاطبین و مشتریان را نسبت به فعالیت وبسایت شما جلب خواهد کرد.
در صورت وقوع هرگونه خطا و یا داشتن هر سوالی میتوانید در قسمت کامنتها و یا ارتباط مستقیم با تیم پشتیبانی موضوع را با ما مطرح کنید تا باهم آن را رفع کنیم.