Let’s Encrypt یک مجوز گواهی نامه است که توسط گروه تحقیقاتی امنیت اینترنت (ISRG) ایجاد شده است. این گواهینامه های SSL رایگان را از طریق یک فرآیند کاملاً خودکار طراحی شده برای از بین بردن گواهی دستی ، اعتبار سنجی ، نصب و تمدید مجوز ارائه می دهد. گواهینامه های صادر شده توسط Let’s Encrypt به مدت ۹۰ روز از تاریخ انتشار معتبر هستند و مورد اعتماد همه مرورگرهای اصلی امروزي هستند.
در این مقاله نحوه نصب مجوز Let’s Encrypt SSL رایگان در اوبونتو ۲۰٫۰۴ ، با اجرای Apache به عنوان سرور وب توضیح داده شده است. ما همچنین نشان خواهیم داد که چگونه پیکربندی Apache را برای استفاده از گواهی SSL و فعال کردن HTTP / 2 تنظیم کنید. با ما در شتابان هاست همراه باشيد
قبل از ادامه دادن از پیش نیازهای زیر اطمینان حاصل کنید:
برای به دست آوردن گواهینامه از Certbot استفاده خواهیم کرد. این یک ابزار خط فرمان است که وظایف مربوط به اخذ و تمدید گواهی نامه های Let’s Encrypt SSL رابه عهده دارد. بسته certbot در مخازن پیش فرض اوبونتو گنجانده شده است. لیست بسته ها را به روز کنید و با استفاده از دستورات زیر ، certbot را نصب کنید:
sudo apt update
sudo apt install certbot
تبادل کلید (Diffie-Hellman (DH روشی برای تبادل ایمن کلیدهای رمزنگاری بر روی کانال ارتباطی ناامن است. برای تقویت امنیت مجموعه جدیدی از پارامترهای DH 2048 bit را ایجاد کنید:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
می توانید اندازه را تا ۴۰۹۶ bit تغییر دهید اما بسته به آنتروپی سیستم ممکن است تولید بیش از ۳۰ دقیقه طول بکشد.
برای به دست آوردن گواهینامه SSL برای دامنه ، ما می خواهیم از افزونه Webroot استفاده کنیم که با ایجاد یک پرونده موقت برای تأیید دامنه درخواست شده در دايركتور است. ${webroot-path}/.well-known/acme-challenge
سرور Let’s Encrypt تا درخواست HTTP را به پرونده موقت تأیید کند تا اعتبار دامنه درخواست شده را به سرور محل اجرای Certbot تأیید کند.
دستورالعمل های زیر را برای ایجاد دایرکتوری و نوشتن آن برای سرور آپاچی اجرا کنید.
sudo mkdir -p /var/lib/letsencrypt/.well-known
sudo chgrp www-data /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
برای جلوگیری از کپی کردن کد و حفظ بیشتر تنظیمات ، دو قطعه تنظیمات زیر ایجاد کنید:
Alias /.well-known/acme-challenge/ "/var/lib/letsencrypt/.well-known/acme-challenge/" <Directory "/var/lib/letsencrypt/"> AllowOverride None Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec Require method GET POST OPTIONS </Directory>
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1 SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 SSLHonorCipherOrder off SSLSessionTickets off
SSLUseStapling On
SSLStaplingCache “shmcb:logs/ssl_stapling(32768)”
SSLOpenSSLConfCmd DHParameters "/etc/ssl/certs/dhparam.pem"
Header always set Strict-Transport-Security "max-age=63072000"
قطعه فوق با استفاده از تراشه های توصیه شده توسط موزیلا ، OCSP Stapling ، HTTP Strict Transport Security (HSTS) را قادر می سازد و چند هدر HTTP با محوریت امنیتی را اعمال می کند.
قبل از فعال کردن پرونده های پیکربندی ، مطمئن شوید که هر دو mod_ssl و mod_headers با صدور فعال شده اند:
sudo a2enmod ssl
sudo a2enmod headers
بعد ، با اجرای دستورات زیر پرونده های پیکربندی SSL را فعال کنید:
sudo a2enconf letsencrypt
sudo a2enconf ssl-params
ماژول HTTP / 2 را فعال کنید ، که باعث می شود سایتهای شما سریعتر و قوی تر شوند:
sudo a2enmod http2
بارگیری پیکربندی Apache برای اعمال تغییرات:
sudo systemctl reload apache2
اکنون می توانیم ابزار Certbot را با افزونه webroot اجرا کنیم و پرونده های گواهی SSL را بدست آوریم:
sudo certbot certonly --agree-tos --email admin@example.com --webroot -w /var/lib/letsencrypt/ -d example.com -d www.example.com
اگر گواهی SSL با موفقیت به دست بیاید ، certbot پیام زیر را چاپ می کند:
IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/example.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/example.com/privkey.pem Your cert will expire on 2020-10-06. To obtain a new or tweaked version of this certificate in the future, simply run certbot again. 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
اکنون که پرونده های گواهی نامه را دارید ، پیکربندی هاست مجازی دامنه خود را به شرح زیر ویرایش کنید:
<VirtualHost *:80> ServerName mail.digital.mk
Redirect permanent / https://mail.digital.mk/ </VirtualHost>
<VirtualHost *:443> ServerName mail.digital.mk
Protocols h2 http:/1.1
<If "%{HTTP_HOST} == 'www.mail.digital.mk'"> Redirect permanent / https://mail.digital.mk/ </If>
DocumentRoot /var/www/mail.digital.mk/public_html
ErrorLog ${APACHE_LOG_DIR}/mail.digital.mk-error.log
CustomLog ${APACHE_LOG_DIR}/mail.digital.mk-access.log combined
SSLEngine On SSLCertificateFile /etc/letsencrypt/live/mail.digital.mk/fullchain.pem SSLCertificateKeyFile /etc/letsencrypt/live/mail.digital.mk/privkey.pem
# Other Apache Configuration
</VirtualHost>
با پیکربندی بالا ، ما HTTPS را مجبور می کنیم و از www به نسخه غیر www هدایت می شویم. به راحتی تنظیم کنید تا تنظیمات را مطابق با نیازهای خود تنظیم کنید.
برای اعمال تغییرات ، سرویس Apache را بارگیری مجدد کنید:
sudo systemctl reload apache2
اکنون می توانید وب سایت خود را با استفاده از https: // باز کنید و به نماد قفل سبز توجه خواهید کرد.
اگر دامنه خود را با استفاده از SSL Labs Server Test Test آزمایش کنید ، مطابق شکل زیر درجه A + دریافت خواهید کرد:
اجازه دهید گواهینامه های رمزگذاری شده برای مدت ۹۰ روز معتبر باشند. برای تجدید خودکار گواهینامه ها قبل از انقضا ، بسته certbot cronjob ایجاد می کند که دو بار در روز اجرا می شود و ۳۰ روز قبل از انقضا به طور خودکار هر گواهینامه را تمدید می کند.
پس از تمدید گواهینامه ، مجبوریم سرویس آپاچی را بارگیری کنیم. پیوست –ren-hook “systemctl reload apache2” را به پرونده /etc/cron.d/certbot اضافه کنید تا مانند زیر باشد:
۰ */۱۲ * * * root test -x /usr/bin/certbot -a \! -d /run/systemd/system && perl -e 'sleep int(rand(3600))' && certbot -q renew --renew-hook "systemctl reload apache2"
برای آزمایش فرایند تجدید ، می توانید از سوئیچ certbot –dry run استفاده کنید
sudo certbot renew --dry-run
اگر خطایی وجود نداشته باشد ، به این معنی است که روند تجدید موفقیت آمیز بوده است.
در این مقاله ، ما در مورد چگونگی استفاده از Certbot كاربر Let’s Encrypt در Ubuntu 20.04 صحبت کردیم تا بتوانید گواهی های SSL را برای دامنه های خود بدست آورید. ما را در شتابان هاست دنبال كنيد.