امن کردن آپاچی با Let's Encrypt
Secure Apache with Let's Encrypt

Apache را با Let’s Encrypt در اوبونتو 20.04 امن کنید!!!

Let’s Encrypt یک مجوز گواهی نامه است که توسط گروه تحقیقاتی امنیت اینترنت (ISRG) ایجاد شده است. این گواهینامه های SSL رایگان را از طریق یک فرآیند کاملاً خودکار طراحی شده برای ایجاد ، اعتبارسنجی ، نصب ، و تمدید گواهینامه ارائه می دهد.

گواهینامه های صادر شده توسط Let Encrypt به مدت 90 روز از تاریخ انتشار معتبر هستند و مورد اعتماد همه مرورگرهای اصلی امروز هستند.

در این آموزش نحوه نصب مجوز رایگان رمزگذاری SSL در اوبونتو 20.04 ، اجرای Apache به عنوان وب سرور توضیح داده شده است. ما همچنین نحوه پیکربندی Apache برای استفاده از گواهی SSL و فعال کردن HTTP / 2 را نشان خواهیم داد.

پیش نیازها

قبل از ادامه اطمینان از پیش نیازهای زیر اطمینان حاصل کنید:

  • به عنوان root یا کاربر دارای دسترسی sudo وارد شده اید .
  • دامنه ای که می خواهید مجوز SSL را بدست آورید باید به IP سرور عمومی شما اشاره کند. ما استفاده example.comخواهیم کرد
  • آپاچی نصب شده باشد.

نصب Certbot

برای به دست آوردن گواهینامه، از certbot استفاده خواهیم کرد. این یک ابزار خط فرمان است که وظایف مربوط به اخذ و تمدید گواهی نامه های رمزگذاری SSL را خودکار می کند.

بسته certbot در مخازن پیش فرض اوبونتو گنجانده شده است. لیست بسته ها را به روز کنید و با استفاده از دستورات زیر ، certbot را نصب کنید:

sudo apt update
sudo apt install certbot

تولید (DH (Diffie-Hellman قدرتمند

کلید تبادل (Diffie-Hellman (DH روشی برای تبادل ایمن کلیدهای رمزنگاری بر روی کانال ارتباطی ناامن است. برای تقویت امنیت مجموعه جدیدی از پارامترهای DH 2048 bit را ایجاد کنید:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

می توانید اندازه را تا 4096 بیت تغییر دهید اما بسته به آنتروپی سیستم ممکن است تولید بیش از 30 دقیقه طول بکشد.

اخذ گواهی نامه Letter Encrypt SSL

برای به دست آوردن گواهینامه SSL برای دامنه ، ما می خواهیم از افزونه Webroot استفاده کنیم که با ایجاد یک پرونده موقت برای تأیید دامنه درخواستی در دایرکتوری
${webroot-path}/.well-known/acme-challenge
عمل می کند. سرور Let Encrypt باعث می شود تا درخواست HTTP را به پرونده موقت تأیید كند تا اعتبار دامنه درخواست شده را به سرور محل اجرای Certbot تأیید كند.

برای ساده تر کردن این موضوع ، می خواهیم تمام درخواست های HTTP برای
.well-known/acme-challenge در یک دایرکتوری/var/lib/letsencrypt مپ کنیم.

دستورالعمل های زیر را برای ایجاد دایرکتوری و نوشتن آن برای سرور آپاچی اجرا کنید.

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"

قطعه بالا با استفاده از chipper های توصیه شده توسط موزیلا ، OCSP Stapling ، HTTP Strict و (HTTP Strict Transport Security (HSTS را فعال می سازد و چند هدر HTTP با محوریت امنیتی را اعمال می کند.

قبل از فعال کردن فایل های پیکربندی، مطمئن شوید با صدور  mod_sslو mod_headers آنها را فعال کنید:

sudo a2enmod ssl
sudo a2enmod headers

بعد ، با اجرای دستورات زیر پرونده های پیکربندی SSL را فعال کنید:

sudo a2enconf letsencryptsudo 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 دریافت خواهید کرد:

تمدید گواهینامه SSL

اجازه دهید گواهینامه های رمزگذاری شده برای مدت 90 روز معتبر باشند. برای تجدید خودکار گواهینامه ها قبل از انقضا ، بسته certbot cronjob ایجاد می کند که دو بار در روز اجرا می شود و 30 روز قبل از انقضا به طور خودکار هر گونه گواهی را تجدید می کند.

پس از تمدید گواهی نامه لازم است سرویس آپاچی ریلود شود برای اینکار دستور
--renew-hook "systemctl reload apache2" را به فایل /etc/cron.d/certbot
مانند زیر اضافه میکنیم:

0 */12 * * * 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"

برای آزمایش فرایند تجدید ، می توانید از سوئیچ --dry-run در دستور certbot استفاده کنید :

sudo certbot renew --dry-run

اگر خطایی وجود نداشته باشد ، به این معنی است که روند تجدید موفقیت آمیز بوده است.

نتیجه

در این آموزش ، ما در مورد چگونگی استفاده از certbot کلاینت Let Encrypt در اوبونتو 20.04 صحبت کردیم تا بتوانید گواهینامه های SSL را برای دامنه های خود بدست آورید. ما همچنین به شما نشان داده ایم كه چگونه Apache را برای استفاده از گواهینامه ها پیكربندی كنید و برای تمدید خودکار گواهینامه اقدام به تنظیم كاربردی كنید.

درباره AfshinBalakar

افشین بالاکار دانشجوی مهندسی تکنولوژی نرم افزار، مدت 5 سال است با لینوکس رابطه افلاطونی دارم.

پیشنهاده میشه بخونی

دانلود اوبونتو 20.04.1

Ubuntu 20.4.1 LTS منتشر شد، مشاهده تغییرات و لینک دانلود

سلام خدمت همه دوستای لینوکسی خودم خبری خوش با تاخیر اما Ubuntu 20.04.1 منتشر شده …

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *