bg-blog-articles

كيفية التحقق من الشهادة باستخدام OpenSSL

إذا كنت تدير موقعًا إلكترونيًا أو خادمًا، فإن فحص شهادة SSL/TLS الخاصة بك بانتظام هو أحد المهام التي لا يمكنك تجاهلها. فالشهادة منتهية الصلاحية أو غير المهيأة بشكل صحيح تعني ظهور تحذيرات المتصفح، وانهيار الثقة، واحتمالية توقف الخدمة.

How to Check a Certificate With OpenSSL

OpenSSL — مجموعة الأدوات مفتوحة المصدر التي تعمل عبر سطر الأوامر، والمستخدمة في كل توزيعة لينكس تقريبًا، وأنظمة macOS، والمتوفرة أيضًا على Windows — تمنحك وصولاً مباشرًا وغير مُصفّى إلى تفاصيل الشهادة. لا حاجة لمتصفح. ولا أدوات من طرف ثالث. فقط طرفية (terminal) وبضعة أوامر قصيرة.

يغطي هذا الدليل أوامر OpenSSL التي ستستخدمها في أغلب الأحيان: عرض تفاصيل الشهادة، والتحقق من تواريخ انتهاء الصلاحية، وفحص الخوادم البعيدة، والتحقق من صحة سلسلة الشهادات، والتأكد من تطابق مفتاحك الخاص مع شهادتك. كل أمر جاهز للنسخ واللصق مع شرح واضح لما يقوم به.

تفضل العمل من خلال المتصفح؟ تُظهر أداة SSL Checker نفس تفاصيل الشهادة: السلسلة، وتاريخ الانتهاء، ومجموعات التشفير، وتصنيف الأمان، وذلك بمجرد إدخال اسم النطاق، دون الحاجة لطرفية، أو يمكنك قراءة الشهادة بنفسك في Chrome أو Firefox أو Safari أو Edge. يغطي هذا الدليل كل ما قد تفضل القيام به من سطر الأوامر.


جدول المحتويات

  1. المتطلبات الأساسية: تحقق من إصدار OpenSSL لديك
  2. عرض التفاصيل الكاملة للشهادة باستخدام openssl x509
  3. فحص شهادة خادم بعيد باستخدام openssl s_client
  4. التحقق من تواريخ انتهاء صلاحية الشهادة
  5. التحقق من صحة سلسلة الشهادات باستخدام openssl verify
  6. تأكيد تطابق مفتاحك الخاص مع شهادتك
  7. التحويل بين صيغ الشهادات
  8. استكشاف أخطاء الشهادات الشائعة وإصلاحها
  9. حافظ على السيطرة الكاملة على شهاداتك

وفر 10% على شهادات SSL عند الطلب من SSL Dragon اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

المتطلبات الأساسية: تحقق من إصدار OpenSSL لديك

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

openssl version –a

يُخرج هذا الأمر رقم الإصدار، وتاريخ الإصدار، والدليل الافتراضي للشهادات (OPENSSLDIR). تأتي معظم أنظمة لينكس مع OpenSSL مثبتًا مسبقًا. أما على macOS، فيأتي النظام مزودًا بـ LibreSSL (فرع من OpenSSL)، الذي يتعامل مع نفس الأوامر.

إذا كنت تستخدم Windows، يمكنك الوصول إلى OpenSSL عبر WSL (نظام فرعي لتشغيل لينكس على ويندوز)، أو Git Bash، أو إصدار مستقل مخصص لـ Windows.

نصيحة: تأكد من أنك تستخدم على الأقل إصدار OpenSSL 1.1.1 أو أحدث. فالإصدارات القديمة تفتقر لدعم TLS 1.2 وTLS 1.3، وهما مطلوبان في الخوادم والمتصفحات الحديثة.


عرض التفاصيل الكاملة للشهادة باستخدام openssl x509

يُعد أمر openssl x509 الأداة الأساسية لفحص الشهادات. فهو يقرأ شهادات X.509، وهي الصيغة القياسية المستخدمة في جميع شهادات SSL/TLS، ويُخرج التفاصيل بصيغة يسهل على الإنسان قراءتها.

لعرض التفاصيل الكاملة لملف شهادة مخزّن محليًا:

openssl x509 -in certificate.crt -text -noout

إليك ما يقوم به كل علامة (flag):

  • -in certificate.crt — يحدد ملف الشهادة المُدخل. استبدله باسم الملف الفعلي لديك (مثل yourdomain.crt أو server.pem).
  • -text — يُخرج الشهادة بصيغة نصية قابلة للقراءة بدلاً من البيانات المُرمّزة الخام.
  • -noout — يمنع OpenSSL من طباعة كتلة PEM المُرمّزة بـ Base64 بجانب المخرجات النصية.

يكشف هذا الأمر عن كل شيء يتعلق بالشهادة:

  • الامتدادات (Extensions) — بما في ذلك أسماء بديلة للموضوع (SANs)، واستخدام المفتاح، والوصول لمعلومات الجهة المصدرة.
  • الجهة المصدرة (Issuer) — جهة إصدار الشهادات (CA) التي وقّعت عليها (مثل DigiCert أو Let’s Encrypt أو Sectigo).
  • الموضوع (Subject) — النطاق أو المؤسسة التي صدرت الشهادة باسمها.
  • فترة الصلاحية — تاريخا “لا قبل” و”لا بعد” (Not Before وNot After) اللذان يوضحان متى تكون الشهادة سارية المفعول.
  • خوارزمية وحجم المفتاح العام — عادةً RSA بحجم 2048 بت أو ECDSA P-256.
  • خوارزمية التوقيع — غالبًا sha256WithRSAEncryption بالنسبة للشهادات الحديثة.

التحقق فقط من الجهة المصدرة أو الموضوع

إذا لم تكن بحاجة إلى المخرجات الكاملة، يمكنك استخلاص حقول محددة:

openssl x509 -in certificate.crt -noout -issuer
openssl x509 -in certificate.crt -noout -subject

هذه الأوامر السريعة (one-liners) مفيدة بشكل خاص عندما تكتب سكريبتات أو تحتاج فقط لتأكيد سريع.

ملاحظة: يتوقع OpenSSL افتراضيًا صيغة PEM — وهي ملفات نصية تبدأ بـ —–BEGIN CERTIFICATE—–. إذا كانت شهادتك بصيغة DER (ثنائية)، أضف العلامة -inform der:

openssl x509 -in certificate.der -inform der -text -noout

فحص شهادة خادم بعيد باستخدام openssl s_client

لا يكون ملف الشهادة متوفرًا دائمًا على جهازك المحلي. فغالبًا ما تحتاج إلى فحص الشهادة المثبتة على خادم فعّال. وهنا يأتي دور أمر openssl s_client.

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

يفتح هذا الأمر اتصال TLS بالخادم عبر المنفذ 443 (منفذ HTTPS الافتراضي) ويعرض سلسلة الشهادات، وإصدار البروتوكول، ومجموعة التشفير، وتفاصيل الجلسة.

تُفعّل العلامة -servername ميزة مؤشر اسم الخادم (SNI)، وهي ضرورية عندما يستضيف الخادم عدة نطاقات على نفس عنوان IP. بدونها، قد تحصل على الشهادة الخاطئة.

اضغط CTRL+C لإغلاق الاتصال بعد مشاهدة المخرجات.

لا تملك طرفية في متناول يدك، أو تريد نظرة أسرع؟ تتيح لك أداة SSL Checker فحص شهادة دون استخدام OpenSSL. الصق النطاق واحصل على السلسلة وتاريخ الانتهاء وتفاصيل التشفير مباشرة في متصفحك.

استخدم الأنابيب (Pipe) للحصول على مخرجات أنظف

تكون مخرجات s_client الخام مطولة جدًا. لاستخلاص تفاصيل الشهادة فقط، مرّرها عبر أنبوب (pipe) إلى openssl x509:

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -text

يرسل echo | في البداية إدخالاً فارغًا بحيث يُغلق الاتصال تلقائيًا. أما 2>/dev/null فيقوم بإخفاء رسائل الخطأ، مما يمنحك مخرجات نظيفة.

يمكنك أيضًا تضييق النطاق إلى حقول محددة:

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

يُعد هذا الأمر السريع مفضلاً عمليًا لدى مسؤولي الأنظمة. فهو يعرض الجهة المصدرة، والموضوع، وتواريخ الصلاحية في عملية واحدة.

حفظ الشهادة محليًا

إذا أردت حفظ الشهادة البعيدة في ملف لإجراء تحليل إضافي عليها:

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 > yourdomain.pem

الآن يمكنك تشغيل أي أمر من أوامر openssl x509 على الملف المحفوظ.


التحقق من تواريخ انتهاء صلاحية الشهادة

تُعد الشهادات منتهية الصلاحية واحدة من أكثر أسباب أخطاء SSL شيوعًا. يمنحك OpenSSL عدة طرق للتحقق من انتهاء الصلاحية.

فحص سريع للتاريخ

openssl x509 -in certificate.crt -noout -dates

يُخرج هذا كلاً من “لا قبل” (تاريخ البداية) و”لا بعد” (تاريخ الانتهاء). إذا كنت بحاجة فقط لتاريخ الانتهاء:

openssl x509 -in certificate.crt -noout -enddate

بالنسبة للخوادم البعيدة

اجمع بين s_client وx509 للتحقق من تاريخ انتهاء صلاحية شهادة خادم فعّال:

echo | openssl s_client -servername yourdomain.com -connect yourdomain.com:443 2>/dev/null | openssl x509 -noout -enddate

أتمتة تنبيهات انتهاء الصلاحية باستخدام -checkend

العلامة -checkend شيء تتجاهله معظم الأدلة، لكنها مفيدة بشكل كبير للأتمتة. فهي تتحقق مما إذا كانت الشهادة ستنتهي صلاحيتها خلال عدد محدد من الثواني وتُرجع رمز خروج (exit code):

openssl x509 -in certificate.crt -noout -checkend 2592000

القيمة 2592000 تعادل 30 يومًا بالثواني. إذا كانت الشهادة ستنتهي صلاحيتها خلال 30 يومًا، يُرجع الأمر رمز خروج غير صفري ويطبع تحذيرًا. أما إذا كانت الشهادة لا تزال سارية بعد تلك الفترة، فيُرجع صفرًا.

هذا يجعل من السهل دمجها ضمن مهام cron، أو سكريبتات المراقبة، أو خطوط أنابيب CI/CD:

if ! openssl x509 -in certificate.crt -noout -checkend 2592000 > /dev/null 2>&1; then
    echo "WARNING: Certificate expires within 30 days!"
fi

لماذا يهم هذا: مع توجه CA/Browser Forum نحو دورات حياة للشهادات مدتها 47 يومًا بحلول عام 2029، لم تعد مراقبة انتهاء الصلاحية بشكل آلي أمرًا اختياريًا، بل أصبحت ضرورة. إن بناء هذه الفحوصات في بنيتك التحتية الآن سيوفر عليك أعطالاً لاحقًا.


التحقق من صحة سلسلة الشهادات باستخدام openssl verify

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

إذا كانت السلسلة مكسورة أو غير مكتملة، يرى الزوار خطأ “غير موثوق” رغم أن الشهادة نفسها سارية المفعول.

للتحقق من صحة شهادة مقابل مخزن جهات إصدار الشهادات (CA) الموثوقة للنظام:

openssl verify certificate.crt

إذا أظهر الناتج certificate.crt: OK، فإن السلسلة مكتملة وصالحة.

عندما تكون الشهادات الوسيطة منفصلة

إذا كانت شهادة CA الوسيطة الخاصة بك في ملف منفصل (وهو أمر شائع لدى العديد من مزودي CA، بما في ذلك DigiCert)، استخدم العلامة -untrusted:

openssl verify -untrusted intermediate.crt certificate.crt

تُخبر العلامة -untrusted OpenSSL باستخدام الشهادة الوسيطة المُقدَّمة أثناء بناء السلسلة دون إضافتها إلى مخزن الثقة بشكل دائم.

عرض السلسلة الكاملة من خادم بعيد

لرؤية كل شهادة في السلسلة من خادم فعّال:

openssl s_client -connect yourdomain.com:443 -servername yourdomain.com -showcerts

تُخرج العلامة -showcerts كل شهادة في السلسلة بصيغة PEM. هذا هو الأمر المرجعي لتشخيص مشكلات السلسلة، مثل الشهادات الوسيطة المفقودة أو الترتيب غير الصحيح.

تفضل فحصًا بصريًا بضغطة واحدة؟ ستقوم أداة SSL Checker لدينا بـ التحقق من سلسلة الشهادات لأي نطاق وتحديد الشهادات الوسيطة المفقودة تلقائيًا.


تأكيد تطابق مفتاحك الخاص مع شهادتك

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

إليك كيفية التحقق من التطابق. كلا الأمرين يستخلص المعامل (modulus)، وهو قيمة رياضية مشتركة، ويقوم بتجزئتها (hash):

openssl x509 -noout -modulus -in certificate.crt | openssl md5
openssl rsa -noout -modulus -in privatekey.key | openssl md5

إذا كانت قيم تجزئة MD5 متطابقة، فإن المفتاح الخاص والشهادة زوج صالح. أما إذا اختلفتا، فهناك خطأ ما. قد يكون لديك المفتاح الخاطئ، أو تمت إعادة إصدار الشهادة بزوج مفاتيح جديد.

يمكنك توسيع هذا الفحص ليشمل CSR (طلب توقيع الشهادة) أيضًا:

openssl req -noout -modulus -in request.csr | openssl md5

يخبرك فحص المعامل (modulus) عما إذا كانت الملفات الثلاثة تنتمي إلى بعضها، لكنه لا يخبرك بما يدّعيه CSR فعليًا. لقراءة حقوله الخاصة، شغّل openssl req -in yourCSR.csr -noout -text، أو الصق الطلب في أداة فك تشفير CSR الخاصة بنا.

يجب أن تُرجع الملفات الثلاثة: الشهادة، والمفتاح الخاص، وCSR نفس التجزئة (hash).

لست على جهاز يتوفر فيه OpenSSL بسهولة؟ تقوم أداة Certificate Key Matcher الخاصة بنا بنفس المقارنة داخل متصفحك، وتعمل أيضًا مع مفاتيح ECDSA، حيث يفشل فحص المعامل التقليدي.


التحويل بين صيغ الشهادات

تتطلب الخوادم والمنصات المختلفة صيغ شهادات مختلفة. يستخدم Apache وNginx صيغة PEM، بينما تحتاج Windows IIS وTomcat عادةً إلى صيغة PKCS#12 (.pfx). إليك أكثر عمليات التحويل شيوعًا:

من DER إلى PEM:

openssl x509 -inform der -in certificate.der -out certificate.pem

من PEM إلى DER:

openssl x509 -outform der -in certificate.pem -out certificate.der

من PEM إلى PKCS#12 (.pfx):

openssl pkcs12 -export -out certificate.pfx -inkey privatekey.key -in certificate.crt -certfile ca-bundle.crt

من PKCS#12 إلى PEM:

openssl pkcs12 -in certificate.pfx -out certificate.pem -nodes

تقوم العلامة -nodes بتصدير المفتاح الخاص دون تشفير بكلمة مرور. أزلها إذا كنت تريد ناتجًا محميًا بعبارة مرور.

معلومة مفيدة: يمكن أن تكون ملفات الشهادة بامتدادات .crt، و.cer، و.pem جميعها بصيغة PEM. الامتداد وحده لا يخبرك بالترميز، تحقق من محتوى الملف. إذا كان يبدأ بـ —–BEGIN، فهو PEM. وإذا كان رموزًا ثنائية غير مفهومة، فهو DER.

لتحويل لمرة واحدة على جهاز لا يتوفر فيه OpenSSL، تتعامل أداة SSL Converter مع صيغ PEM وDER وPFX وP7B داخل المتصفح، وتقسّم ملف PFX إلى شهادة وسلسلة ومفتاح.


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

عندما يحدث خطأ ما، عادةً ما تُخبرك مخرجات OpenSSL بمكان المشكلة. إليك مرجعًا سريعًا لأكثر المشكلات شيوعًا:

“unable to get local issuer certificate”. سلسلة الشهادات غير مكتملة. الشهادة الوسيطة مفقودة من تهيئة خادمك. احصل على حزمة CA الصحيحة من مزود الشهادة الخاص بك وقم بتهيئتها إلى جانب شهادة خادمك.

“certificate has expired”. بالضبط كما يبدو. تاريخ “لا بعد” (Not After) للشهادة قد مضى. قم بتجديدها واستبدالها فورًا.

“certificate signature failure”. تم تعديل الشهادة أو إتلافها بعد التوقيع. أعد تنزيلها من مزود CA الخاص بك أو أعد إصدارها.

“key values mismatch”. المفتاح الخاص والشهادة لا يتطابقان. شغّل مقارنة المعامل (modulus) من القسم أعلاه للتأكد، ثم حدد موقع المفتاح الصحيح أو أنشئ CSR جديدًا.

“self-signed certificate”. لا يستطيع OpenSSL تتبع الشهادة إلى جذر CA موثوق. هذا أمر متوقع بالنسبة لـالشهادات ذاتية التوقيع المستخدمة في التطوير. أما بالنسبة لبيئة الإنتاج، تأكد من امتلاكك شهادة صادرة عن جهة إصدار شهادات موثوقة علنيًا.

“hostname mismatch”. النطاق الذي تتصل به لا يتطابق مع الاسم الشائع (CN) أو الاسم البديل للموضوع (SAN) المدرج في الشهادة. تحقق من SANs باستخدام:

openssl x509 -in certificate.crt -noout -ext subjectAltName

حافظ على السيطرة الكاملة على شهاداتك

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

للحصول على فحص سريع وموثوق دون فتح طرفية، شغّل النطاق عبر أداة SSL Checker لدينا واحصل على تصنيف الأمان الخاص بـ SSL إضافة إلى تفاصيل كاملة عن الشهادة والسلسلة والتشفير في ثوانٍ.

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

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

وفِّر 10% على شهادات SSL عند الطلب اليوم!

إصدار سريع، وتشفير قوي، وثقة في المتصفح بنسبة 99.99%، ودعم مخصص، وضمان استرداد المال خلال 25 يومًا. رمز القسيمة: SAVE10

صورة مفصلة لتنين أثناء طيرانه

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