وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

Nginx را با Let’s Encrypt روشن کنید CentOS 7

0 3
زمان لازم برای مطالعه: 4 دقیقه



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

در این آموزش، دستورالعمل های گام به گام در مورد روش ایمن سازی Nginx خود با Let’s Encrypt با استفاده از ابزار certbot در CentOS 7.

پیش نیازها

قبل از ادامه این آموزش مطمئن شوید که پیش نیازهای زیر را برآورده کرده اید:

  • شما یک نام دامنه دارید که به IP سرور عمومی شما اشاره دارد. در این آموزش استفاده خواهیم کرد example.com.
  • شما مخزن EPEL را فعال کرده اید و Nginx را با دنبال کردن روش نصب Nginx در CentOS 7 .

Certbot را نصب کنید

Certbot ابزاری آسان برای استفاده است که می‌تواند وظایف مربوط به دریافت و تمدید گواهینامه‌های Let’s Encrypt SSL و پیکربندی سرورهای وب را خودکار کند.

برای نصب بسته certbot از مخزن EPEL استفاده کنید:

sudo yum install certbot

گروه Strong Dh (Diffie-Hellman) را ایجاد کنید

تبادل کلید دیفی-هلمن (DH) روشی برای تبادل امن کلیدهای رمزنگاری از طریق یک کانال ارتباطی ناامن است.

با تایپ دستور زیر مجموعه جدیدی از پارامترهای DH 2048 بیتی ایجاد کنید:

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
اگر دوست دارید می توانید اندازه را تا 4096 بیت تغییر دهید، اما در این صورت، بسته به آنتروپی سیستم، تولید ممکن است بیش از 30 دقیقه طول بکشد.

دریافت گواهینامه Let’s Encrypt SSL

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

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

دستورات زیر دایرکتوری را ایجاد کرده و آن را برای سرور Nginx قابل نوشتن می کند.

sudo mkdir -p /var/lib/letsencrypt/.well-knownsudo chgrp nginx /var/lib/letsencryptsudo chmod g+s /var/lib/letsencrypt

برای جلوگیری از تکرار کد، دو قطعه زیر را ایجاد کنید که در تمام فایل های بلوک سرور Nginx خود قرار می دهیم:

sudo mkdir /etc/nginx/snippets
/etc/nginx/snippets/letsencrypt.conf
location ^~ /.well-known/acme-challenge/ {
  allow all;
  root /var/lib/letsencrypt/;
  default_type "text/plain";
  try_files $uri =404;
}
/etc/nginx/snippets/ssl.conf
ssl_dhparam /etc/ssl/certs/dhparam.pem;

ssl_session_timeout 1d;
ssl_session_cache shared:SSL:50m;
ssl_session_tickets off;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 30s;

add_header Strict-Transport-Security "max-age=15768000; includeSubdomains; preload";
add_header X-Frame-Options SAMEORIGIN;
add_header X-Content-Type-Options nosniff;

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

پیشنهاد می‌کنیم بخوانید:  روش نصب و استفاده از PHP Composer در CentOS 8

پس از ایجاد اسنیپت ها، بلوک سرور دامنه را باز کنید و آن را وارد کنید letsencrypt.conf اسنیپت مطابق شکل زیر:

/etc/nginx/conf.d/example.com.conf
server {
  listen 80;
  server_name example.com www.example.com;

  include snippets/letsencrypt.conf;
}

برای اعمال تغییرات، پیکربندی Nginx را دوباره بارگیری کنید:

sudo systemctl reload nginx

اکنون می توانید 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 2018-06-11. 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"
 - 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

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

/etc/nginx/conf.d/example.com.conf
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;
    include snippets/letsencrypt.conf;

    # . . . other code
}

با پیکربندی بالا، HTTPS را مجبور می کنیم و www را به نسخه غیر www هدایت می کنیم.

پیشنهاد می‌کنیم بخوانید:  روش نصب MySQL روی CentOS 8

در نهایت، برای اعمال تغییرات، سرویس Nginx را دوباره بارگیری کنید:

sudo systemctl reload nginx

تمدید خودکار گواهینامه Let’s Encrypt SSL

گواهینامه های Let’s Encrypt به مدت 90 روز معتبر هستند. برای تمدید خودکار گواهی‌ها قبل از انقضا، ما یک cronjob ایجاد می‌کنیم که دو بار در روز اجرا می‌شود و هر گواهی را 30 روز قبل از انقضا به طور خودکار تمدید می‌کند.

را اجرا کنید crontab دستور ایجاد یک cronjob جدید:

sudo crontab -e

خطوط زیر را بچسبانید:

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 nginx"

ذخیره کنید و فایل را ببندید.

برای تست تمدید process، می توانید از دستور certbot به دنبال آن استفاده کنید --dry-run تعویض:

sudo certbot renew --dry-run

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

نتیجه

در این آموزش، شما از certbot Let’s Encrypt برای دانلود گواهینامه های SSL برای دامنه خود استفاده کرده اید. شما همچنین قطعه های Nginx را برای جلوگیری از تکرار کد ایجاد کرده اید و Nginx را برای استفاده از گواهی ها پیکربندی کرده اید. در پایان آموزش شما یک cronjob برای تمدید خودکار گواهی راه اندازی کرده اید.

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

nginx centos بیایید certbot ssl را رمزگذاری کنیم

این پست بخشی از LEMP Stack را نصب کنید CentOS 7 سلسله.
سایر پست های این مجموعه:


روش نصب Nginx روی CentOS 7

Nginx را با Let’s Encrypt روشن کنید CentOS 7

MariaDB را نصب کنید CentOS 7

PHP 7 را روی آن نصب کنید CentOS 7

روش راه اندازی بلوک های سرور Nginx CentOS 7
برای نگارش بخشهایی از این متن ممکن است از ترجمه ماشینی یا هوش مصنوعی GPT استفاده شده باشد
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم

زمان انتشار: 1402-12-27 21:34:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید