🔧
أخطاء SSL الشائعة: 10 مشاكل وحلولها خطوة بخطوة
دليل عملي شامل لتشخيص وإصلاح جميع أخطاء SSL التي تواجه أصحاب المواقع
محتويات المقال
مقدمة عن أخطاء SSL
تُعدّ أخطاء SSL من أكثر المشكلات التقنية التي تواجه أصحاب المواقع الإلكترونية، خاصة بعد أن أصبح بروتوكول HTTPS معياراً أساسياً لجميع المواقع. عندما تظهر أخطاء SSL في متصفح الزائر، فإنها تعرض رسالة تحذيرية تمنعه من الوصول إلى موقعك، مما يؤدي إلى فقدان الزوار وتراجع ترتيب الموقع في محركات البحث.
وفقاً لإحصائيات تقرير الشفافية من Google، فإن أكثر من 95% من حركة المرور على Chrome تتم عبر HTTPS. هذا يعني أن أي خطأ في شهادة SSL سيؤثر مباشرة على تجربة الغالبية العظمى من زوارك. في هذا الدليل الشامل، سنستعرض أشهر 10 أخطاء SSL وكيفية إصلاح كل منها خطوة بخطوة.
سواء كنت تستخدم شهادة Let’s Encrypt المجانية أو شهادة مدفوعة، فإن فهم أخطاء SSL وأسبابها سيوفر عليك ساعات من البحث واستكشاف الأخطاء. لنبدأ بأكثرها شيوعاً.
1. ERR_CERT_DATE_INVALID – انتهاء صلاحية الشهادة
يُعدّ خطأ ERR_CERT_DATE_INVALID من أكثر أخطاء SSL شيوعاً، ويظهر عندما تنتهي صلاحية شهادة SSL أو عندما يكون تاريخ الجهاز غير صحيح. يعرض المتصفح رسالة “اتصالك ليس خاصاً” مع رمز الخطأ NET::ERR_CERT_DATE_INVALID.
الأسباب المحتملة
- انتهاء صلاحية شهادة SSL ولم يتم تجديدها
- تاريخ ووقت جهاز الزائر غير صحيحين
- مشكلة في التجديد التلقائي لشهادة Let’s Encrypt
خطوات الإصلاح
أولاً، تحقق من تاريخ انتهاء الشهادة باستخدام الأمر التالي:
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null | openssl x509 -noout -datesإذا كانت الشهادة منتهية، جدّدها يدوياً عبر Certbot:
sudo certbot renew --force-renewal
sudo systemctl reload nginxولمنع تكرار هذا الخطأ مستقبلاً، تأكد من إعداد cron job للتجديد التلقائي:
0 0 1 * * /usr/bin/certbot renew --quiet && systemctl reload nginx2. ERR_CERT_COMMON_NAME_INVALID – عدم تطابق اسم النطاق
يظهر هذا الخطأ من أخطاء SSL عندما لا يتطابق اسم النطاق في شهادة SSL مع النطاق الذي يحاول الزائر الوصول إليه. مثلاً، إذا كانت الشهادة صادرة لـ www.example.com لكن الزائر يصل عبر example.com بدون www.
خطوات الإصلاح
- تحقق من أن الشهادة تغطي جميع أشكال النطاق (مع www وبدونها)
- أعد إصدار الشهادة لتشمل جميع النطاقات الفرعية
- استخدم شهادة Wildcard إذا كان لديك عدة نطاقات فرعية
sudo certbot certonly --nginx -d example.com -d www.example.com -d mail.example.comأو استخدم شهادة wildcard لتغطية جميع النطاقات الفرعية:
sudo certbot certonly --manual --preferred-challenges=dns -d example.com -d *.example.com3. Mixed Content – المحتوى المختلط
خطأ المحتوى المختلط (Mixed Content) هو من أخطاء SSL الخفية التي لا تمنع تحميل الموقع بالكامل، لكنها تُظهر تحذيراً في المتصفح وتمنع ظهور القفل الأخضر. يحدث هذا عندما يحتوي موقع HTTPS على موارد (صور، سكريبتات، CSS) يتم تحميلها عبر HTTP.
كيفية اكتشاف المحتوى المختلط
افتح أدوات المطور في المتصفح (F12) وانتقل إلى تبويب Console. ستجد تحذيرات مثل:
Mixed Content: The page at 'https://example.com' was loaded over HTTPS,
but requested an insecure resource 'http://example.com/image.jpg'الإصلاح في WordPress
أسهل طريقة هي استخدام إضافة مثل Really Simple SSL، أو يمكنك إصلاح المشكلة يدوياً بتحديث الروابط في قاعدة البيانات:
wp search-replace 'http://example.com' 'https://example.com' --all-tables --dry-runبعد التأكد من النتائج، نفّذ الأمر بدون –dry-run. كما يمكنك إضافة هذا الكود إلى ملف .htaccess لإجبار تحميل جميع الموارد عبر HTTPS:
Header always set Content-Security-Policy "upgrade-insecure-requests"4. ERR_SSL_PROTOCOL_ERROR
يظهر خطأ ERR_SSL_PROTOCOL_ERROR عندما يفشل المتصفح في إنشاء اتصال آمن مع السيرفر بسبب مشكلة في بروتوكول SSL/TLS. هذا من أخطاء SSL التي قد تكون مربكة لأنها لا تحدد المشكلة بدقة.
الأسباب والحلول
- إصدار TLS قديم: تأكد من أن السيرفر يدعم TLS 1.2 أو 1.3 على الأقل
- إعدادات SSL خاطئة في Nginx أو Apache
- مشكلة في ملف الشهادة أو المفتاح الخاص
- جدار حماية يحجب المنفذ 443
تحقق من إعدادات TLS في Nginx:
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
ssl_prefer_server_ciphers off;يمكنك اختبار بروتوكولات TLS المدعومة باستخدام:
nmap --script ssl-enum-ciphers -p 443 example.com5. NET::ERR_CERT_AUTHORITY_INVALID
يظهر هذا الخطأ عندما تكون شهادة SSL صادرة من جهة غير موثوقة (Certificate Authority). هذا من أخطاء SSL الشائعة مع الشهادات الذاتية التوقيع (Self-Signed) أو عندما تكون سلسلة الشهادات (Certificate Chain) غير مكتملة.
خطوات الإصلاح
- تأكد من أنك تستخدم شهادة من جهة موثوقة مثل Let’s Encrypt أو DigiCert
- تحقق من أن سلسلة الشهادات كاملة (الشهادة + الشهادات الوسيطة)
- في Nginx، تأكد من دمج الشهادات بالترتيب الصحيح
# دمج الشهادة مع الشهادات الوسيطة
cat certificate.crt ca_bundle.crt > fullchain.crt
# إعداد Nginx
ssl_certificate /etc/ssl/fullchain.crt;
ssl_certificate_key /etc/ssl/private.key;للتحقق من سلسلة الشهادات، استخدم أداة SSL Labs المجانية التي تقدم تقريراً مفصلاً عن حالة شهادتك.
6. Too Many Redirects (ERR_TOO_MANY_REDIRECTS)
خطأ “Too Many Redirects” يحدث عندما يدخل الموقع في حلقة إعادة توجيه لا نهائية بين HTTP و HTTPS. هذا من أخطاء SSL المحبطة التي تمنع الوصول للموقع تماماً.
الأسباب الشائعة
- إعادة توجيه مزدوجة: في .htaccess وفي إعدادات WordPress
- CDN مثل Cloudflare مع إعداد SSL غير متوافق
- تعارض بين إضافات WordPress
الإصلاح
إذا كنت تستخدم Cloudflare، تأكد من ضبط وضع SSL على “Full (Strict)” وليس “Flexible”. ثم تحقق من ملف wp-config.php:
// أضف هذا الكود قبل سطر "That's all, stop editing!"
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
define('FORCE_SSL_ADMIN', true);7. SSL Handshake Failed
خطأ SSL Handshake Failed يحدث عندما يفشل التفاوض بين المتصفح والسيرفر على بروتوكول التشفير. هذا من أخطاء SSL الأكثر تعقيداً ويتطلب فحصاً دقيقاً لإعدادات السيرفر.
أسباب فشل المصافحة
- عدم توافق إصدارات TLS بين المتصفح والسيرفر
- شهادة SSL تالفة أو غير مكتملة
- تاريخ ووقت السيرفر غير دقيق
- SNI (Server Name Indication) غير مدعوم
لتشخيص المشكلة، استخدم أمر openssl للتحقق من المصافحة:
openssl s_client -connect example.com:443 -tls1_2 -servername example.comإذا كان السيرفر يستخدم SNI، تأكد من إعداده بشكل صحيح في virtual host:
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
}8. ERR_CERT_REVOKED – الشهادة الملغاة
يظهر خطأ ERR_CERT_REVOKED عندما تكون شهادة SSL قد تم إلغاؤها من قبل الجهة المُصدِرة. يُعدّ هذا من أخطاء SSL الخطيرة لأنه يعني أن الشهادة لم تعد موثوقة.
لماذا يتم إلغاء الشهادة؟
- تسريب المفتاح الخاص (Private Key)
- طلب صاحب الموقع إلغاءها
- اكتشاف أن الشهادة صدرت بشكل خاطئ
- خرق أمني في جهة الإصدار
الإصلاح
الحل الوحيد هو إصدار شهادة جديدة تماماً مع مفتاح خاص جديد:
# حذف الشهادة القديمة
sudo certbot revoke --cert-path /etc/letsencrypt/live/example.com/cert.pem
sudo certbot delete --cert-name example.com
# إصدار شهادة جديدة
sudo certbot certonly --nginx -d example.com -d www.example.com9. أخطاء HSTS
HSTS (HTTP Strict Transport Security) هو آلية أمان تجبر المتصفح على استخدام HTTPS فقط. لكن إعداده بشكل خاطئ قد يسبب مشاكل خطيرة تندرج ضمن أخطاء SSL التي يصعب تشخيصها.
مشاكل HSTS الشائعة
- تفعيل HSTS قبل التأكد من عمل SSL بشكل صحيح
- استخدام includeSubDomains مع نطاقات فرعية لا تدعم HTTPS
- تعيين max-age طويل جداً أثناء فترة الاختبار
الإعداد الصحيح لـ HSTS يجب أن يتم تدريجياً. ابدأ بـ max-age قصير:
# ابدأ بـ 5 دقائق للاختبار
Header always set Strict-Transport-Security "max-age=300"
# بعد التأكد من عمل كل شيء، زد المدة تدريجياً
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"إذا أردت إزالة موقعك من قائمة HSTS preload، استخدم hstspreload.org لتقديم طلب الإزالة. لكن تذكر أن العملية قد تستغرق أسابيع.
أدوات فحص SSL
لتشخيص أخطاء SSL بسرعة واحترافية، إليك أفضل الأدوات المتاحة:
أدوات مجانية عبر الإنترنت
- SSL Labs Server Test: الأداة الأشهر لفحص شامل لإعدادات SSL وتقييمها بدرجة من A+ إلى F
- Why No Padlock: أداة متخصصة في كشف مشاكل المحتوى المختلط
- Certificate Search (crt.sh): للبحث عن جميع الشهادات المُصدرة لنطاقك
أدوات سطر الأوامر
# فحص شامل للشهادة
openssl s_client -connect example.com:443 -servername example.com | openssl x509 -text -noout
# التحقق من سلسلة الشهادات
openssl verify -CAfile ca_bundle.crt certificate.crt
# فحص تاريخ الانتهاء لجميع المواقع دفعة واحدة
for domain in site1.com site2.com site3.com; do
echo -n "$domain: "
echo | openssl s_client -servername $domain -connect $domain:443 2>/dev/null | openssl x509 -noout -enddate
doneمن المهم إجراء فحص دوري لشهادات SSL خاصة قبل موعد انتهاء صلاحيتها. يمكنك إعداد تنبيه تلقائي يُرسل إليك بريداً إلكترونياً قبل 30 يوماً من انتهاء الشهادة لتفادي أخطاء SSL غير المتوقعة.
الخلاصة
أخطاء SSL قد تبدو معقدة في البداية، لكن مع فهم أسباب كل خطأ واتباع خطوات الإصلاح المناسبة، يمكنك حل معظمها في دقائق. النقاط الأساسية التي يجب تذكرها:
- معظم أخطاء SSL تعود لانتهاء الصلاحية أو عدم تطابق اسم النطاق
- التجديد التلقائي للشهادات يمنع 80% من المشاكل
- أدوات مثل SSL Labs تساعدك في اكتشاف المشاكل قبل أن يراها الزوار
- سلسلة الشهادات الكاملة ضرورية لتجنب أخطاء SSL في المتصفحات المختلفة
- اختبر إعدادات HSTS تدريجياً لتجنب حبس نفسك خارج الموقع
حماية موقعك مع مرام هوست
شهادات SSL مجانية مع تجديد تلقائي على جميع خطط الاستضافة. لا تقلق بشأن أخطاء SSL مرة أخرى. ابدأ من هنا.
الأسئلة الشائعة
كيف أعرف أن شهادة SSL موقعي ستنتهي قريباً؟
يمكنك التحقق من تاريخ انتهاء الشهادة بالنقر على أيقونة القفل في شريط العنوان في المتصفح، أو باستخدام أمر openssl من سطر الأوامر. شهادات Let’s Encrypt تصلح لمدة 90 يوماً ويتم تجديدها تلقائياً قبل 30 يوماً من الانتهاء.
هل أخطاء SSL تؤثر على ترتيب موقعي في Google؟
نعم بشكل مباشر. Google تعتبر HTTPS عامل ترتيب، والمواقع التي تعرض أخطاء SSL تفقد ثقة محرك البحث مما يؤدي لتراجع ترتيبها. إضافة لذلك، الزوار يغادرون فوراً عند رؤية تحذير أمني، مما يزيد معدل الارتداد.
هل يمكنني استخدام شهادة SSL ذاتية التوقيع لموقع إنتاجي؟
لا يُنصح بذلك لأن الشهادات الذاتية ستعرض تحذيراً أمنياً لجميع الزوار. استخدم شهادة Let’s Encrypt المجانية بدلاً من ذلك، فهي مقبولة من جميع المتصفحات وتتجدد تلقائياً.
ما الفرق بين SSL و TLS؟
SSL هو البروتوكول القديم وقد تم إيقافه. TLS هو خليفته الأحدث والأكثر أماناً. رغم أن الجميع يستخدم مصطلح “SSL”، إلا أن البروتوكول المستخدم فعلياً هو TLS 1.2 أو TLS 1.3. جميع أخطاء SSL المذكورة في هذا الدليل تنطبق على TLS أيضاً.
مقالات ذات صلة
