كيفية إصلاح خطأ اتصال SSL: الأسباب والحلول
كيفية إصلاح خطأ اتصال SSL: الأسباب والحلول

كيفية إصلاح خطأ اتصال SSL في Apache: الأسباب والحلول

0 الأسهم
0
0
0
0

مقدمة

أخطاء اتصال SSL مشكلة شائعة وحرجة قد تمنع الاتصال الآمن بين العميل والخادم. تحدث هذه الأخطاء عند فشل عملية مصافحة TLS؛ أي عدم قدرة المتصفح أو العميل والخادم على إنشاء اتصال HTTPS آمن. يمكن أن يؤدي الفشل في أي مرحلة، بدءًا من التفاوض على البروتوكول وحتى التحقق النهائي من الشهادة، إلى هذا النوع من الأخطاء.

عندما يحدث مثل هذا الخطأ، تظهر رسائل مثل فشل اتصال SSL، خطأ_بروتوكول_SSL أو فشل مصافحة SSL في متصفحك أو تطبيقك. قد تؤثر هذه المشكلة على تصفح الموقع، أو واجهات برمجة التطبيقات، أو البريد الإلكتروني، أو أي خدمة تستخدم اتصالات مشفرة.

في هذه المقالة، سأوضح لك كيفية اكتشاف "خطأ اتصال SSL" وإصلاحه في مجموعة متنوعة من السيناريوهات — بما في ذلك المتصفحات وأدوات سطر الأوامر وتكوينات الخادم — للحفاظ على اتصال موقعك أو تطبيقك بشكل آمن.


النقاط الرئيسية

  • تحدث معظم أخطاء SSL (حوالي 80%) بسبب ثلاثة أسباب رئيسية:

    1. شهادة منتهية الصلاحية أو موقعة ذاتيًا والتي تحتاج إلى تجديد أو استبدال.

    2. عدم تطابق اسم النطاق (CN/SAN) في الشهادة للمجال المطلوب. .

    3. لا يوجد CA وسيطيعني هذا أن سلسلة الشهادة غير مكتملة ولم يتم إجراء التحقق الكامل. .

  • لتشخيص المشاكل بدقة، يمكنك استخدام أدوات مثل:

    • curl -v https://example.com (الوضع المطول)

    • openssl s_client -connect host:443 -servername host -showcerts للتحقق من سلسلة الشهادات الكاملة

  • أبداً لا تقم بتعطيل التحقق من SSL في بيئة الإنتاج (على سبيل المثال عن طريق تجعيد -k أو التحقق=خطأ) — وهذا فقط يخفي المشكلة ويثير التساؤلات حول الأمان.

  • موصى به: قم بتجديد الشهادات تلقائيًا، وتمكين استخدام TLS 1.3، وإعداد نظام لمراقبة حالة الشهادة وOCSP. ديجيتال أوشن


المتطلبات الأساسية للتحقق من خطأ اتصال SSL

قبل أن تبدأ في استكشاف الأخطاء وإصلاحها، يجب أن تكون لديك المتطلبات التالية: خادم يعمل بنظام تشغيل Linux (مثل Ubuntu)، والوصول إلى الجذر أو sudo، ومعرفة أساسية بسطر الأوامر، ونطاق تم تكوينه على الخادم، وفهم أساسي لمفاهيم SSL/TLS.


ما هو خطأ اتصال SSL؟

عند إنشاء اتصال TLS، يجب أن يتفق العميل والخادم على إصدار البروتوكول ومجموعة التشفير وسلسلة الشهادات، ويجب التحقق من صحة الشهادة. في حال فشل أي من هذه الخطوات، ينقطع الاتصال ويحدث خطأ في اتصال SSL. 

قد تختلف رسالة الخطأ، بما في ذلك:

  • curl: (35) خطأ اتصال SSL

  • SSL: فشل التحقق من الشهادة (في طلبات بايثون)

  • خطأ_بروتوكول_SSL (في المتصفح)

  • فشل المصافحة (في OpenSSL)


الأسباب الرئيسية لخطأ SSL Connect والحل السريع

سببشرح/حل مختصر
شهادة منتهية الصلاحية أو موقعة ذاتيًاتجديد الشهادة (على سبيل المثال باستخدام Certbot / Let's Encrypt) أو تثبيت شهادة من سلطة تصديق موثوقة
عدم تطابق اسم النطاق (CN/SAN)أعد إصدار الشهادة بالنطاق الصحيح، مع التأكد من أن CN/SAN يتطابق مع النطاق المرجعي. 
لا يوجد CA وسيطتثبيت سلسلة الشهادات الكاملة (الورقة + الوسيطة) على الخادم 
إصدار TLS أو التشفير غير صحيحتمكين TLS 1.2/1.3 واختيار التشفيرات الحديثة في تكوين خادم الويب 
وقت النظام (الساعة) غير صحيح.مزامنة ساعة النظام مع NTP (timedatectl set-ntp true)
تكوين جدار الحماية أو الشبكةتأكد من أن المنفذ 443 مفتوح وأن حركة مرور HTTPS غير محظورة
سلطة التصديق غير صالحةاستخدم شهادة CA صالحة أو قم بإضافة CA إلى جذور النظام الموثوقة.

تشخيص وإصلاح مشاكل الخادم الشائعة عند حدوث خطأ اتصال SSL

عندما يكون هناك خطأ خطأ في اتصال SSL إذا واجهت هذا الخطأ، فعادةً ما يكون السبب مشكلة في مسار إنشاء اتصال آمن بين العميل (نظامك) والخادم الوجهة. قد يكون سبب هذا الخطأ إعدادات SSL غير صحيحة، أو إصدارات بروتوكول غير متوافقة، أو مشاكل في نظام أسماء النطاقات (DNS)، أو مشاكل في الشهادات، أو حتى جدار الحماية. في هذا القسم، سنشرح بالتفصيل كيفية تشخيص هذا الخطأ وإصلاحه خطوة بخطوة على الخادم.

1. تحقق من شهادة SSL على الخادم

الخطوة الأولى هي التأكد من أن شهادة SSL المثبتة على الخادم صالحة:

  • الشهادة لم تنتهي صلاحيتها.

  • اسم المجال (CN أو SAN) يتطابق مع العنوان المطلوب.

  • تم إعداد سلسلة الشهادات بشكل صحيح (الشهادات الوسيطة).

للمراجعة التفصيلية:

openssl s_client -connect example.com:443 -servername example.com

في الإخراج، تحقق مما يلي:

  • التحقق من رمز الإرجاع: 0 (موافق)

  • وجود سلسلة كاملة (سلسلة الشهادات)

  • عرض جهة إصدار موثوقة (على سبيل المثال Let's Encrypt، Cloudflare، Sectigo)

إذا كان رمز الإرجاع غير صفر، فهذا يعني أن هناك مشكلة SSL على جانب الخادم.


2. تحقق من إصدارات TLS وخوارزميات التشفير (Cipher Suites)

يجب أن يتشارك العميل والخادم بروتوكولًا واحدًا وشيفرة واحدة على الأقل. يمكن للخادم دعم TLS 1.3 فقط، بينما يمكن للعميل القديم دعم TLS 1.0 فقط.

للتحقق من البروتوكولات:

nmap --script ssl-enum-ciphers -p 443 example.com

نقاط يجب مراعاتها:

  • أن تكون نشطًا TLS 1.2 أو TLS 1.3

  • تعطيل الإصدارات غير الآمنة مثل TLS 1.0 وSSLv3 (اختياري ولكن موصى به)

  • وجود شفرات قياسية مثل:

    • TLS_AES_256_GCM_SHA384

    • ECDHE-RSA-AES256-GCM-SHA384

إذا لم يكن هناك إصدار أو تشفير متوافق، فسيتم قطع الاتصال ويتم عرض خطأ اتصال SSL.


3. تحقق من إعدادات جدار الحماية والمنفذ

في بعض الأحيان يتم حظر اتصال SSL بواسطة جدار الحماية حتى قبل بدء المصافحة.

نقاط هامة:

  • ميناء 443/TCP كن منفتحا.

  • يسمح جدار الحماية البرمجي (UFW / firewalld / CSF) بحركة المرور HTTPS.

مراجعة سريعة:

sudo ufw status

أو:

sudo iptables -L -n

إذا كنت تستخدم Cloudflare أو CDN، فتأكد من:

  • وضع SSL/TLS صحيح (كامل/صارم بالكامل)

  • توجد عناوين IP الخاصة بشبكة CDN في القائمة المسموح بها.


4. اختبار الاتصال من الخادم إلى الوجهة

للتحقق من وجود مشاكل في الشبكة:

curl -v https://example.com

يمكن أن يكشف الإخراج عن المشكلات التالية:

  • رفض اتصال

  • مشكلة شهادة SSL

  • غير قادر على الحصول على شهادة المصدر المحلي

  • فشل المصافحة

  • نفذ الوقت

أو اختبار ping و traceroute:

ping example.com traceroute example.com

في حالة انقطاع مسار الشبكة، لن يتم تنفيذ مصافحة SSL.


5. التحقق من وجود مشكلات DNS

إذا قدم خادم DNS عنوانًا خاطئًا، فسيتم إرسال الاتصال إلى خادم آخر ويحدث عدم تطابق SSL.

امتحان:

dig example.com nslookup example.com

نقاط التفتيش:

  • عنوان IP صحيح.

  • تم الانتهاء من نشر DNS.

  • سجل AAAA (IPv6) ليس متناقضًا (إن وجد)

في بعض الأحيان يؤدي تعطيل IPv6 إلى حل المشكلة.


6. تحقق من الوقت والتاريخ على الخادم

يعتمد بروتوكول SSL بشكل كبير على التوقيت الصحيح. حتى خطأ مدته 5 دقائق قد يُسبب مشاكل.

مراجعة:

timedatectl

في حالة وجود مشكلة:

sudo timedatectl set-ntp true

إذا كان وقت الخادم غير صحيح، فسيعتقد النظام أن الشهادة غير صالحة بعد أو انتهت صلاحيتها.


7. تحقق من نظام حزمة CA

إذا لم يتعرف نظامك على السلطات التصديقية الموثوقة، فحتى الشهادة السليمة ستعطي خطأ.

في توزيعات لينكس:

sudo update-ca-certificates

أو:

sudo yum update ca-certificates

8. تحقق من وجود أدوات Proxy أو MitM

إذا كان هناك وكيل أو مرشح حركة مرور في مسار الاتصال، فقد يتم استبدال الشهادة وقد يحدث عدم تطابق.

نقاط التفتيش:

  • إعدادات الوكيل في بيئة curl أو النظام

  • إيقاف تشغيل برنامج مكافحة الفيروسات أو IDS/IPS مثل Suricata

  • اختبار بدون وكيل:

curl -v --noproxy '*' https://example.com

9. التحقق من الأخطاء على جانب التطبيق أو خادم الويب

قد يكون هناك مشاكل في تكوين Nginx/Apache:

نجينكس:

  • مسار السلسلة:

ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;

أباتشي:

SSLCertificateFile /etc/ssl/certs/cert.pem
SSLCertificateChainFile /etc/ssl/certs/chain.pem
SSLCertificateKeyFile /etc/ssl/private/key.pem

إذا كان ترتيب السلسلة خاطئًا → خطأ اتصال SSL مؤكد.

مزامنة وقت النظام

إذا كانت ساعة الخادم غير صحيحة، فقد لا تبدو الشهادة صالحة. زامن الوقت مع NTP.


الأخطاء الشائعة التي يجب تجنبها

  • استخدام خيارات مثل في حليقة أو التحقق=خطأ في Python لتجاوز SSL — يؤدي هذا إلى إضعاف الأمان وإخفاء الخطأ فقط. ديجيتال أوشن

  • استخدام شهادة ذاتية التوقيع في بيئة الإنتاج

  • بافتراض أن SSL يعمل دائمًا - دون مراقبة تواريخ انتهاء الصلاحية أو سلاسل الشهادات

  • لا يتحقق الخادم من سلسلة الشهادات الكاملة


الاستنتاج النهائي

يُعد خطأ اتصال SSL أحد أكثر العوائق شيوعًا التي تعيق الاتصال الآمن بين المتصفح أو العميل والخادم. ولكن من خلال التشخيص الدقيق للسبب - سواءً كان انتهاء صلاحية الشهادة، أو عدم تطابق النطاق، أو عدم اكتمال التكوين - وتطبيق أفضل الحلول، يُمكن حل هذه المشكلة بسهولة وأمان. لا تُضحِّ دائمًا بالأمان من أجل الراحة؛ فتعطيل مصادقة SSL لا يُجدي نفعًا إلا مؤقتًا ويُشكل خطرًا أمنيًا.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

قد يعجبك أيضاً