بنية SSL في Cloudflare
يعمل Cloudflare كـ reverse proxy بين موقعك وزوارك. وتجري اتصالات SSL على مرحلتين:
- الزائر ↔ Cloudflare: تُستخدم شهادة Universal SSL من Cloudflare
- Cloudflare ↔ الخادم الأصلي (Origin): تُستخدم شهادة SSL المثبّتة على خادمك الأصلي (في وضع Full/Strict)
بسبب هذه البنية ذات الطبقتين قد تظهر أخطاء SSL خاصة بـ Cloudflare.
أوضاع SSL في Cloudflare
| الوضع | الزائر ↔ CF | CF ↔ Origin | هل يلزم SSL على Origin؟ |
|---|---|---|---|
| Off | HTTP | HTTP | لا |
| Flexible | HTTPS | HTTP | لا |
| Full | HTTPS | HTTPS | تكفي شهادة Self-signed |
| Full (Strict) | HTTPS | HTTPS | شهادة صالحة |
Error 525: SSL Handshake Failed
يحدث هذا الخطأ عندما تفشل مصافحة SSL (handshake) بين Cloudflare والخادم الأصلي.
الأسباب
- لا توجد شهادة SSL على الخادم الأصلي (في وضع Full/Strict)
- شهادة الخادم الأصلي self-signed والوضع "Full (Strict)"
- إصدار TLS قديم على الخادم الأصلي (TLS 1.0/1.1)
- عدم تطابق الشهادة والمفتاح (key)
- الخادم الأصلي لا يستمع على المنفذ 443
الحل
- ثبِّت شهادة SSL على الخادم الأصلي (Cloudflare Origin Certificate مجانية)
- اضبط وضع SSL على "Full" أو "Full (Strict)"
- فعِّل TLS 1.2+
- تأكد من أن المنفذ 443 مفتوح ومضبوط بشكل صحيح
# إنشاء Cloudflare Origin Certificate:
# Dashboard → SSL/TLS → Origin Server → Create Certificate
# الصلاحية: حتى 15 سنة (تعمل فقط خلف Cloudflare proxy)
Error 526: Invalid SSL Certificate
يحدث هذا الخطأ في وضع "Full (Strict)" إذا كانت شهادة SSL على الخادم الأصلي غير صالحة أو غير موثوقة.
الأسباب
- شهادة الخادم الأصلي منتهية الصلاحية
- شهادة Self-signed (تُرفض في وضع Strict)
- الشهادة لا تطابق النطاق
- سلسلة الشهادات الوسيطة ناقصة
الحل
- استخدم شهادة صالحة من CA موثوقة أو أنشئ Cloudflare Origin Certificate
- غيّر وضع SSL إلى "Full" (حل مؤقت — يقبل self-signed)
- تحقق من أن شهادة الخادم الأصلي تطابق النطاق وأن السلسلة الوسيطة كاملة
Error 521/522: مشكلات الوصول إلى Origin
ليست أخطاء SSL مباشرة، لكنها قد ترتبط بإعدادات SSL:
- 521 (Web Server is Down): الخادم الأصلي لا يعمل. شغِّل خادم الويب.
- 522 (Connection Timed Out): Cloudflare لا يستطيع الوصول إلى الخادم الأصلي. أضِف عناوين IP الخاصة بـ Cloudflare إلى القائمة البيضاء (whitelist) في جدار الحماية.
# أضِف نطاقات IP الخاصة بـ Cloudflare إلى القائمة البيضاء
# https://www.cloudflare.com/ips/
# في Nginx:
allow 173.245.48.0/20;
allow 103.21.244.0/22;
allow 103.22.200.0/22;
allow 103.31.4.0/22;
allow 141.101.64.0/18;
allow 108.162.192.0/18;
allow 190.93.240.0/20;
allow 188.114.96.0/20;
allow 197.234.240.0/22;
allow 198.41.128.0/17;
deny all;
Redirect Loop (حلقة إعادة التوجيه)
في وضع SSL "Flexible"، إذا كانت على الخادم الأصلي إعادة توجيه من HTTP إلى HTTPS نشأت حلقة لا نهائية.
الحل
- الأفضل: اضبط وضع SSL على "Full (Strict)" واستخدم شهادة SSL حقيقية على الخادم الأصلي
- البديل: أزِل إعادة التوجيه من HTTP إلى HTTPS على الخادم الأصلي (في وضع Flexible)
- فعِّل خاصية "Always Use HTTPS" في Cloudflare Dashboard
مشكلات Mixed Content
عندما يكون Cloudflare في وضع "Flexible"، يعمل الخادم الأصلي عبر HTTP فتُولَّد في الكود روابط تبدأ بـ http:// . ولأن الزائر يتصل عبر HTTPS ينشأ Mixed Content.
الحل
- فعِّل "Automatic HTTPS Rewrites" من المسار: Cloudflare Dashboard → SSL/TLS → Edge Certificates
- ثبِّت SSL على الخادم الأصلي وانتقل إلى وضع "Full (Strict)" (الحل الجذري)
قائمة التحقق لإعدادات SSL في Cloudflare
| البند | الإعداد الموصى به |
|---|---|
| SSL Mode | Full (Strict) |
| Always Use HTTPS | مفعّل |
| Automatic HTTPS Rewrites | مفعّل |
| Minimum TLS Version | TLS 1.2 |
| TLS 1.3 | مفعّل |
| HSTS | مفعّل (max-age: سنة واحدة) |
| Origin Certificate | مثبّتة |
الخلاصة
تنشأ أخطاء SSL في Cloudflare غالبًا من اختيار وضع SSL غير صحيح. والجمع بين وضع "Full (Strict)" وشهادة SSL صالحة على الخادم الأصلي يمنع معظم أخطاء 525 و 526 و redirect loop. وتوفر Cloudflare Origin Certificate حلًا مجانيًا صالحًا حتى 15 سنة.