مقدمة
Let's Encrypt هي جهة إصدار شهادات (CA) تُتيح الحصول على شهادات TLS/SSL مجانية وتثبيتها، مما يُمكّن من تشفير HTTPS على خوادم الويب. تُبسّط هذه العملية بتوفير عميل برمجي، Certbot، يُحاول أتمتة معظم (إن لم يكن جميع) الخطوات المطلوبة. حاليًا، تتم أتمتة عملية الحصول على الشهادة وتثبيتها على Apache وNginx بالكامل.
في هذا البرنامج التعليمي، سوف تستخدم Certbot للحصول على شهادة SSL مجانية لـ Nginx على Ubuntu 18.04 وتعيين شهادتك للتجديد التلقائي.
المتطلبات الأساسية
- تم إعداد خادم Ubuntu 18.04 باتباع إعداد الخادم الأولي هذا لنظام Ubuntu 18.04، بما في ذلك مستخدم sudo غير جذر وجدار حماية.
- اسم نطاق مسجل بالكامل. سيستخدم هذا البرنامج التعليمي نطاقك طوال الوقت. يمكنك شراء اسم نطاق من Namecheap، أو الحصول عليه مجانًا من Freenom، أو استخدام مسجل نطاقات من اختيارك.
- تم إعداد كلا سجلي DNS التاليين لخادمك. لمزيد من التفاصيل حول كيفية إضافتهما، يمكنك متابعة هذه المقدمة حول DigitalOcean DNS.
- سجل مع your_domain يشير إلى عنوان IP العام لخادمك.
- سجل يحتوي على www.your_domain يشير إلى عنوان IP العام لخادمك.
- يتم تثبيت Nginx باتباع طريقة تثبيته على Ubuntu 18.04. تأكد من وجود كتلة خادم لنطاقك. يستخدم هذا الدليل أيضًا /etc/nginx/sites-available/your_domain كمثال.
الخطوة 1 - تثبيت Certbot
الخطوة الأولى لاستخدام Let's Encrypt للحصول على شهادة SSL هي تثبيت برنامج Certbot على الخادم الخاص بك.
يوصي مشروع Certbot معظم المستخدمين بتثبيت البرامج عبر snap، وهو مدير حزم تم تطويره في الأصل بواسطة Canonical (الشركة التي تقف وراء Ubuntu) ومتاح الآن في العديد من توزيعات Linux:
sudo snap install --classic certbotسيعرض إخراجك الإصدار الحالي من Certbot والتثبيت الناجح:
Output
certbot 1.21.0 from Certbot Project (certbot-eff✓) installedبعد ذلك، أنشئ رابطًا رمزيًا إلى الملف التنفيذي المُثبّت حديثًا /snap/bin/certbot من مجلد /usr/bin/. يضمن هذا تشغيل أمر certbot بشكل صحيح على خادمك. للقيام بذلك، شغّل أمر ln التالي. يتضمن هذا الأمر العلامة -s، التي تُنشئ رابطًا رمزيًا أو رابطًا إلكترونيًا، بدلًا من الرابط الثابت:
sudo ln -s /snap/bin/certbot /usr/bin/certbotيعد Certbot جاهزًا للاستخدام الآن، ولكن قبل أن يتمكن من تكوين SSL لـ Nginx، تحتاج إلى التحقق من بعض إعدادات Nginx.
الخطوة 2 - التحقق من تكوين Nginx
يجب أن يتمكن Certbot من العثور على كتلة الخادم الصحيحة في إعدادات Nginx ليتمكن من تهيئة SSL تلقائيًا. ويتم ذلك بالبحث عن تعليمة server_name التي تتطابق مع النطاق الذي تطلب شهادة له.
إذا اتبعت خطوة إعداد كتلة الخادم الموصى بها في البرنامج التعليمي لتثبيت Nginx، فسيكون لديك كتلة خادم لنطاقك في /etc/nginx/sites-available/your_domain مع إعداد التوجيه server_name بشكل مناسب بالفعل.
للتحقق، افتح ملف كتلة الخادم الخاص بنطاقك باستخدام nano أو محرر النصوص المفضل لديك:
sudo nano /etc/nginx/sites-available/your_domainابحث عن سطر اسم الخادم الموجود. يجب أن يبدو كما يلي:
...
server_name your_domain www.your_domain;
...إذا كان الأمر كذلك، قم بالخروج من محرر النصوص وانتقل إلى الخطوة التالية.
إذا لم يكن كذلك، فحدّثه ليتوافق. ثم احفظ الملف واخرج من المحرر. إذا كنت تستخدم نانو، يمكنك القيام بذلك بالضغط على CTRL + X ثم Y ثم ENTER.
الآن قم بالتحقق من صحة بناء الجملة الخاصة بتعديلات التكوين الخاصة بك:
sudo nginx -tإذا واجهتَ خطأً، فأعد فتح ملف كتلة الخادم وتحقق من وجود أخطاء إملائية أو أحرف مفقودة. بعد أن يصبح بناء جملة ملف التكوين صحيحًا، أعد تحميل Nginx لتحميل التكوين الجديد:
sudo systemctl reload nginxيمكن لـ Certbot الآن العثور على كتلة الخادم الصحيحة وتحديثها.
بعد ذلك، قم بتحديث جدار الحماية للسماح بحركة المرور HTTPS.
الخطوة 3 - السماح باستخدام HTTPS عبر جدار الحماية
إذا قمتَ بتفعيل جدار حماية ufw، كما هو موصى به في أدلة المتطلبات الأساسية، فستحتاج إلى ضبط الإعدادات للسماح بحركة مرور HTTPS. لحسن الحظ، يُسجّل Nginx بعض الملفات الشخصية مع ufw عند التثبيت.
يمكنك التحقق من الإعدادات الحالية عن طريق تشغيل الأمر التالي:
sudo ufw statusيجب أن تحصل على إخراج مثل التالي، مما يشير إلى أنه يُسمح فقط بحركة مرور HTTP إلى خادم الويب:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx HTTP ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx HTTP (v6) ALLOW Anywhere (v6)للسماح بحركة مرور HTTPS إضافية، امنح أذونات ملف تعريف Nginx الكاملة وقم بإزالة أذونات Nginx HTTP الإضافية:
sudo ufw allow 'Nginx Full'
sudo ufw delete allow 'Nginx HTTP'الآن عند تشغيل أمر حالة ufw، فإنه سيعكس هذه القواعد الجديدة:
sudo ufw statusOutput
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Nginx Full (v6) ALLOW Anywhere (v6)بعد ذلك، ستقوم بتشغيل Certbot والحصول على شهاداتك.
الخطوة 4 - الحصول على شهادة SSL
يوفر Certbot عدة طرق للحصول على شهادات SSL عبر المكونات الإضافية. سيعيد مكون Nginx الإضافي تهيئة Nginx ويعيد تحميل الإعدادات إذا لزم الأمر. لاستخدام هذا المكون الإضافي، شغّل ما يلي:
sudo certbot --nginx -d your_domain -d your_domain
يقوم هذا بتشغيل certbot مع ملحق –nginx ويستخدم -d لتحديد الأسماء التي تريد أن تكون الشهادة صالحة لها.
إذا كانت هذه هي المرة الأولى التي تستخدم فيها certbot، فسيُطلب منك إدخال عنوان بريدك الإلكتروني والموافقة على شروط الخدمة. بعد ذلك، سيتصل certbot بخادم Let's Encrypt لطلب شهادة لنطاقك. في حال نجاح العملية، ستتلقى النتيجة التالية:
Output
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/your_domain/fullchain.pem
Key is saved at: /etc/letsencrypt/live/your_domain/privkey.pem
This certificate expires on 2022-01-27.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for your_domain to /etc/nginx/sites-enabled/your_domain
Successfully deployed certificate for www.your_domain to /etc/nginx/sites-enabled/your_domain
Congratulations! You have successfully enabled HTTPS on https://your_domain and https://www.your_domain
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
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
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -سيتم تنزيل شهاداتك وتثبيتها وتحميلها. جرّب إعادة تحميل موقعك الإلكتروني باستخدام https:// وانتبه لمؤشر الأمان في متصفحك. من المفترض أن يُظهر المؤشر أن الموقع مؤمّن بشكل صحيح، عادةً برمز قفل أخضر. إذا اختبرت خادمك باستخدام اختبار خادم SSL Labs، فسيحصل على تقييم ممتاز.
الآن بعد حصولك على شهادة SSL، فإن الخطوة الأخيرة هي اختبار عملية التجديد.
الخطوة 5 - التحقق من التجديد التلقائي لـ Certbot
شهادات Let's Encrypt صالحة لمدة تسعين يومًا فقط. هذا لتشجيع المستخدمين على أتمتة عملية تجديد الشهادات. تتولى حزمة certbot التي ثبّتها هذه المهمة بإضافة نص برمجي للتجديد إلى /etc/cron.d. يعمل هذا النص مرتين يوميًا، ويُجدّد تلقائيًا أي شهادة لا يتجاوز تاريخ انتهاء صلاحيتها ثلاثين يومًا.
لاختبار عملية التجديد، يمكنك إجراء تشغيل تجريبي باستخدام certbot:
sudo certbot renew --dry-runإذا لم يظهر لك أي خطأ، فأنت جاهز. عند الحاجة، سيُجدّد Certbot شهاداتك ويعيد تحميل Nginx لاستيعاب التغييرات. إذا فشلت عملية التجديد التلقائي، سيرسل Let's Encrypt رسالة إلى البريد الإلكتروني الذي حددته، لإعلامك باقتراب انتهاء صلاحية شهادتك.
نتيجة
في هذا البرنامج التعليمي، ثبّتتَ عميل Certbot من Let's Encrypt، وحمّلتَ شهادات SSL لنطاقك، وهيئتَ Nginx لاستخدامها، وأعدتَ تجديد الشهادات تلقائيًا. إذا كانت لديك أي أسئلة أخرى حول استخدام Certbot، فإن وثائقه تُعدُّ نقطة انطلاق جيدة.









