چگونه Apache را با نصب SSL رایگان در Debian 10 ایمن کنیم؟
در این مقاله میخوانید
Let’s Encrypt مرجع صدور گواهی یا CA است که با استفاده از Certbot به شما کمک میکند تا گواهی SSL را روی وب سرور خود نصب و با فعالسازی پروتکل HTTPS، وبسایتتان را ایمن کنید. کاری که Certbot انجام میدهد، خودکارسازی تمام عملیات موردنیاز برای این فرایند است. درحالحاضر، تمامی مراحل انجام این کار برای ایمنسازی وب سرورهای Apache و Nginx بهطور کاملاً خودکار انجام میشود. در این مقاله از آموزش لینوکس بلاگ پارس پک، قصد داریم تا نحوه نصب گواهی SSL رایگان روی وب سرور Apache در توزیع Debian 10 را به شما آموزش دهیم؛ پس تا پایان با ما همراه باشید.
خرید SSL برای نصب در دبیان از پارس پک
شما میتوانید از این مقاله برای مدیریت سرویس گواهینامه SSL خود استفاده کنید و یا اگر قصد خرید انواع گواهیهای SSL پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، برای اطلاع از هزینهها و تعرفهها میتوانید به لینک زیر مراجعه کنید.
پیشنیازها
برای اینکه بتوانید از این آموزش حداکثر استفاده را ببرید، باید پیشنیازهایی داشته باشید. گفتنی است در این آموزش، بهجای تنظیمات پیشفرض از فایل میزبان آپاچی استفاده میکنیم. توصیه ما به شما این است که فایلهای میزبان Apache جدید را برای آن دسته از دامنههای خود ایجاد کنید که قصد دارید با استفاده از گواهی SSL آنها را ایمن کنید. این موضوع به کمترشدن اشتباههای رایج کمک میکند.
۱. اولین چیزی که برای استفاده از این مقاله آموزشی نیاز دارید، سروری با توزیع Debian 10 است. همچنین، روی این سیستمعامل باید کاربر غیر Root با دسترسی Sudo و فایروال فعال شده باشد.
۲. دامنهای که مدیریت آن را دراختیار داشته باشید. در این آموزش، هرگاه عبارت your_domain را مشاهده کردید، منظور همان آدرس دامین شماست.
با نصب گواهی SSL رایگان در Debian 10، میتوانید ارتباط بین وب سرور آپاچی و کاربران خود را ایمن کرده و امنیت وبسایت خود را افزایش دهید. ایمنسازی Apache با نصب گواهی SSL در Debian 10 در چند گام ساده انجام میشود و پس از انجام این کار فقط امنیت است و بس!
خرید سرویس لینوکسی با توزیع دبیان از پارس پک
شما میتوانید از این مقاله برای مدیریت سرورهای لینوکس خود استفاده کنید و اگر قصد خرید هر یک از سرویسهای لینوکسی پارس پک را دارید، میتوانید با کارشناسان فروش ما در ارتباط باشید. همچنین، شما میتوانید برای اطلاع از تعرفهها و هزینهها به لینکهای زیر مراجعه کنید.
۳. رکوردهای ثبتشده DNS برای سرور بهصورت زیر:
- یک رکورد your_domain که به آدرس IP عمومی سرور شما اشاره میکند.
- یک رکورد www.your_domain که به آدرس IP عمومی سرورتان اشاره میکند.
۴. وب سرور Apache نصبشده روی سرور. همچنین، مطمئن شوید که فایل VirtualHost را برای دامنه خود تنظیم کردهاید. در این مقاله، برای مثال ما از /etc/apache2/sites-available/your_domain.conf استفاده خواهیم کرد.
آموزش ایمن سازی Apache با نصب گواهی SSL در Debian 10
بعد از اینکه مقدمات کار را آماده کردیم، باید بهسراغ نحوه ایمنسازی وب سرور Apache برویم. درادامه، نحوه انجام این کار را گامبهگام توضیح دادهایم:
گام اول: نصب Certbot
اولین قدم بهمنظور استفاده از Let’s Encrypt برای دریافت گواهی SSL رایگان، نصب نرمافزار Certbot است.
توجه: درحالحاضر، Certbot بهطورپیشفرض در ریپوزیتوری توزیع Debian وجود ندارد؛ اما میتوان مخزن buster-backports را در فایل /etc/apt/sources.list پیکربندی کرد. این روش به شما امکان خواهد داد تا یک Backport از نرمافزار Certbot را با APT نصب کنید. بااینحال، باید در نظر بگیرید که بکپورتها بستههای ریکامپایلشدهای از ریپوزیتوری آزمایشی و ناپایدار Debian هستند که برای اجرا در توزیع پایدار Debian، مجدداً کامپایل شدهاند. این پکیجها بهصورت منظم بررسی نمیشوند و شاید همیشه بهروز نباشند. بر همین اساس، بکپورت Certbot نسخه ۰.۳۱ را نصب میکند و این در حالی است که نسخه فعلی تا این لحظه، ۱.۰۹ است.
یکی از تفاوتهای مهم بین این نسخههای Certbot آن است که تنظیمات پیشفرض نسخه ۰.۳۱، دو پروتکل TLS v1.0.0.31 و TLS v1.1 را فعال میکند که هر دو در اکثر مرورگرهای وب منسوخ شدهاند. بنابراین، فعالکردن این پروتکلها میتواند باعث بروز آسیب امنیتی شود. همچنین، اگرچه امکان تغییر این تنظیمات پیشفرض وجود دارد، انجام این کار میتواند سبب غیرفعالشدن بهروزرسانیهای خودکار Certbot شود که البته از قابلیتهای بسیار مهم و مفید آن است.
بنابراین، تا قبل از اینکه نسخه جدیدتر Certbot در ریپوزیتوری APT دبیان قرار بگیرد، بهتر است از نصب نسخه ۱.۰۹ با استفاده از Snappy استفاده کنید. Snappy پکیجمنیجر توسعهیافتهای برای سیستمهای لینوکس است که پکیجها را در قالبی با عنوان Snaps نصب میکند. این روش در داکیومنت Certbot نیز توصیه شده است؛ بههمیندلیل، ما هم در این آموزش از همین روش استفاده خواهیم کرد.
برای نصب Certbot در Debian بهصورت Snap، ابتدا باید snapd را روی سرور خود نصب کرده باشید. snapd دیمونی (Daemon) است که در نصب و استفاده و مدیریت Snapها کاربرد دارد. با نصب snapd، امکان استفاده از دستور snap نیز روی سرور شما فعال خواهد شد.
برای این کار، ابتدا باید Local Packageهای خود را آپدیت کنید. درصورتیکه قبلاً این کار را انجام ندادهاید، از دستور زیر استفاده کنید:
sudo apt update
سپس با استفاده از دستور زیر، پکیج snapd را روی سرور نصب کنید:
sudo apt install snapd
بعد از اینکه این فرمان را اجرا کردید، از شما درخواست میشود که نصب snapd و وابستگیهای مربوط به آن را تأیید کنید. برای این منظور، حرف Y را تایپ کنید و سپس کلید Enter را فشار دهید.
بعدازآن، از دستور snap برای نصب snap core استفاده کنید. با انجام این کار، وابستگیهای موردنیاز مانند certbot snap روی سرور نصب خواهد شد:
sudo snap install core
سپس، Core Snap را Refresh کنید. بدینترتیب، مطمئن خواهید شد که جدیدترین نسخه snapd و وابستگیهای مربوط به آن روی سرور نصب شده است:
sudo snap refresh core
حالا میتوانید Certbot را با استفاده از دستورهایی نصب کنید که درادامه به آنها اشاره خواهیم کرد. توجه کنید که snapها را میتوان در سه سطح مختلف نصب کرد که هریک سطوح مختلفی از ایزولهشدن سرور درمقابل دسترسی آنها را تعیین خواهد کرد. بهعنوان مثال، اکثر snapها در سطح –strict نصب میشوند و این یعنی از دسترسی این برنامهها به فایلها و شبکه سیستم شما جلوگیری خواهد شد.
ازآنجاکه Certbot باید مجوز ویرایش برخی از فایلهای پیکربندی خاص را برای تنظیم صحیح گواهیهای SSL داشته باشد، دستوری که برای نصب آن استفاده میکنید، باید شامل گزینه –classic باشد. این قسمت به snap نصبشده امکان میدهد تا مانند پکیجهای سنتی، مجوز دسترسی به منابع سیستم را داشته باشد:
sudo snap install --classic certbot
با اِعمال این دستور، Certbot در دایرکتوری /snap/bin نصب خواهد شد. حالا لینکی نمادین به این فایل در پوشه /usr/bin/ ایجاد کنید تا مطمئن شوید که میتوانید دستور Certbot را در هر نقطه از سیستم خود اجرا کنید:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
حالا از Certbot میتوان استفاده کرد؛ اما برای اینکه Certbot بتواند گواهی SSL را بهدرستی برای Apache پیکربندی کند، باید ببینیم که آیا Apache بهدرستی پیکربندی شده است یا خیر.
گام دوم: تنظیم گواهی SSL
Certbot برای اینکه بتواند گواهی SSL را بهطورخودکار پیکربندی کند، باید بتواند VirtualHost صحیح را در پیکربندی Apache پیدا کند. انجام این کار بهصورت خاص با استفاده از جستوجوی دایرکتیو Servername انجام خواهد شد که با دامنهای مطابقت دارد که برای آن درخواست صدور گواهی SSL دادهاید.
درصورتیکه مراحل راهاندازی VirtualHost را بهدرستی انجام داده باشید، باید بلوک VirtualHost را برای دامنه خود در مسیر /etc/apache2/sites-available/your_domain.conf داشته باشید که دایرکتیو ServerName در آن از قبل و بهصورت مناسب تنظیم شده است.
برای بررسی این موضوع، با استفاده از دستور زیر فایل VirtualHost خود را با ویرایشگری مانند nano باز کنید:
sudo nano /etc/apache2/sites-available/your_domain.conf
در این فایل، باید بهدنبال خطی باشید که به ServerName اشاره میکند. این خط باید چیزی شبیه به این باشد:
... ServerName your_domain; ...
درصورتیکه چنین خطی را در فایل مدنظر پیدا نکردید، باید دایرکتیو ServerName خود را بهروز کنید تا به نام دامنه شما اشاره کند. سپس، باید فایل را ذخیره کنید و از ویرایشگر خود خارج شوید. انجام این کار ممکن است در ویرایشگرهای مختلف متفاوت باشد. بهعنوان مثال، در ویرایشگر nano که این مقاله آموزشی از بلاگ پارس پک براساس آن تهیه شده است، این کار با استفاده از کلیدهای ترکیبی Ctrl+X، Y و سپس فشردن کلید Enter انجام خواهد شد.
بعد از انجام این کار، سینتکس ویرایشهای انجامشده را با استفاده از دستور زیر تأیید کنید:
sudo apache2ctl configtest
درصورتیکه خطای سینتکسی در فایل شما موجود نباشد، این پیغام برایتان بهنمایش درخواهد آمد:
Output . . . Syntax OK
درصورتیکه با خطای Syntax مواجه شدید، باردیگر فایل پیکربندی را باز و دستورهای اضافهشده در مرحله آخر به این فایل را بررسی کنید و مشکلات املایی یا احتمالاً کاراکترهای جاانداختهشده را اصلاح کنید. بعد از اصلاح فایل، آپاچی را با استفاده از دستور زیر مجدداً Load کنید تا پیکربندی جدید اِعمال شود:
sudo systemctl reload apache2
حالا Certbot میتواند بلوک VirtualHost صحیح را پیدا و آن را آپدیت کند. در گام بعدی، باید فایروال را برای ارائه مجوز به ترافیک HTTPS آپدیت کنید.
گام سوم: اجازه دادن به ترافیک HTTPS ازطریق فایروال
درصورتیکه فایروال ufw را فعال کردهاید، در این مرحله باید تنظیمات آن را بهگونهای تغییر دهید که مجوز ترافیک HTTPS را صادر کند. خوشبختانه وقتی ufw روی توزیع Debian نصب میشود، چندین پروفایل دارد که با استفاده از آنها میتوان بهسادگی قوانین مربوط به ترافیک HTTP و HTTPS را تغییر داد.
برای مشاهده تغییرات فعلی، از دستور زیر استفاده کنید:
sudo ufw status
خروجی این دستور احتمالاً چیزی شبیه به متن زیر خواهد بود:
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW (v6) ALLOW Anywhere (v6)
همانطورکه مشاهده میکنید، تنظیمات فعلی فایروال بهگونهای است که صرفاً مجوز استفاده از ترافیک HTTP را میدهد. برای اینکه به ترافیک HTTPS نیز مجوز داده شود، باید به پروفایل WWW Full مجوز بدهید و مجوز پروفایل WWW را نیز صلب کنید:
sudo ufw allow 'WWW Full' sudo ufw delete allow 'WWW'
سپس، مجدداً وضعیت را بررسی کنید:
sudo ufw status
در این صورت، خروجی دستور مانند نمونه زیر خواهد بود:
Output Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere WWW Full ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) WWW Full (v6) ALLOW Anywhere (v6)
در گام بعدی، باید Certbot را اجرا و گواهیهای موردنیاز را واکشی کنید.
گام چهارم: دریافت گواهی SSL
Certbot با استفاده پلاگینها به شما کمک میکند تا از راههای متفاوت بتوانید گواهی SSL موردنیاز خود را دریافت کنید. ازجمله این پلاگینها میتوان به Apache اشاره کرد که با استفاده از آن، میتوانید پیکربندی مجدد آپاچی و درصورت لزوم، لود مجدد آن را انجام دهید. برای استفاده از این پلاگین، دستور زیر را بهکار بگیرید:
sudo certbot --apache -d your_domain -d www.your_domain
این دستور باعث میشود تا Certbot با استفاده از پلاگین آپاچی اجرا شود. همچنین، بعد از -d باید دامینهایی را وارد کنید که میخواهید گواهی SSL برای آنها ایجاد شود. باید توجه کنید اگر اولینباری است که Certbot را اجرا میکنید، باید آدرس ایمیلی برای ارسال پیغامهای سیستمی ضروری معرفی و با قوانین و مقررات نیز موافقت کنید.
علاوهبراین، از شما پرسیده میشود که آیا مایلاید تا آدرس ایمیل خود را با Electronic Frontier Foundation، سازمان غیرانتفاعی مدافع حقوق دیجیتال و سازنده Certbot، بهاشتراک بگذارید یا خیر. درصورتیکه به انجام این کار تمایل دارید، حرف Y و درغیراینصورت حرف N را تایپ کنید و سپس کلید Enter را برای تأیید فشار دهید.
بعد از انجام این کار، Certbot با سرور Let’s Encrypt ارتباط برقرار میکند. همچنین، راستیآزماییای انجام میشود تا اطمینان حاصل شود که شما مالک اصلی دامنه هستید و به آن دسترسی مدیریتی کامل دارید.
درصورتیکه فرایند عنوانشده با موفقیت بهپایان برسد، فایل پیکربندی بهطورخودکار بهروز و Apache برای استفاده از تنظیمات جدید، مجدداً راهاندازی خواهد شد. درنهایت، Certbot با پیغامی که حاکی از موفقیتآمیزبودن مراحل است، نتیجه را به شما اعلام خواهد کرد. در این صورت، محل ذخیره گواهیهای SSL درخواستی به شما اعلام خواهد شد:
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 cert will expire on 2021-01-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" - Your account credentials have been saved in your Certbot configuration directory at /etc/letsencrypt. You should make a secure backup of this folder now. This configuration directory will also contain certificates and private keys obtained by Certbot so making regular backups of this folder is ideal. - 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
حالا وبسایت خود را با درج https در ابتدای دامین باز کنید. در این صورت، آیکون قفلی که معمولاً به رنگ سبز است، در ابتدای URL وبسایت خود خواهید دید. این یعنی وبسایت شما ایمن است. همچنین، اگر سرور خود را با استفاده از SSL Labs بررسی کنید، قاعدتاً باید نماد A را دریافت کنید.
گام پنجم: تمدید خودکار گواهی SSL با Certbot
توجه کنید که گواهیهای SSL رایگان صادرشده Let’s Encrypt فقط ۹۰ روز اعتبار دارند و این یعنی بعد از انقضای این مدت، باید آن را تمدید کنید تا وبسایتتان همچنان ایمن باقی بماند. پکیج Certbot که در این مقاله نحوه نصب آن را فراگرفتید، با استفاده از اسکریپت /etc/cron.d. میتواند بهطورخودکار گواهی SSL صادرشده را تمدید کند. شیوه کار نیز بدینترتیب است که این اسکریپت دو بار در طول روز اجرا میشود و تمامی گواهیهای SSL صادرشده را ازنظر تاریخ انقضا پایش میکند. درصورتیکه کمتر از ۳۰ روز به انقضای گواهی زمان باقی باشد، گواهی بهصورت خودکار تمدید خواهد شد.
برای اینکه صحت عملکرد این موضوع را بررسی کنید، از دستور زیر میتوانید استفاده کنید:
sudo certbot renew --dry-run
اگر مشکلی برای انجام این کار وجود نداشته باشد، پس از صادرکردن این دستور پیغام خطایی دریافت نخواهید کرد. همچنین درصورتیکه عملیات تمدید خودکار گواهی SSL بهدرستی انجام نشود، این موضوع ازطریق ایمیل به اطلاع شما خواهد رسید.
مرور مفصلی بر وبسرور آپاچی و مقایسه آن با دیگر وبسرورها را در مقاله زیر بخوانید.
جمعبندی
ایمنبودن وبسایت یکی از موضوعات مهمی است که تمامی کاربران و موتورهای جستوجو و مرورگرها به آن حساساند. برای ایمنسازی وبسایتها، باید گواهی SSL معتبری روی وبسایت خود نصب کنید. بدینترتیب، تمامی اطلاعات بین کلاینت و سرور بهصورت امن و رمزگذاریشده و ازطریق پروتکل HTTPS منتقل خواهد شد. در این مقاله آموزشی از آموزش دبیان بلاگ پارس پک، نحوه استفاده از Certbot برای دریافت گواهی SSL رایگان از Let’s Encrypt و ایمنسازی وب سرور Apache را توضیح دادهایم. فراموش نکنید که این مقاله براساس سیستمعامل لینوکس با توزیع Debian 10 نگارش شده است.
ایمنسازی Apache با نصب گواهی SSL یکی از موارد مهمی است که باید به آن توجه کنید. با نصب گواهی SSL رایگان روی وب سرور آپاچی در دبیان ۱۰ میتوانید ارتباط رمزنگاریشدهای بین مرورگر و سرور برقرار کنید. نصب گواهینامه اساسال رایگان روی آپاچی در چند گام ساده انجام میشود و کافیست مراحل انجام آن را بهدرستی و گامبهگام انجام دهید.
سؤالات متداول
۱. Let’s Encrypt چیست؟
Let’s Encrypt یکی از مراجع صدور گواهینامه SSL است که با استفاده از آن میتوانید گواهی SSL را بهرایگان روی سرور وبسایت خود نصب کنید.
۲. Certbot چیست؟
Certbot نرمافزاری است که با استفاده از آن میتوانید گواهی SSL رایگان موردنیاز خود را از مرجع صدور Let’s Encrypt دریافت و روی سرور وبسایت خود نصب کنید.
۳. برای تمدید گواهی SSL نصب شده روی سرور چه باید کرد؟
درصورتیکه از Certbot برای نصب گواهی ازطریق Let’s Encrypt استفاده کرده باشید، این کار ازطریق اسکریپتی که دو بار در طول روز اجرا میشود، بهطورخودکار انجام خواهد شد. همچنین، شما میتوانید تمام این مراحل را بهصورت دستی انجام دهید.