Let’s Encrypt يك مجوز صدور گواهينامه (CA) است كه روشي آسان براي به دست آوردن و نصب مجوزهاي رايگان TLS / SSL فراهم مي كند ، از اين طريق HTTPS رمزگذاري شده را روي سرورهاي وب فعال مي كند. در واقع با ارائه يك كلاينت نرم افزاري ، Certbot ، كه سعي در خودكارسازي اكثر مراحل لازم ميكند ، فرايند را ساده مي كند. در حال حاضر ، كل مراحل اخذ و نصب گواهينامه هم در Apache و هم در Nginx كاملا به صورت اتوماتيك انجام مي شود.
در اين آموزش از Certbot براي دريافت گواهينامه رايگان SSL براي Apache روي Debian 10 استفاده مي كنيد و گواهي خود را براي تمديد خودكار تنظيم مي كنيد.
در اين آموزش به جاي فايل پيكربندي پيش فرض از يك فايل ميزبان مجازي Apache جداگانه استفاده خواهد شد. توصيه مي كنيم براي هر دامنه فايل هاي جديد ميزبان مجازي Apache ايجاد كنيد زيرا اين امر به جلوگيري از اشتباهات رايج كمك مي كند و فايل هاي پيش فرض را به عنوان پيكربندي برگشت پذير حفظ مي كند.
پيش نيازها
براي دنبال كردن اين آموزش ، به موارد زير نياز داريد:
• يك سرور Debian 10 كه با دنبال كردن راهنماي ستاپ اوليه سرور براي Debian 10 تنظيم شده و شامل يك كاربر غير root با امتيازات sudo و فايروال باشد.
• نام دامنه كاملاً ثبت شده. در اين آموزش ، از your_domain به عنوان نمونه استفاده مي شود. مي توانيد نام دامنه را در Namecheap خريداري كنيد ، يكي از آنها را به صورت رايگان در Freenom دريافت كنيد ، يا از ثبت دامنه مورد نظر خود استفاده كنيد.
• هر دو فايل DNS زير كه براي سرور شما تنظيم شده اند. براي انجام اين كار ، مي توانيد دستورالعمل هاي اضافه كردن دامنه ها و سپس دستورالعمل هاي ايجاد ركوردهاي DNS را دنبال كنيد.
o يك ركورد A با your_domain كه به آدرس IP عمومي سرور شما اشاره كند.
o يك ركورد A با www.your_domain كه به آدرس IP عمومي سرور شما اشاره كند.
• Apache كه با دنبال كردن نحوه نصب Apache در Debian 10 نصب شده باشد. مطمئن شويد كه يك فايل ميزبان مجازي براي دامنه خود تنظيم كرده ايد. در اين آموزش از /etc/apache2/sites-available/your_domain.conf به عنوان نمونه استفاده مي شود.
مرحله 1 – نصب Certbot
اولين قدم براي استفاده از Let’s Encrypt جهت دريافت گواهينامه SSL ، نصب نرم افزار Certbot در سرور شماست.
در حال حاضر ، Certbot به طور پيش فرض از مخازن نرم افزار Debian در دسترس نيست. براي دانلود نرم افزار با استفاده از apt ، بايد مخازن backport را به فايل Source.list خود اضافه كنيد كه apt به دنبال منابع بسته ميباشد. backport ها بسته هايي از تست دبيان و توزيع هاي ناپايدار هستند كه دوباره كامپايل مي شوند بنابراين بدون كتابخانه هاي جديد در توزيع هاي دبيان پايدار اجرا مي شوند.
براي اضافه كردن مخزن backports ، فايل sources.list را در ديركتوري / etc / apt / خود باز كنيد (يا ايجاد كنيد):
$ sudo nano /etc/apt/sources.list

در انتهاي فايل خط زير را اضافه كنيد:
/etc/apt/sources.list.d/sources.list
. . .
deb http://mirrors.vpsgol.com/debian buster-backports main
deb-src http://mirrors.vpsgol.com/debian buster-backports main
deb http://ftp.debian.org/debian buster-backports main

شامل بسته هاي اصلي مي باشد كه سازگار با دستورالعمل هاي نرم افزار رايگان Debian (DFSG) و همچنين مولفه هاي non-free و contrib هستند كه خود يا مطابق DFSG نيستند و يا متعلقاتي در اين دسته دارند.
فايل را با فشار دادن CTRL + X ، Y ، سپس enter ، ذخيره كرده و ببنديد ، سپس ليست بسته هاي خود را به روز كنيد:
$ sudo apt update

سپس Certbot را با دستور زير نصب كنيد. توجه داشته باشيد كه گزينه -t به apt ميگويد كه با جستجوي مخزن backports كه اخيراً اضافه كرديد به دنبال بسته باشد:
$ sudo apt install python-certbot-apache -t buster-backports

Certbot اكنون آماده استفاده است اما براي اينكه SSL براي Apache پيكربندي شود ، بايد تأييد كنيم كه Apache به درستي پيكربندي شده است.
مرحله 2 – تنظيم گواهي SSL
Certbot بايد بتواند ميزبان مجازي صحيح را در پيكربندي Apache شما پيدا كند تا SSL را به صورت خودكار پيكربندي كند. به طور خاص ، اين كار را با جستجوي يك دستورالعمل ServerName انجام مي دهد كه با دامنه اي مطابق است كه ميخواهيد براي آن مجوز بگيريد.
اگر مرحله آموزش ميزبان مجازي را در آموزش نصب Apache دنبال كرديد ، بايد يك بلوك VirtualHost براي دامنه خود در /etc/apache2/sites-available/your_domain.conf با دستورالعمل ServerName كه قبلاً به طور مناسب تنظيم شده است، داشته باشيد.
براي بررسي ، فايل ميزبان مجازي را براي دامنه خود با استفاده از nano يا ويرايشگر متن مورد علاقه خود باز كنيد:
$ sudo nano /etc/apache2/sites-available/your_domain.conf

خط ServerName موجود را پيدا كنيد. بايد مانند اين به نظر برسد و نام دامنه شما به جاي your_domain قرار بگيرد:
/etc/apache2/sites-available/your_domain.conf

ServerName your_domain;

اگر قبلاً اين كار را انجام نداده ايد ، دستورالعمل ServerName را به روز كنيد تا به نام دامنه شما اشاره كنيد. سپس فايل را ذخيره كنيد ، از ويرايشگر خود خارج شويد و تركيب ويرايش هاي پيكربندي خود را تأييد كنيد:
$ sudo apache2ctl configtest

اگر خطايي در نحو وجود نداشته باشد ، آن را در خروجي خود مشاهده خواهيد كرد:
Output
Syntax OK

اگر خطايي رخ داد ، فايل ميزبان مجازي را مجدداً باز كنيد و هرگونه اشتباه تايپي يا كاراكتر جا افتاده را بررسي كنيد. پس از اينكه تركيب فايل پيكربندي شما صحيح شد ، Apache را مجدد لود كنيد تا پيكربندي جديد بارگيري شود:
sudo systemctl reload apache2

Certbot اكنون مي تواند بلوك صحيح VirtualHost را پيدا كرده و آن را به روز كند.
در مرحله بعد ، بياييد فايروال را به روز كنيم تا امكان ترافيك HTTPS را بدهيم.
مرحله 3 – اجازه دادن به HTTPS از طريق فايروال
اگر فايروال ufw را فعال كرده باشيد ، همانطور كه توسط راهنماهاي پيش نياز توصيه شده است ، براي تنظيم ترافيك HTTPS ، بايد تنظيماتي را انجام دهيد. خوشبختانه ، وقتي روي Debian نصب شده باشد ، ufw با چند پروفايل بسته بندي مي شود كه به ساده كردن روند تغيير قوانين فايروال براي ترافيك HTTP و HTTPS كمك مي كند.
با تايپ دستور زير مي توانيد تنظيم فعلي را مشاهده كنيد:
$ sudo ufw status

اگر از مرحله 2 راهنماي ما در مورد چگونگي نصب Apache در Debian 10 استفاده كرده باشيد، خروجي دستور اينگونه خواهد بود ، نشان مي دهد كه فقط ترافيك HTTP به سرور وب مجاز است:
Output
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’

وضعيت شما اكنون بايد به اين شكل باشد:
$ 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 را اجرا كنيم و گواهينامه هايمان را دريافت كنيم.
مرحله 4 – اخذ گواهينامه SSL
Certbot روشهاي مختلفي براي گرفتن گواهينامه هاي SSL از طريق افزونه ها ارائه مي دهد. افزونه Apache از تنظيم مجدد Apache و بارگيري مجدد تنظيمات در صورت لزوم مراقبت خواهد كرد. براي استفاده از اين افزونه ، دستور زير را تايپ كنيد:
$ sudo certbot –apache -d your_domain -d www.your_domain

اين كار Certbot را با افزونه –apache با استفاده از -d براي مشخص كردن نام هايي كه معتبر آن هستند اجرا ميكند.
اگر اين اولين بار است كه Certbot را اجرا ميكنيد ، از شما خواسته مي شود كه آدرس ايميل را وارد كنيد و با شرايط سرويس ها موافقت كنيد. علاوه بر اين ، از شما سؤال خواهد كرد كه آيا مي خواهيد آدرس ايميل خود را با بنياد الكترونيكي Frontier ، يك سازمان غيرانتفاعي كه از حقوق ديجيتال دفاع مي كند و همچنين سازنده Certbot است به اشتراك بگذاريد يا خير. براي اشتراك آدرس ايميل Y و براي رد اين اعلان N را وارد كنيد.
بعد از انجام اين كار ، certbot با سرور Let’S Encrypt ارتباط برقرار مي كند ، سپس براي تأييد اينكه دامنه مورد نظر خود را كنترل مي كنيد ، يك چالش اجرا كنيد.
اگر موفقيت آميز باشد ، certbot از شما مي پرسد كه چگونه مي خواهيد تنظيمات HTTPS خود را پيكربندي كنيد:
Output
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
——————————————————————————-
1: No redirect – Make no further changes to the webserver configuration.
2: Redirect – Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you’re confident your site works on HTTPS. You can undo this
change by editing your web server’s configuration.
——————————————————————————-
Select the appropriate number [1-2] then [enter] (press ‘c’ to cancel):

گزينه خود را انتخاب كنيد و سپس ENTER بزنيد. پيكربندي به طور خودكار به روز مي شود ، و Apache براي انتخاب تنظيمات جديد مجدد لود مي شود. 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 cert will expire on 2019-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”
– 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: // مجدد لود كنيد و به نشانگر امنيتي مرورگر خود توجه كنيد. بايد نشان دهد كه سايت به طور صحيح ايمن است ، معمولاً با نماد قفل سبز انجام ميشود. اگر سرور خود را با استفاده از SSL Labs Server Test آزمايش كنيد ، درجه A دريافت مي كند.
بياييد با آزمايش روند تجديد كار را به پايان برسانيم.
مرحله 5 – تأييد تمديد خودكار Certbot
گواهي هاي Let’s Encrypt فقط براي نود روز اعتبار دارند. اين امر براي ترغيب كاربران به اتوماسيون كردن فرايند تجديد گواهينامه ميباشد. بسته certbot كه نصب كرديم با اضافه كردن يك اسكريپت تجديد به /etc/cron.d از اين امر مراقبت مي كند. اين اسكريپت روزانه دو بار اجرا مي شود و به طور خودكار هر مدركي را كه كمتر از سي روز از انقضاي آن مانده ، تمديد مي كند.
براي آزمايش فرايند تجديد ، مي توانيد با استفاده از certbot اين دستور را اجرا كنيد:
$ sudo certbot renew –dry-run

اگر خطايي نمي بينيد ، همه تنظيمات انجام شده است. در صورت لزوم ، Certbot گواهي هاي شما را تمديد كرده و Apache را مجدد لود مي كند تا تغييرات را اعمال كند. اگر فرايند تمديد خودكار زماني از كار نافتد ، Let’s Encrypt پيامي را به ايميلي كه مشخص كرده ايد ، ارسال مي كند و به شما هشدار مي دهيد كه گواهي شما رو به پايان است.
نتيجه
در اين آموزش ، كلاينت lets Encrypt certbot را نصب كرديد ، گواهينامه هاي SSL را براي دامنه خود دانلود كرديد ، Apache را براي استفاده از اين گواهينامه ها پيكربندي كرده و تمديد خودكار گواهي نامه را فعال نموديد. اگر سؤال ديگري در مورد استفاده از Certbot داريد ، مراجعه به مطالب مربوطه آنها توصيه ميشود.