Let’s Encrypt یک مرجع گواهی است که راهی برای دریافت و نصب رایگان گواهیهای TLS/SSL ارائه میدهد، که به این ترتیب امکان HTTPS رمزگذاری شده را روی وب سرور ها فراهم میکند. این فرآیند را با ارائه یک نرمافزار کلاینت، Certbot، که تلاش میکند اکثر مراحل لازم را به صورت خودکار انجام دهد، عملی میسازد. در حال حاضر، کل فرآیند دریافت و نصب یک گواهی بر روی هر دو سرور آپاچی و انجینایکس به صورت کامل خودکار است.
در این آموزش، شما از Certbot برای دریافت یک گواهی SSL رایگان برای آپاچی در دبیان 11 استفاده خواهید کرد و گواهی خود را برای تمدید خودکار تنظیم خواهید کرد.
نکته: Certbot یک نرمافزار کلاینت متنباز است که توسط Let’s Encrypt توسعه داده شده و برای دریافت و نصب گواهیهای TLS/SSL رایگان استفاده میشود.
این آموزش از یک فایل هاست مجازی (VirtualHost) مجزا به جای فایل تنظیمات پیشفرض Apache برای راهاندازی وبسایت استفاده میکند که توسط Let’s Encrypt ایمن میشود. توصیه میکنیم فایلهای هاست مجازی آپاچی جدید برای هر دامنه میزبانی شده در سرور ایجاد کنید، زیرا به جلوگیری از اشتباهات کمک میکند.
پیشنیازها
برای دنبال کردن این آموزش، به موارد زیر نیاز دارید:
- یک سرور دبیان 11 که با دنبال کردن آموزش تنظیمات اولیه سرور برای دبیان 11 میتوانید راه اندازی نمایید، و شامل یک کاربر غیر روت با دسترسیهای sudo و یک فایروال باشد.
- یک نام دامنه ثبت شده و قابل استفاده. این آموزش از test-domain به عنوان مثال در طول آموزش استفاده خواهد کرد.
- هر دو رکورد DNS زیر برای سرور شما تنظیم شده باشد.
- یک A رکورد با test-domain که به آدرس IP عمومی سرور شما اشاره میکند.
- یک A رکورد با test-domain که به آدرس IP عمومی سرور شما اشاره میکند.
- آپاچی را با دنبال کردن آموزش نحوه نصب Apache در اوبونتو 22.04 نصب کنید. مطمئن شوید که یک فایل میزبان مجازی برای دامنه خود دارید. این آموزش از /etc/apache2/sites-available/test-domain.conf به عنوان مثال استفاده می کند.
مرحله 1: نصب Certbot
اولین قدم برای استفاده از Let’s Encrypt برای دریافت گواهی SSL، نصب نرمافزار Certbot روی سرور شما است.
توجه: این آموزش از مستندات Certbot برای نصب نرمافزار روی دبیان با استفاده ازsnappy، پیروی میکند. شما میتوانید Certbot را از مخازن پیشفرض دبیان با استفاده از apt نصب کنید، اما این نسخه قدیمیتری (نسخه 1.12.0) را نسبت به نسخه snap (نسخه 1.29.0، آخرین نسخه در زمان نگارش این متن) نصب میکند.
نکته: مدیر بسته Snappy (که معمولاً به عنوان snapd یا Snap نیز شناخته میشود) یک سیستم مدیریت بسته برای توزیع و نصب نرمافزار بر روی سیستمعاملهای لینوکسی است. این سیستم توسط شرکت Canonical، توسعهدهنده اوبونتو، ایجاد شده است.
برای نصب Certbot با snap در دبیان، ابتدا باید snapd را روی سرور خود نصب کنید. snapd یک دیمون لازم برای نصب، استفاده و مدیریت snaps است.
مفهوم دیمون :(Daemon) دیمون در سیستمعاملهای یونیکس و لینوکس، یک فرآیند پسزمینه است که بهطور مداوم اجرا میشود و خدمات خاصی را به سیستم یا سایر برنامهها ارائه میدهد. دیمونها معمولاً در زمان بوت سیستم شروع به کار میکنند و تا زمانی که سیستم خاموش یا ریاستارت نشود، اجرا میمانند.
برای نصب snapd، ابتدا بسته محلی خود را بهروزرسانی کنید:
sudo apt update
سپس بسته snapd را نصب کنید:
sudo apt install snapd
پس از اجرای این دستور، یک درخواست برای تأیید نصب snapd و وابستگیهای آن نمایش داده خواهد شد. میتوانید با فشار دادن Y و سپس ENTER موافقت کنید.
بعد، از دستور snap برای نصب core snap استفاده کنید. این کار برخی از وابستگیها را روی سرور شما نصب میکند که برای هر snap دیگری که نصب میکنید، از جمله Certbot snap، لازم است:
sudo snap install core
سپس core snap را بهروزرسانی کنید. با این کار میتوانید از نصب شدن آخرین نسخه snapd و وابستگیهای آن اطمینان حاصل کنید:
sudo snap refresh core
Certbot snap را با فرمان زیر نصب کنید:
sudo snap install --classic certbot
این فرآیند نصب، فایل اجرایی certbot را در دایرکتوری /snap/bin/ نصب میکند. یک پیوند نمادین به این فایل در دایرکتوری /usr/bin/ ایجاد کنید تا مطمئن شوید که میتوانید فرمان certbot را در هر جای سیستم خود اجرا کنید:
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Certbot اکنون آماده استفاده است، اما برای اینکه بتواند SSL را برای آپاچی پیکربندی کند، باید اطمینان حاصل کنید که آپاچی به درستی پیکربندی شده است.
مرحله 2: تنظیم گواهی SSL
Certbot باید بتواند میزبان مجازی صحیح را در پیکربندی آپاچی شما پیدا کند تا بتواند SSL را به صورت خودکار کانفیگ نماید. به طور خاص، این کار را با جستجوی یک دستورالعمل ServerName انجام میدهد که با دامنهای که برای آن درخواست گواهی میخواهید مطابقت دارد.
اگر مرحله تنظیم میزبان مجازی در آموزش نصب آپاچی را دنبال کردهاید، باید یک بلاک VirtualHost برای دامنه خود در مسیر /etc/apache2/sites-available/ test-domain.conf با دستور ServerName داشته باشید.
برای بررسی، فایل میزبان مجازی دامنه خود را با استفاده از nano یا ویرایشگر متن مورد علاقه خود باز کنید:
sudo nano /etc/apache2/sites-available/test-domain.conf
خط موجود ServerName را پیدا کنید. باید مانند زیر باشد اما بجای test-domain دامنه خودتان باشد:
ServerName test-domain
اگر چنین نیست، دستور ServerName را به گونهای بهروزرسانی کنید که به نام دامنه شما اشاره کند. سپس فایل را ذخیره کرده و از ویرایشگر خارج شوید. اگر از nano استفاده کردید، این کار را با فشار دادن CTRL + X، Y، سپس ENTER انجام دهید.
سپس، سینتکس ویرایشهای پیکربندی خود را بررسی کنید:
sudo apache2ctl configtest
اگر هیچ خطای نگارشی وجود نداشته باشد، خروجی شما به صورت زیر خواهد بود:
Syntax OK
اگر خطایی دریافت کردید، فایل میزبان مجازی را مجدداً باز کرده، و هرگونه اشتباه تایپی را بررسی کنید. پس از اینکه سینتکس فایل پیکربندی شما صحیح بود، آپاچی را مجدداً بارگذاری کنید تا پیکربندی جدید بارگذاری شود:
sudo systemctl reload apache2
اکنون Certbot میتواند بلاک VirtualHost صحیح را پیدا کرده و آن را بهروزرسانی کند. سپس، فایروال را بهروزرسانی کنیم تا اجازه ترافیک HTTPS را بدهد.
مرحله 3: دسترسی ترافیک HTTPS از طریق فایروال
اگر فایروال ufw را فعال کردهاید، همانطور که در راهنمای پیشنیاز توصیه شده است، باید تنظیمات را بهروزرسانی کنید تا ترافیک HTTPS را مجاز کنید. خوشبختانه، وقتی روی دبیان نصب میشود، ufw با چند پروفایل ارائه میشود که به فرآیند تغییر قوانین فایروال برای ترافیک HTTP و HTTPS کمک میکنند.
میتوانید تنظیمات فعلی را با اجرای دستور زیر بررسی کنید:
sudo ufw status
اگر مرحله 2 از راهنمای ما در مورد نحوه نصب آپاچی روی دبیان 11 را دنبال کردهاید، خروجی این دستور به صورت زیر خواهد بود که نشان میدهد فقط ترافیک HTTP به سرور وب مجاز است:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
WWW ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
WWW (v6) ALLOW Anywhere (v6)
برای اجازه ترافیک HTTPS، پروفایل “WWW Full” را مجاز کرده و پروفایل “WWW” غیرضروری را حذف کنید:
'sudo ufw allow 'WWW Full
'sudo ufw delete allow 'WWW
وضعیت شما اکنون باید به صورت زیر باشد:
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 را اجرا کرده و گواهیهای خود را دریافت کنیم.
مرحله 4: دریافت گواهی SSL
Certbot روشهای مختلفی برای دریافت گواهیهای SSL از طریق افزونهها ارائه میدهد. افزونه Apache وظیفه پیکربندی مجدد آپاچی و بارگذاری مجدد پیکربندی را هر زمان که لازم باشد بر عهده دارد. برای استفاده از این افزونه، دستور زیر را اجرا کنید:
sudo certbot --apache -d test-domain -d www. test-domain
این دستور Certbot را با پلاگین --apache اجرا میکند و از -d برای مشخص کردن نامهایی که میخواهید گواهی برای آنها معتبر باشد استفاده میکند.
اگر این اولین باری است که Certbot را اجرا میکنید، از شما خواسته میشود یک آدرس ایمیل وارد کرده و با شرایط آن موافقت کنید. علاوه بر این، از شما خواسته خواهد شد که آیا مایل به اشتراکگذاری آدرس ایمیل خود با بنیاد (Electronic Frontier Foundation) هستید، یک سازمان دولتی که از حقوق دیجیتال حمایت میکند و سازنده Certbot نیز میباشد. میتوانید Y را وارد کنید تا آدرس ایمیل خود را به اشتراک بگذارید یا N را برای رد کردن وارد کنید.
پس از انجام این کار، Certbot با سرور Let’s Encrypt ارتباط برقرار کرده و سپس یک اعتبار سنجی ای را برای تأیید مالکیت دامنهای که برای آن گواهی درخواست کردهاید، اجرا میکند.
اگر این موفقیتآمیز باشد، پیکربندی بهطور خودکار بهروزرسانی شده و آپاچی برای تنظیمات جدید مجدداً بارگذاری میشود. Certbot با یک پیام مبنی بر موفقیتآمیز بودن فرآیند و محل ذخیره گواهیهای شما به پایان میرسد.
اکنون گواهیهای شما دانلود، نصب و بارگذاری شدهاند. سعی کنید وبسایت خود را با استفاده از https:// بارگذاری کنید و به شاخص امنیت مرورگر خود توجه کنید. باید نشان دهد که سایت به درستی امن شده است، معمولاً با یک آیکون قفل سبز نمایش داده میشود.
حال نوبت فرآیند تمدید خودکار است.
مرحله 5: تأیید تمدید خودکار Certbot
گواهیهای Let’s Encrypt تنها برای نود روز معتبر هستند. این کار برای تشویق کاربران به خودکارسازی فرآیند تمدید گواهی انجام میشود. بسته Certbot که نصب کردهاید، با اضافه کردن یک اسکریپت تمدید به /etc/cron.d این کار را برای شما انجام میدهد. این اسکریپت دو بار در روز اجرا شده و بهطور خودکار هر گواهیای که تا سی روز دیگر منقضی میشود را تمدید میکند.
برای آزمایش فرآیند تمدید، میتوانید --dry-run با Certbot انجام دهید:
sudo certbot renew --dry-run
نکته: گزینه --dry-run در ابزارهای مختلف (مانند certbot) به معنای اجرای یک شبیهسازی از عملیات واقعی بدون اعمال تغییرات است. این گزینه به کاربران اجازه میدهد تا عملکرد و تأثیر دستورات را بدون انجام واقعی آنها بررسی کنند.
اگر هیچ خطایی دریافت نکردید، همه چیز آماده است. در صورت لزوم، Certbot گواهیهای شما را تمدید کرده و آپاچی را برای اعمال تغییرات مجدداً بارگذاری میکند. اگر فرآیند تمدید خودکار موفق نباشد، Let’s Encrypt پیامی به ایمیل شما که مشخص کردهاید ارسال خواهد کرد و شما را از نزدیک بودن انقضای گواهی آگاه خواهد کرد.
در این آموزش، شما certbot کلاینت Let’s Encrypt را نصب کردید، گواهینامه های SSL را برای دامنه خود دانلود کردید، آپاچی را برای استفاده از این گواهی ها پیکربندی کردید و تمدید خودکار گواهی را تنظیم کردید. اگر سوالات بیشتری در مورد استفاده از Certbot دارید، مستندات آنها جای خوبی برا مطالعه است.
امیدواریم که این آموزش به شما کمک کرده باشد. برای دیدن باقی آموزش ها میتوانید وارد منوی پشتیبانی بخش آموزش ها شوید، در صورتی که درباره این آموزش به مشکل یا سوالی برخورد کردید، میتوانید آن را در بخش دیدگاه بیان کنید.