Home Knowledge base Skyline Cloud كيفية إعداد شهادة SSL مجانية باستخدام Let's Encrypt مع التجديد التلقائي KNOWLEDGE BASE

كيفية إعداد شهادة SSL مجانية باستخدام Let's Encrypt مع التجديد التلقائي

دليل دقيق خطوة بخطوة لتأمين موقعك بشهادة SSL مجانية من Let's Encrypt على خادم Nginx باستخدام Certbot، مع تفعيل التجديد التلقائي الموثوق عبر systemd، لخوادم مستضافة داخل المملكة العربية السعودية.

لماذا شهادة SSL مجانية مع Let's Encrypt

كل موقع عام بحاجة إلى HTTPS. تضع المتصفحات علامة "غير آمن" على صفحات HTTP العادية، وتفضّل محركات البحث المواقع المشفّرة، كما أن متطلبات حماية البيانات في المملكة بموجب نظام حماية البيانات الشخصية (PDPL) تجعل تشفير البيانات أثناء نقلها متطلبًا أساسيًا. إن Let's Encrypt هي جهة إصدار شهادات مجانية ومؤتمتة وغير ربحية، وموثوقة لدى جميع المتصفحات الرئيسية. وبدمجها مع Certbot، عميل ACME الرسمي، يمكنك إصدار الشهادات وتجديدها دون أي عمل يدوي ودون أي تكلفة.

يغطي هذا الدليل تثبيت شهادة على خادم Nginx (Ubuntu/Debian) والتحقق منها، والأهم من ذلك إعداد تجديد لا يتعطل. وأهمية جزء التجديد أكبر من أي وقت مضى: فقد كانت شهادات Let's Encrypt تاريخيًا صالحة لمدة 90 يومًا، والقطاع يتجه نحو مدد صلاحية أقصر (بدأ طرح نمط بصلاحية 45 يومًا خلال عام 2026). لم يعد التجديد اليدوي واقعيًا، لذا فإن الأتمتة أمر إلزامي.

إذا كنت تستضيف لدى Skyline Cloud على خادم افتراضي خاص (VPS) أو خادم سحابي داخل المملكة، فإن الخطوات أدناه تعمل دون أي تغيير على خادمك المحلي، مع إبقاء بياناتك وإنهاء اتصال TLS الخاص بك على الأراضي السعودية.

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

  • خادم سحابي أو VPS يعمل بنظام Ubuntu 22.04/24.04 أو Debian، مع صلاحية sudo.
  • نطاق (مثل example.com) مع سجل DNS من نوع A يشير إلى عنوان IP العام لخادمك. إذا كنت تدير DNS عبر خدمة DNS المُدارة من Skyline، فأضف السجل هناك وانتظر انتشاره.
  • تثبيت Nginx وتقديمه لموقعك على المنفذ 80.
  • فتح المنفذين 80 و443 في جدار الحماية وأي مجموعة أمان سحابية.

تحقّق من أن DNS يشير إلى خادمك قبل المتابعة:

dig +short example.com

يجب أن يطابق عنوان IP الناتج عنوان IP العام لخادمك، وإلا فسيفشل التحقق من النطاق.

الخطوة 1 — تثبيت Certbot

الطريقة المُوصى بها هي حزمة snap التي تصونها مؤسسة EFF وتبقيها محدّثة:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot

على التوزيعات التي لا تتوفر فيها snap، تعمل حزمة APT أيضًا:

sudo apt update
sudo apt install certbot python3-certbot-nginx

يتضمن كلا الأسلوبين إضافة Nginx المستخدمة أدناه.

الخطوة 2 — إصدار الشهادة

تقوم إضافة Nginx بالحصول على الشهادة وتعديل كتل الخادم لديك لتفعيل HTTPS في خطوة واحدة:

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

سيطلب منك Certbot بريدًا إلكترونيًا (يُستخدم لتنبيهات انتهاء الصلاحية والاسترداد) وسيطلب موافقتك على شروط ACME. وعندما يسألك عما إذا كنت تريد إعادة توجيه HTTP إلى HTTPS، اختر إعادة التوجيه (Redirect) حتى تكون كل حركة المرور مشفّرة.

خلف الكواليس، يستخدم Certbot تحدي HTTP-01: إذ يضع رمزًا تحت /.well-known/acme-challenge/ وتقوم Let's Encrypt بجلبه عبر المنفذ 80 لإثبات تحكّمك في النطاق.

بديل: webroot (دون تعديل Nginx)

إذا كنت تفضّل ألا يمسّ Certbot ملف الإعدادات لديك — وهو أمر شائع عندما تكون إعدادات TLS لديك مُولّدة من قوالب أو مُدارة — فاستخدم طريقة webroot للحصول على الشهادة فقط:

sudo certbot certonly --webroot -w /var/www/html -d example.com -d www.example.com

ثم تشير إلى الملفات بنفسك في كتلة خادم Nginx:

ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;

أشر دائمًا في Nginx إلى مسار live/، وليس أبدًا إلى ملفات archive/ المؤرّخة — فالروابط الرمزية في live/ تُحدّث مع كل عملية تجديد.

الخطوة 3 — التحقق من عمل HTTPS

أعد تحميل Nginx وافتح موقعك:

sudo nginx -t && sudo systemctl reload nginx

زر https://example.com. يُفترض أن ترى القفل. تأكد من الشهادة وسلسلتها من سطر الأوامر:

echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null | openssl x509 -noout -issuer -dates

يطبع هذا جهة الإصدار (Let's Encrypt) ونافذة الصلاحية.

الخطوة 4 — إعداد التجديد التلقائي

هذه هي الخطوة التي تمنع الأعطال في الساعة الثالثة فجرًا. يجدّد Certbot بناءً على المدة المتبقية من الصلاحية وليس وفق جدول ثابت، لذا فمن الآمن — بل من المقصود — تشغيل فحص التجديد بشكل متكرر.

تنشئ معظم عمليات التثبيت مهمة تجديد بالفعل. تحقق من وجودها:

systemctl list-timers | grep certbot

إذا رأيت certbot.timer، فإن التجديد التلقائي مفعّل. وهو يعمل افتراضيًا مرتين يوميًا مع تأخير عشوائي لتوزيع الحمل على خوادم Let's Encrypt. والتشغيل مرتين يوميًا هو توصية مؤسسة EFF نفسها، وهو يتعامل بمرونة مع شهادات الـ90 يومًا والشهادات الأقصر بـ45 يومًا على حد سواء.

اختبار التجديد دون إصدار فعلي

تأكد دائمًا من أن مسار التجديد يعمل من البداية إلى النهاية عبر تشغيل تجريبي يحاكي التجديد مقابل بيئة الاختبار:

sudo certbot renew --dry-run

نجاح التشغيل التجريبي يعني أن عمليات التجديد الفعلية ستنجح.

إعادة تحميل Nginx بعد التجديد

لا تُقدَّم الشهادة المجدَّدة إلا بعد إعادة تحميل Nginx. أضف خطاف نشر (deploy hook) ليحدث إعادة التحميل تلقائيًا عند كل تجديد:

sudo certbot renew --deploy-hook "systemctl reload nginx"

يحفظ Certbot هذا الخطاف ضمن إعدادات تجديد الشهادة، بحيث تتولى عمليات التجديد التلقائية اللاحقة إعادة تحميل Nginx نيابةً عنك. وعملية إعادة التحميل سلسة، ما يمنح تعطيلًا شبه معدوم للاتصالات الحيّة.

إذا لم يوجد مؤقّت (cron يدوي)

على الأنظمة النادرة التي لا تتوفر فيها مهمة مُهيّأة مسبقًا، أضف إدخال cron يشغّل الفحص مرتين يوميًا مع توقف عشوائي:

echo "0 0,12 * * * root sleep $((RANDOM \% 3600)) && certbot renew -q --deploy-hook 'systemctl reload nginx'" | sudo tee /etc/cron.d/certbot

طرق التجديد في لمحة

الطريقة متى تُستخدم تعيد تحميل Nginx
certbot.timer (systemd) الافتراضية على معظم الأنظمة؛ مُفضّلة عبر خطاف النشر
/etc/cron.d/certbot الأنظمة بلا مؤقتات systemd عبر خطاف النشر
certbot renew يدويًا لمرة واحدة / لاستكشاف الأعطال فقط أضف --deploy-hook

استكشاف الأخطاء وإصلاحها

  • فشل التحدي / انتهاء المهلة: يجب أن يكون المنفذ 80 قابلًا للوصول من الإنترنت أثناء الإصدار. تحقّق من جدار الحماية ومجموعة الأمان السحابية.
  • عدم تطابق DNS: أعد تشغيل dig +short example.com وتأكد من مطابقته لعنوان IP الخادم. اترك وقتًا للانتشار بعد تغييرات DNS.
  • تجاوز حد المعدل: تحدّ Let's Encrypt عدد الشهادات لكل نطاق في الأسبوع. استخدم --dry-run للاختبار حتى لا تستنفد حصتك.
  • تقديم مسار خاطئ: تأكد من أن Nginx يشير إلى /etc/letsencrypt/live/...، وليس archive/.

الخلاصة

أصبح لديك الآن شهادة SSL مجانية وموثوقة لدى المتصفحات على Nginx، مع تجديد يعمل دون تدخل ويعيد تحميل خادم الويب تلقائيًا — مرن في مواجهة مدد الصلاحية البالغة 90 يومًا والمدد الأقصر الأحدث على حد سواء. وينطبق المبدأ نفسه على البريد الإلكتروني: فتأمين نقل البريد مهم أيضًا، وتأتي خدمة استضافة البريد الإلكتروني للأعمال من Skyline مع TLS مُهيّأ لك. وللتعمّق أكثر في الشهادات والسلاسل والامتثال، اطّلع على مركز موارد شهادات SSL لدينا.

هل أنت مستعد لتشغيل هذا على خادم سريع متوافق مع PDPL داخل المملكة مع دعم عربي محلي؟ أنشئ حسابك في Skyline Cloud وانشر موقعًا مؤمَّنًا اليوم.

SKYLINE Engineering

@skyline

The engineering team at SKYLINE Industrial Solutions. We publish field-tested guides drawn from real KSA and GCC deployments.

See author profile
SKYLINE engineering services

Need this implemented for you?

Reading is free — building it right takes a team. SKYLINE engineers ship Skyline Cloud for Aramco vendors, banks, hospitals and government agencies across Saudi Arabia. Talk to us before you start.

Aramco Approved Contractor ISO 9001 · ISO 27001 SAMA CSF aligned NCA ECC ready 247+ KSA clients

Comments

0 total · 0 threads
Be the first to leave a comment.