الدورة العربية لادارة السيرفرات لينوكس VPS Linux Nginx PHP Mysql
جدول المحتويات:
- المتطلبات الأساسية
- تثبيت Certbot
- إنشاء مجموعة قوية Dh (ديفي هيلمان)
- الحصول على شهادة دعونا تشفير SSL
- تجديد شهادة SSL
- استنتاج
Let's Encrypt هي مرجع شهادات مجاني ومفتوح تم تطويره بواسطة مجموعة أبحاث أمان الإنترنت (ISRG). الشهادات التي تصدرها Let's Encrypt موثوقة من قِبل جميع المتصفحات تقريبًا اليوم.
في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Nginx باستخدام Let's Encrypt باستخدام أداة certbot على Ubuntu 16.04.
المتطلبات الأساسية
تأكد من أنك استوفيت الشروط التالية قبل المتابعة مع هذا البرنامج التعليمي:
- لديك اسم مجال يشير إلى خادم IP العام الخاص بك. في هذا البرنامج التعليمي ، سنستخدم
example.com. لديك تثبيت Nginx باتباع كيفية تثبيت Nginx على Ubuntu 16.04.
تثبيت Certbot
Certbot هي أداة مساعدة مكتوبة بلغة بيثون يمكنها أتمتة المهام للحصول على وتجديد شهادات دعونا تشفير SSL وتكوين خوادم الويب.
أولاً ، قم بتثبيت الحزمة
software-properties-common
التي توفر أداة
add-apt-repository
اللازمة لإضافة PPAs إضافية.
قم بتحديث فهرس الحزم وتثبيت
software-properties-common
مع:
sudo apt update
sudo apt install software-properties-common
بمجرد اكتمال التثبيت ، أضف مستودع certbot PPA إلى نظامك باستخدام الأمر التالي:
sudo add-apt-repository ppa:certbot/certbot
قم بتحديث قائمة الحزم وتثبيت حزمة certbot:
sudo apt update
sudo apt install certbot
إنشاء مجموعة قوية 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.
mkdir -p /var/lib/letsencrypt/.well-known
chgrp www-data /var/lib/letsencrypt
chmod g+s /var/lib/letsencrypt
لتجنب تكرار الشفرة ، قم بإنشاء المقترضين التاليين اللذين سنقوم بإدراجهما في جميع ملفات كتلة خادم Nginx.
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; }
قم بتنشيط كتلة الخادم عن طريق إنشاء رابط رمزي من
sites-available
إلى
sites-enabled
:
sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.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-04-23. 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:
الآن بعد أن أصبح لدينا ملفات الشهادة ، قم بتحرير كتلة خادم المجال كما يلي:
/etc/nginx/sites-available/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
من المجال إلى الإصدار
non www
.
أعد تحميل خدمة Nginx لتصبح التغييرات نافذة المفعول:
تجديد شهادة SSL
شهادات تشفير دعونا صالحة لمدة 90 يوما. لتجديد الشهادات تلقائيًا قبل انتهاء صلاحيتها ، تنشئ حزمة certbot cronjob والتي ستعمل مرتين يوميًا وستجدد تلقائيًا أي شهادة قبل 30 يومًا من انتهاء صلاحيتها.
نظرًا لأننا نستخدم البرنامج المساعد certbot webroot بمجرد تجديد الشهادة ، يتعين علينا أيضًا إعادة تحميل خدمة nginx. للقيام بذلك إلحاق
--renew-hook "systemctl reload nginx"
إلى ملف
/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 nginx"
لاختبار عملية التجديد ، استخدم مفتاح
--dry-run
:
sudo certbot renew --dry-run
إذا لم تكن هناك أخطاء ، فهذا يعني أن عملية التجديد كانت ناجحة.
استنتاج
في هذا البرنامج التعليمي ، استخدمت عميل Let's Encrypt ، certbot للحصول على شهادات SSL لنطاقك. لقد أنشأت أيضًا مقتطفات Nginx لتجنب تكرار الشفرة وقمت بتهيئة Nginx لاستخدام الشهادات. في نهاية البرنامج التعليمي ، قمت بإعداد cronjob لتجديد الشهادة تلقائيًا.
دعونا نحقق nginx ubuntu certbot sslتأمين nginx مع دعونا تشفير على centos 7
في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Nginx الخاص بك باستخدام Let's Encrypt باستخدام أداة certbot على CentOS 7
تأمين nginx مع دعونا تشفير على أوبونتو 18.04
Let's Encrypt هي سلطة شهادات مجانية ومفتوحة تم تطويرها بواسطة مجموعة Internet Security Research Group. في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Nginx باستخدام Let's Encrypt باستخدام أداة certbot على Ubuntu 18.04
تأمين اباتشي مع دعونا تشفير على أوبونتو 18.04
في هذا البرنامج التعليمي ، سنقدم إرشادات خطوة بخطوة حول كيفية تأمين Apache باستخدام Let's Encrypt باستخدام أداة certbot على Ubuntu 18.04.







