از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
Nginx را با Let’s Encrypt روشن کنید CentOS 7
سرفصلهای مطلب
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
دریافت گواهینامه 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-known
sudo chgrp nginx /var/lib/letsencrypt
sudo chmod g+s /var/lib/letsencrypt
برای جلوگیری از تکرار کد، دو قطعه زیر را ایجاد کنید که در تمام فایل های بلوک سرور Nginx خود قرار می دهیم:
sudo mkdir /etc/nginx/snippets
location ^~ /.well-known/acme-challenge/ {
allow all;
root /var/lib/letsencrypt/;
default_type "text/plain";
try_files $uri =404;
}
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 متمرکز بر امنیت را اعمال می کند.
پس از ایجاد اسنیپت ها، بلوک سرور دامنه را باز کنید و آن را وارد کنید letsencrypt.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
اکنون که فایل های گواهی را دارید، می توانید بلوک سرور دامنه خود را به صورت زیر ویرایش کنید:
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 هدایت می کنیم.
در نهایت، برای اعمال تغییرات، سرویس 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 بیشتر بدانید، مستندات آنها
نقطه شروع خوبی است
این پست بخشی از LEMP Stack را نصب کنید CentOS 7 سلسله.
سایر پست های این مجموعه:
روش نصب Nginx روی CentOS 7
Nginx را با Let’s Encrypt روشن کنید CentOS 7
MariaDB را نصب کنید CentOS 7
PHP 7 را روی آن نصب کنید CentOS 7
روش راه اندازی بلوک های سرور Nginx CentOS 7
لطفا در صورت وجود مشکل در متن یا مفهوم نبودن توضیحات، از طریق دکمه گزارش نوشتار یا درج نظر روی این مطلب ما را از جزییات مشکل مشاهده شده مطلع کنید تا به آن رسیدگی کنیم
زمان انتشار: 1402-12-27 21:34:03