OTOMY
SERVER CONFIG٢٣ يونيو ٢٠٢٦6 min

أتمتة تجديد شهادة SSL من Let's Encrypt على الخادم

شهادة SSL منتهية الصلاحية تعني موقعًا معطّلًا ومصداقية مدمّرة. إليك كيفية أتمتة تجديد شهادة Let's Encrypt بشكل نهائي ودائم.

M

بقلم

Melissa Slimani

أتمتة تجديد شهادة SSL من Let's Encrypt على الخادم

لماذا يجب أتمتة تجديد شهادة SSL من Let's Encrypt على خادمك؟

تنتهي صلاحية شهادة SSL من Let's Encrypt كل 90 يومًا. إذا كنت تدير عدة مواقع على خادم VPS أو خادم مخصّص، يصبح التجديد اليدوي فخًّا حقيقيًا: نسيان واحد وسيواجه زوّارك خطأ NET::ERR_CERT_DATE_INVALID. عندها يُعاقبك Google على مستوى SEO، ويفقد عملاؤك الثقة بموقعك.

في Otomy، نُدير البنية التحتية لعشرات المؤسسات الصغيرة والمتوسطة بين فرنسا والجزائر. إليك بالتحديد الطريقة التي ننشرها لأتمتة تجديد شهادة SSL على كل خادم.


المتطلبات الأساسية

قبل البدء، تأكّد من توفّر ما يلي:

  • خادم Linux (يُنصح بـ Ubuntu 22.04 أو Debian 12)
  • تثبيت Certbot (العميل الرسمي لـ Let's Encrypt)
  • خادم ويب: Nginx أو Apache
  • صلاحيات root أو sudo
  • اسم نطاق يشير إلى خادمك

الخطوة 1 — تثبيت Certbot بالطريقة الصحيحة

انسَ مستودعات PPA القديمة. استخدم snap الرسمي للحصول دائمًا على أحدث إصدار:

sudo apt update
sudo apt install snapd -y
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

تحقّق من التثبيت:

certbot --version

الخطوة 2 — الحصول على شهادة SSL الأولى من Let's Encrypt

مع Nginx

sudo certbot --nginx -d votredomaine.com -d www.votredomaine.com

مع Apache

sudo certbot --apache -d votredomaine.com -d www.votredomaine.com

يقوم Certbot تلقائيًا بتعديل إعدادات خادمك لتفعيل HTTPS وإعادة توجيه حركة المرور من HTTP.


الخطوة 3 — أتمتة التجديد باستخدام cron job

يقوم Certbot افتراضيًا بتثبيت مؤقّت systemd أو cron job. تحقّق من ذلك:

systemctl list-timers | grep certbot

إذا كان المؤقّت موجودًا، فأنت في أمان. وإلّا، أنشئ cron يدويًا:

sudo crontab -e

أضف هذا السطر:

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx"

الشرح:

  • 0 3 */10 * * : التنفيذ كل 10 أيام في الساعة 3 صباحًا
  • --quiet : عدم إظهار أي مخرجات إلّا في حالة وجود خطأ
  • --deploy-hook : إعادة تحميل Nginx فقط إذا تمّ تجديد الشهادة فعليًا

لـ Apache، استبدل الأمر بـ systemctl reload apache2.


الخطوة 4 — اختبار التجديد بالمحاكاة

لا تثق أبدًا بإعداد لم يتمّ اختباره:

sudo certbot renew --dry-run

إذا ظهرت لك رسالة Congratulations, all simulated renewals succeeded، فكل شيء يعمل بشكل سليم.


الخطوة 5 — إضافة تنبيهات في حالة الفشل

الأتمتة بدون مراقبة هي إهمال محض. إليك ثلاث طرق نستخدمها في Otomy:

الخيار أ — تنبيه بالبريد الإلكتروني عبر cron

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx" || echo "فشل تجديد SSL" | mail -s "[تنبيه] SSL" admin@votredomaine.com

الخيار ب — Webhook نحو n8n أو Make

إذا كنت تستخدم n8n (الذي ننشره لعملائنا)، أنشئ سير عمل يستقبل webhook في حالة الفشل:

0 3 */10 * * certbot renew --quiet --deploy-hook "systemctl reload nginx" || curl -X POST https://votre-instance-n8n.com/webhook/ssl-fail -d '{"server":"prod-01"}'

يمكن لـ n8n بعد ذلك إرسال إشعار عبر Slack، أو بريد إلكتروني، أو إنشاء تذكرة في أداة إدارة المشاريع الخاصة بك.

الخيار ج — مراقبة خارجية

استخدم UptimeRobot أو Better Uptime لمراقبة تاريخ انتهاء صلاحية شهادتك. اضبط تنبيهًا قبل 14 يومًا من الانتهاء.


حالة متقدمة: شهادة Wildcard SSL مع DNS challenge

للحصول على شهادة wildcard (*.votredomaine.com)، لا يكفي تحدّي HTTP. يجب استخدام DNS challenge:

sudo certbot certonly --manual --preferred-challenges dns -d "*.votredomaine.com" -d votredomaine.com

لـ أتمتة تحدّي DNS، استخدم إضافة Certbot المناسبة لمسجّل النطاق الخاص بك:

  • Cloudflare : sudo snap install certbot-dns-cloudflare
  • OVH : pip install certbot-dns-ovh
  • DigitalOcean : sudo snap install certbot-dns-digitalocean

مثال مع Cloudflare:

sudo certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d "*.votredomaine.com" -d votredomaine.com

ملف /root/.secrets/cloudflare.ini:

dns_cloudflare_api_token = VOTRE_TOKEN_API

قم بتأمين هذا الملف:

chmod 600 /root/.secrets/cloudflare.ini

أفضل ممارسات DevSecOps

  • لا تخزّن أبدًا مفاتيحك الخاصة في مستودع Git
  • قم بمركزة إدارة شهاداتك إذا كنت تدير عدة خوادم — أداة مثل Ansible يمكنها تنفيذ certbot renew على جميع خوادمك
  • تحقّق من سلسلة الشهادات باستخدام openssl:
openssl s_client -connect votredomaine.com:443 -servername votredomaine.com < /dev/null 2>/dev/null | openssl x509 -noout -dates
  • فعّل HSTS في إعدادات Nginx لفرض HTTPS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;

ملخّص: قائمة التحقّق الكاملة

الخطوة الأمر / الإجراء
تثبيت Certbot snap install --classic certbot
الحصول على الشهادة certbot --nginx -d domaine.com
أتمتة التجديد cron job أو مؤقّت systemd
الاختبار certbot renew --dry-run
التنبيه في حالة الفشل بريد إلكتروني، webhook عبر n8n، أو UptimeRobot
شهادة Wildcard إضافة DNS لـ Cloudflare/OVH

الخلاصة

أتمتة تجديد شهادة SSL من Let's Encrypt على خادمك ليست رفاهية — بل هي ضرورة لأي بنية تحتية جادة. في 30 دقيقة فقط، تُزيل خطرًا كبيرًا لتوقّف الخدمة وتُعزّز وضعك الأمني.

هل تحتاج إلى مساعدة في تأمين بنيتك التحتية؟ Otomy تُرافق المؤسسات الصغيرة والمتوسطة في فرنسا والجزائر في إعداد الخوادم وDevSecOps والأتمتة. تواصل معنا.

OTOMY

هل تريد أتمتة عملك؟

احجز مكالمة مجانية — 30 دقيقة لتحديد ما يمكن أتمتته.