المستوى المطلوب: مبتدئ. لو عندك موقع شغّال على خادم وعايز تحطّ عليه القفل الأخضر بدون ما تدفع قرش، المقال ده معمول ليك خطوة بخطوة.
اعمل HTTPS مجاني لموقعك بـ Let's Encrypt و Certbot في أقل من 10 دقائق
في نهاية المقال ده هيبقى موقعك بيفتح على https:// بقفل أخضر، والبيانات بين زوّارك وخادمك مشفّرة، وكل ده ببلاش ومن غير ما تجدّد الشهادة بإيدك كل شوية. أول ما تخلّص الخطوات، متصفح Chrome هيوقف يكتب "Not secure" جنب اسم موقعك.
المشكلة باختصار
لو موقعك لسه شغّال على http:// بس، فأي حد على نفس شبكة الـ WiFi أو مزوّد الإنترنت يقدر يقرا اللي بيتبعت (كلمات السر، الرسائل، بيانات الدفع) وهي ماشية. ومن سنة 2018 (إصدار Chrome 68) المتصفح بيعلّم أي صفحة HTTP بإنها "غير آمنة"، وده بيخوّف الزائر ويقلّل ثقته. الحل هو HTTPS: تشفير في الطريق + شهادة تثبت إن الموقع بتاعك فعلاً هو اللي بيرد.
الفكرة بمثال بسيط قبل الكلام التقني
تخيّل إنك بتبعت رسالة مهمة. لو بعتّها على كارت بوستال مكشوف، أي موظف بريد في الطريق يقدر يقراها. ده الـ HTTP. لكن لو حطيتها في ظرف مقفول ومختوم بختم رسمي، محدش يقدر يقراها في الطريق، والختم نفسه بيطمّن المستلم إنها جاية من مصدر موثوق. ده بالظبط الـ HTTPS: الظرف المقفول هو التشفير، والختم الرسمي هو الشهادة اللي بتصدرها جهة موثوقة.
علميًا: HTTPS بيشغّل بروتوكول TLS اللي بيشفّر كل حاجة ماشية بين المتصفح والخادم. والشهادة (Certificate) بيوقّع عليها طرف اسمه "سلطة إصدار الشهادات" (Certificate Authority). المتصفح عنده قايمة بالجهات دي بيثق فيها، فلمّا يلاقي شهادة موقّعة من واحدة منها، يعرض القفل. Let's Encrypt جهة إصدار مجانية بتصدر ملايين الشهادات يوميًا، وCertbot هو الأداة اللي بتطلب الشهادة وتركّبها لك أوتوماتيك.
الافتراضات قبل ما تبدأ
الشرح مبني على إن عندك:
- خادم Ubuntu أو Debian فيه Nginx شغّال وبيفتح الموقع على
http://. - دومين حقيقي (مثلاً
example.com) وسجلAبتاعه بيأشّر على IP الخادم. - المنفذين 80 و443 مفتوحين في الـ firewall.
لو الدومين مش مأشّر على الخادم، خطوة التحقق هتفشل، فظبّط ده الأول.
الخطوات العملية
- ادخل على الخادم وحدّث الحزم، وتأكد إن Nginx شغّال.
- ثبّت Certbot وإضافة Nginx بتاعته.
- شغّل Certbot وسيبه يعدّل إعداد Nginx لك.
- اختار تحويل كل زيارات
httpإلىhttpsتلقائيًا. - اتأكد إن التجديد التلقائي شغّال.
الأوامر بالترتيب على Ubuntu:
# 1) تحديث + التأكد إن firewall سامح للمنفذين
sudo apt update
sudo ufw allow 'Nginx Full' # بيفتح 80 و443
# 2) تثبيت Certbot عبر snap (الطريقة الرسمية الموصى بها)
sudo snap install core && sudo snap refresh core
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
# 3) إصدار الشهادة وتركيبها في Nginx تلقائيًا
sudo certbot --nginx -d example.com -d www.example.com
# 4) اختبار أن التجديد التلقائي شغّال (بدون تجديد فعلي)
sudo certbot renew --dry-run
وقت ما تشغّل الأمر رقم 3، Certbot هيسألك عن إيميل (للتنبيهات) وهيعرض عليك تحويل HTTP إلى HTTPS. اختار التحويل. بعد أقل من دقيقة، هيعدّل ملف Nginx بنفسه، يضيف listen 443 ssl; وإعادة التوجيه من المنفذ 80، ويعمل reload.
إزّاي بتشتغل من ورا الستار
Certbot بيكلّم Let's Encrypt ويقول "عايز شهادة لـ example.com". السيرفر بيرد بتحدّي (challenge): "حطّ الملف ده على /.well-known/acme-challenge/ عشان أتأكد إن الدومين ده فعلاً بتاعك". Certbot بيحطّه، Let's Encrypt بيتحقق، وبعدين بيصدر الشهادة. البروتوكول ده اسمه ACME، والرحلة كلها بتحصل في ثواني ومن غير أي تدخّل منك.
التحقق إنه اشتغل
- افتح الموقع في المتصفح: المفروض تلاقي القفل و
https://. - من الطرفية:
curl -I https://example.comلازم يرجّعHTTP/2 200. - افحص جودة الإعداد على SSL Labs واستهدف تقدير A.
الأرقام والـ trade-offs
شهادة Let's Encrypt صالحة 90 يوم بس، مش سنة زي الشهادات المدفوعة. ده مقصود عشان يجبرك على الأتمتة. المكسب: مجانية بالكامل (0 دولار) والتجديد بيحصل لوحده. الثمن: لازم تعتمد على مؤقّت Certbot اللي بيشتغل مرتين يوميًا ويجدّد الشهادة تلقائيًا لمّا يفضلها أقل من 30 يوم؛ لو الأتمتة دي وقفت، موقعك هيقع بعد انتهاء الشهادة. علشان كده أمر certbot renew --dry-run مهم: بيتأكد إن التجديد شغّال قبل ما تحتاجه. خُد بالك كمان من حدود الإصدار: Let's Encrypt بيسمح بـ 50 شهادة لكل دومين في الأسبوع، فمتفضلش تعيد الإصدار في تجارب كتير.
متى لا تستخدم هذه الطريقة
- لو موقعك على منصة مُدارة زي Vercel أو Netlify أو cPanel، فالـ HTTPS بيتظبط تلقائيًا ومش محتاج Certbot خالص.
- لو محتاج شهادة wildcard (تغطّي
*.example.com)، تحدّي HTTP-01 مش بيدعمها؛ هتحتاج تحدّي DNS-01 بدلها. - لو الخادم داخلي أو على شبكة خاصة والإنترنت مش بيوصله، التحقق هيفشل؛ استخدم شهادة داخلية أو DNS-01.
- لو بتشتغل بنك أو جهة محتاجة تثبت هوية المؤسسة (OV/EV)، شهادات Let's Encrypt بتثبت ملكية الدومين بس، مش هوية الشركة.
الخطوة التالية
افتح الطرفية على خادمك دلوقتي وشغّل sudo certbot --nginx -d yourdomain.com بعد ما تبدّل الدومين باسمك، وبعدها على طول sudo certbot renew --dry-run. لو الأمر التاني رجّع "success" من غير أخطاء، انت خلّصت والموقع مأمّن ومتجدّد لوحده.
المصادر
- Let's Encrypt — كيف يعمل و ACME: letsencrypt.org/how-it-works
- Let's Encrypt — حدود الإصدار (Rate Limits): letsencrypt.org/docs/rate-limits
- Certbot (EFF) — دليل التثبيت الرسمي لـ Nginx: certbot.eff.org/instructions
- Google Chrome — إعلان تعليم مواقع HTTP كغير آمنة: blog.chromium.org
- Mozilla — مولّد إعدادات SSL الآمنة: ssl-config.mozilla.org