إعداد Certbot على سيرفر Linux - أمان مواقعك بشهادة SSL من Let's Encrypt
المنتجات المثالية لهذا الدليل
ابدأ على الفور — اطلب المنتج المناسب واتبع هذا الدليل خطوة بخطوة.
مقدمة
شهادات SSL جزء أساسي من الإنترنت، تضمن أن البيانات تنتقل بأمان بين العميل والسيرفر. في هذا الدليل، راح نستعرض طريقة إعداد أداة Certbot مفتوحة المصدر لطلب شهادات SSL مجانية من سلطة الشهادات غير الربحية Let's Encrypt.
التحضير
عشان تستخدم Certbot، تحتاج سيرفر Linux ونطاق تملكه. لازم يكون عندك وصول لإعدادات DNS للنطاق ولازم تنشئ سجل A في DNS يشير إلى عنوان IP الخاص بسيرفرك Linux لكل نطاق رئيسي أو نطاق فرعي ناوي تستخدمه.
كمان Certbot فيه إضافات (plugins) تسهل عليك تثبيت الشهادة بنقرة وحدة للنطاقات وتشتغل مع سيرفرات ويب مختلفة مثل Nginx أو Apache. ننصح باستخدام Nginx لأنه سيرفر ويب مفتوح المصدر مشهور وعالي الأداء. شوف دليلنا عن الوكيل العكسي على Linux لو تحتاج مساعدة في الإعداد.
التثبيت
ابدأ بتثبيت حزمة Certbot مفتوحة المصدر، اللي راح تستخدمها لطلب شهادات SSL مجانية من Let's Encrypt.
sudo apt install certbot
بعد تثبيت Certbot، تقدر تطلب شهادات لنطاقاتك. Let's Encrypt و Certbot يوفرون تحديات ACME مختلفة للتحقق من ملكية النطاق.
ننصح بشدة باستخدام طريقة HTTP-01 الافتراضية لأنها تدعم التجديد التلقائي. لكن لو واجهت مشاكل، تقدر تستخدم طريقة DNS-01 كبديل، وهي يدوية وما تدعم التجديد التلقائي لأنها تعتمد على التحقق عبر سجل DNS من نوع TXT.
لو تستخدم سيرفر ويب مثل Nginx أو Apache أو سيرفرك الخاص، ننصح بالانتقال لقسم إضافات سيرفر الويب بالأسفل، اللي يشرح كيف تستخدم إضافات Certbot لتثبيت الشهادة بنقرة وحدة وطلب الشهادات بدون الحاجة لإيقاف سيرفر الويب.
تحدي HTTP-01
بعد تثبيت Certbot، تقدر تطلب شهادات لنطاقاتك. في هذا المثال، راح نستخدم وضع standalone يعني Certbot راح يشغل سيرفر ويب مؤقت عشان ينفذ التحدي. هذا يعني لازم تفتح منفذ 80 في جدارك الناري وما يكون فيه سيرفر ويب أو خدمة شغالة على المنفذ 80 عشان السيرفر المؤقت يشتغل ويقدر التحدي يتم (ومن هنا جاء اسم التحدي HTTP).
في الأمر التالي، راح تستخدم معامل --standalone لتخبر Certbot إنك تبي تستخدم السيرفر المؤقت.
# للنطاقات الرئيسية
certbot certonly --standalone -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot certonly --standalone -d [your_domain]
# إعداد تفاعلي
certbot certonly --standalone
بعد تشغيل الأمر، ممكن يطلب منك إعداد تفاعلي لأول مرة تدخل فيه بريد إلكتروني للتواصل بخصوص الشهادة، وقائمة بريدية اختيارية، وشروط الاستخدام اللي لازم توافق عليها.
Certbot راح يولد تحدي ACME ويستضيفه عبر السيرفر المؤقت. سيرفرات Let's Encrypt بتحاول تجلب التحدي من سيرفرك، وإذا نجح، راح تُنشأ الشهادات وتُحفظ في المسار /etc/letsencrypt/live/[your_domain].
تقدر تستخدم شهادات SSL في أي مكان تحتاجها بمجرد توفير المسار المحلي للشهادات.
سجل TXT في DNS
لو واجهت صعوبات في التحقق من النطاق باستخدام طريقة HTTP-01، تقدر تستخدم طريقة DNS-01 كبديل، اللي تعتمد على إنشاء سجل TXT في DNS بقيمة يزودك فيها Let's Encrypt.
زي ما ذكرنا، هذه الطريقة لا تدعم التجديد التلقائي إلا إذا أعددت بنية تحتية خاصة لإدارتها. لذلك ننصح بشدة باستخدام طريقة HTTP-01 متى ما أمكن.
في الأمر التالي، راح تستخدم معامل --preferred-challenges لتخبر Certbot إنك تبي تستخدم طريقة DNS-01.
# للنطاقات الرئيسية
certbot certonly --preferred-challenges dns-01 -d [your_root_domain] -d www.[your_root_domain] --manual -m [your_root_domain] -m www.[your_root_domain]
# للنطاقات الفرعية
certbot certonly --preferred-challenges dns-01 -d [your_domain] --manual -m [your_domain]
# إعداد تفاعلي
certbot certonly --preferred-challenges dns-01
بعد تشغيل الأمر، ممكن يطلب منك إعداد تفاعلي لأول مرة تدخل فيه بريد إلكتروني للتواصل بخصوص الشهادة، وقائمة بريدية اختيارية، وشروط الاستخدام اللي لازم توافق عليها.
Certbot راح يعطيك تعليمات لإنشاء سجل TXT في DNS بقيمة معينة لازم تستخدمها. الهدف عادة بيكون _acme-challenge. مضاف لنطاقك (في هذا المثال، راح يكون _acme-challenge.zapdocs.example.com) والقيمة اللي لازم تضبطها راح تظهر في الكونسول.
بعد ما تنشئ السجل، اضغط Enter للاستمرار. إذا كل شيء صحيح وانتشر السجل، راح تُنشأ الشهادات وتُحفظ في المسار /etc/letsencrypt/live/[your_domain].
اصبر شوي لأن تغييرات سجلات DNS ممكن تأخذ وقت عشان تنتشر. عادةً بيصير خلال دقائق، لكن في حالات نادرة ممكن تأخذ وقت أطول.
تقدر تستخدم شهادات SSL في أي مكان تحتاجها بمجرد توفير المسار المحلي للشهادات.
إضافات سيرفر الويب
Certbot يحتوي على مجموعة إضافات مختلفة لسيرفرات الويب تسهل إدارة الشهادات لأن الإضافات تعدل تلقائيًا إعدادات السيرفر المناسبة. لاستخدام إضافة، فقط أضف المعامل المناسب لأمر certbot.
هاتين الطريقتين تستخدمان تحدي HTTP-01 وتشتغل بنفس الطريقة تقريبًا. لما تستخدم إضافة، Certbot يبحث أولًا عن إعداد السيرفر اللي يحتوي على النطاق المطلوب كمعامل server_name. لما يلقاه، Certbot يولد تحدي ACME ويضيف كتلة مؤقتة location /.well-known/acme-challenge/... في إعداد السيرفر.
سيرفرات Let's Encrypt بتحاول تجلب التحدي من سيرفرك، وإذا نجح، راح تُنشأ الشهادة ويتعدل إعداد السيرفر تلقائيًا عشان يستخدم HTTPS (المنفذ 443) ويضيف المسارات للشهادة الجديدة.
- Nginx
- Apache
- Webroot
إضافة Nginx
قبل استخدام الإضافة، تأكد إنها مثبتة.
sudo apt install python3-certbot-nginx
لاستخدام إضافة Nginx، استخدم معامل --nginx في الأمر كالتالي.
# للنطاقات الرئيسية
certbot --nginx -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --nginx -d [your_domain]
# إعداد تفاعلي
certbot --nginx
لو تبي تعطل التعديلات التلقائية على إعدادات السيرفر من Certbot، تقدر تضيف معامل certonly مثل certbot certonly.
إضافة Apache
قبل استخدام الإضافة، تأكد إنها مثبتة.
sudo apt install python3-certbot-apache
لاستخدام إضافة Apache، استخدم معامل --apache في الأمر كالتالي.
# للنطاقات الرئيسية
certbot --apache -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --apache -d [your_domain]
# إعداد تفاعلي
certbot --apache
لو تبي تعطل التعديلات التلقائية على إعدادات السيرفر من Certbot، تقدر تضيف معامل certonly مثل certbot certonly.
إضافة Webroot
لو تشغل سيرفر ويب محلي خاص فيك وما تستخدم برامج تقليدية، ممكن تفضل تستخدم طريقة webroot عشان تستخدم سيرفرك بدون ما توقفه.
لاستخدام إضافة Webroot، استخدم معامل --webroot في الأمر كالتالي. لازم تضيف كمان -w [your_webserver_path] (اختصار لـ --webroot-path) وهو مسار المجلد الرئيسي لسيرفر الويب.
# للنطاقات الرئيسية
certbot --webroot -w [your_webserver_path] -d [your_root_domain] -d www.[your_root_domain]
# للنطاقات الفرعية
certbot --webroot -w [your_webserver_path] -d [your_domain]
# إعداد تفاعلي
certbot --webroot -w [your_webserver_path]
أشهر مسار webroot هو /var/www/html. تقدر تستخدم هذا حتى مع سيرفرات مثل Nginx أو Apache لو تبي تستخدم سيرفرك بدون التعديلات التلقائية اللي توفرها الإضافات الأصلية.
التجديد التلقائي
في أغلب الحالات، Certbot يضبط تجديد الشهادات تلقائيًا باستخدام cronjob و/أو systemd timer. تقدر تتأكد من هذا بتشغيل الأمر التالي اللي يستخدم معامل --dry-run لاختبار العملية.
certbot renew --dry-run
زي ما ذكرنا، طريقة DNS-01 ما تدعم التجديد التلقائي عبر Certbot إلا إذا أعددت بنية تحتية خاصة. لذلك ننصح باستخدام طريقة HTTP-01.
لو كل شيء مضبوط، راح تنجح العملية. لو تبي تشوف أو تعدل التجديد التلقائي، راح تلاقي الأمر في واحد من المواقع التالية: /etc/crontab/، /etc/cron.*/* أو عبر systemctl list-timers.
إعداد Cronjob يدوي
لو لأي سبب ما تم إعداد التجديد التلقائي، تقدر تضيفه بنفسك عبر cronjob. افتح قائمة crontab باستخدام crontab -e. لو هذه أول مرة تستخدمها، ممكن يطلب منك تختار محرر. اختار الخيار الأول اللي غالبًا بيكون /bin/nano.
بعد ما يفتح الملف في nano، أضف السطر التالي لتشغيل التجديد كل يوم الساعة 6 صباحًا بالتوقيت المحلي.
0 6 * * * certbot renew
احفظ الملف واخرج من nano باستخدام CTRL + X، بعدين Y للتأكيد وأخيرًا ENTER.
الخاتمة
لقد أعددت Certbot بنجاح لنطاقاتك باستخدام طرق مختلفة مثل standalone، webroot أو عبر الإضافات، ووفرت لموقعك نقل بيانات آمن عبر HTTPS. لأي أسئلة أو مساعدة، لا تتردد تتواصل مع فريق الدعم عندنا، متوفرين يوميًا لمساعدتك! 🙂