الدورة العربية لادارة السيرفرات لينوكس VPS Linux Nginx PHP Mysql
جدول المحتويات:
- المتطلبات الأساسية
- تثبيت Certbot
- إنشاء مجموعة قوية Dh (ديفي هيلمان)
- الحصول على شهادة دعونا تشفير SSL
- التجديد التلقائي دعونا تشفير شهادة SSL
- استنتاج
Let's Encrypt هي مرجع شهادات مجاني ومفتوح تم تطويره بواسطة مجموعة أبحاث أمان الإنترنت (ISRG). الشهادات التي تصدرها Let's Encrypt موثوقة من قِبل جميع المتصفحات تقريبًا اليوم.
في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Nginx باستخدام Let's Encrypt باستخدام أداة certbot على CentOS 7.
المتطلبات الأساسية
تأكد من أنك استوفيت الشروط التالية قبل المتابعة مع هذا البرنامج التعليمي:
- لديك اسم مجال يشير إلى خادم IP العام الخاص بك. في هذا البرنامج التعليمي ، سنستخدم
example.com. لقد قمت بتمكين مستودع EPEL وتثبيت Nginx باتباع كيفية تثبيت Nginx على CentOS 7.
تثبيت Certbot
Certbot هي أداة سهلة الاستخدام يمكنها أتمتة المهام للحصول على وتجديد شهادات دعونا تشفير SSL وتكوين خوادم الويب.
لتثبيت حزمة certbot ، قم بتشغيل مستودع EPEL:
إنشاء مجموعة قوية Dh (ديفي هيلمان)
يعد Diffie – Hellman key exchange (DH) طريقة لتبادل آمن لمفاتيح التشفير عبر قناة اتصال غير آمنة.
قم بإنشاء مجموعة جديدة من معلمات DH 2048 بت عن طريق كتابة الأمر التالي:
sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
إذا أردت ، يمكنك تغيير الحجم إلى 4096 بت ، لكن في هذه الحالة ، قد يستغرق الجيل أكثر من 30 دقيقة اعتمادًا على إنتروبيا النظام.
الحصول على شهادة دعونا تشفير SSL
للحصول على شهادة طبقة المقابس الآمنة لنطاقنا ، سنستخدم مكوّن Webroot الإضافي الذي يعمل عن طريق إنشاء ملف مؤقت للتحقق من صحة النطاق المطلوب في دليل
${webroot-path}/.well-known/acme-challenge
. يقوم خادم Let's Encrypt بإرسال طلبات HTTP إلى الملف المؤقت للتحقق من أن المجال المطلوب يحل إلى الخادم حيث يتم تشغيل certbot.
ولجعل الأمر أكثر بساطة ، سنقوم بتعيين جميع طلبات 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
/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;
يشتمل المقتطف أعلاه على أدوات التقطيع التي أوصت بها Mozilla ، وتمكين 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 [email protected] --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:
الآن بعد أن حصلت على ملفات الشهادة ، يمكنك تعديل كتلة خادم المجال كما يلي:
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 لتصبح التغييرات نافذة المفعول:
التجديد التلقائي دعونا تشفير شهادة SSL
شهادات تشفير دعونا صالحة لمدة 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"
أحفظ وأغلق الملف.
لاختبار عملية التجديد ، يمكنك استخدام الأمر certbot متبوعًا
--dry-run
:
sudo certbot renew --dry-run
إذا لم تكن هناك أخطاء ، فهذا يعني أن عملية تجديد الاختبار كانت ناجحة.
استنتاج
في هذا البرنامج التعليمي ، استخدمت عميل Let's Encrypt ، certbot لتنزيل شهادات SSL لنطاقك. لقد أنشأت أيضًا مقتطفات Nginx لتجنب تكرار التعليمات البرمجية وتكوين Nginx لاستخدام الشهادات. في نهاية البرنامج التعليمي ، قمت بإعداد cronjob لتجديد الشهادة تلقائيًا.
سنت إنجن إكس دعونا تشفير certbot SSLهذا المنشور جزء من Install LEMP Stack على سلسلة CentOS 7.
وظائف أخرى في هذه السلسلة:
• كيفية تثبيت Nginx على CentOS 7 • تأمين Nginx مع Let's Encrypt على CentOS 7 • تثبيت MariaDB على CentOS 7 • تثبيت PHP 7 على CentOS 7 • كيفية إعداد كتل خادم Nginx على CentOS 7تأمين nginx مع دعونا تشفير على ديبيان 9
في هذا البرنامج التعليمي ، سنشرح كيفية استخدام أداة Certbot للحصول على شهادة SSL مجانية لـ Nginx في Debian 9. سنعرض أيضًا كيفية تكوين Nginx لاستخدام شهادة SSL وتمكين HTTP / 2.
تأمين nginx مع دعونا تشفير على أوبونتو 18.04
Let's Encrypt هي سلطة شهادات مجانية ومفتوحة تم تطويرها بواسطة مجموعة Internet Security Research Group. في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Nginx باستخدام Let's Encrypt باستخدام أداة certbot على Ubuntu 18.04
تأمين nginx مع دعونا تشفير على centos 8
في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تثبيت شهادة Let's Encrypt SSL المجانية على CentOS 8 التي تستخدم Nginx كخادم ويب. سنعرض أيضًا كيفية تكوين Nginx لاستخدام شهادة SSL وتمكين HTTP / 2.







