مفكّك الشهادات و‑PEM

يفك شهادات X.509 وطلبات التوقيع من صيغة PEM — الموضوع والمُصدِر والصلاحية والأسماء البديلة والامتدادات والبصمات.

مدخل PEM

الصق PEM في الأعلى وسيُفَك هنا.

ما الذي تفعله هذه الأداة

تصل الشهادة كتلةً من Base64 بين سطرين من الشرطات، ولا سبيل إلى معرفة شيء عنها بالنظر. وهذه الأداة تفكها: لمن صدرت وعمّن، ومتى تنتهي، وأي أسماء مضيفين تغطي، وأي مفتاح تحمل، وكل امتداد تحتويه. الصق سلسلة كاملة فتُقارَن كل شهادة بالتي تليها.

كل ذلك يجري في متصفحك. وهذا هنا أهم منه في معظم الأدوات: فالبديل عادةً لصق شهادة إنتاج في خادوم شخص آخر، أو تذكّر استدعاء openssl، وهو ما لا يفعله أحد تقريبًا.

صيغة PEM مجرد غلاف

الشرطات و‑Base64 تغليف. وفي الداخل DER، وهو ترميز ثنائي لبنية تسمى ASN.1، والوسم بين الشرطات يقول أي بنية تتوقع:

CERTIFICATE           شهادة X.509 صادرة
CERTIFICATE REQUEST   طلب توقيع: ما طلبته من سلطة
PUBLIC KEY            مفتاح مجرد، بلا هوية ملحقة
PRIVATE KEY           النصف السري، ويُرفض هنا

وقد تصل الشهادة نفسها بترميز DER خام في ملف ‎.cer أو ‎.crt، بلا شرطات وبلا Base64. فإن فُتح ملف ضجيجًا ثنائيًا لا نصًا فذلك هو السبب؛ رمّزه إلى Base64 أولًا، أو صدّره بصيغة PEM.

ماذا يوجد فعلًا داخل الشهادة

الحقول الأساسية واحدة في كل شهادة صدرت يومًا:

  • الموضوع — عمّن تتحدث الشهادة. وهو لموقع وِب اليوم اسم شائع واحد غالبًا، وكثيرًا ما لا شيء غيره.
  • المُصدِر — سلطة الإصدار التي وقّعتها. ويظهر اسم موضوعها حرفيًا بوصفه مُصدِر كل ما توقّعه، وهذا ما يجعل فحص السلسلة ممكنًا أصلًا.
  • الصلاحية — لحظتان مطلقتان، دائمًا بتوقيت UTC. تعرض الأداة كلتيهما وتحسب ما بقي داخل متصفحك، لأن الآلة التي بنت هذه الصفحة لا تعلم متى تقرؤها أنت.
  • الرقم التسلسلي — فريد لدى كل مُصدِر، وهو المعرّف المستعمل عند سحب شهادة.
  • خوارزمية التوقيع — بماذا وقّع المُصدِر، مثل SHA-256 مع ECDSA.
  • المفتاح العام — نوعه وحجمه. ففي RSA هو طول المعامل بالبتات، وفي EC خاصية للمنحنى المسمى، ولذا فإن P-256 هي 256 بتًا دائمًا.

وثمة حقل يتوقعه الناس ولم يعودوا يجدونه: الاسم الشائع في الموضوع ليس ما تفحصه المتصفحات. فقد أُهمل في مطابقة اسم المضيف منذ سنوات. والمهم هو امتداد الأسماء البديلة، أدناه.

الامتدادات التي تحسم هل تعمل

قد تحمل الشهادة أي عدد من الامتدادات. وخمسة منها تحدد هل ستُقبل فعلًا، وتفكها هذه الأداة كاملة:

  • الأسماء البديلة للموضوع — أسماء المضيفين أو عناوين IP أو عناوين البريد التي تصلح لها الشهادة. وهذا هو الحقل الذي تفحصه المتصفحات، والشهادة التي لا تُدرِج أسماؤها البديلة الاسمَ الذي كتبته سترفَض مهما كان كل ما عداه سليمًا.
  • القيود الأساسية — هل هي سلطة إصدار، وكم شهادة وسيطة يجوز أن تقع تحتها. وشهادة طرفية موسومة بأنها سلطة، أو العكس، تكسر السلسلة.
  • استخدام المفتاح — لأي غرض يجوز استعمال المفتاح أصلًا: توقيع، تشفير مفتاح، توقيع شهادات. وهو موسوم بالحرجية في الغالب، ما يُلزم البرمجيات برفض الشهادة بدل تجاهل استخدام لا تفهمه.
  • الاستخدام الموسّع للمفتاح — الغاية: خادوم TLS، عميل TLS، توقيع شيفرة، بريد. والشهادة التي لا تحمل استيثاق خادوم TLS لن تخدم موقع وِب، وهذه مفاجأة شائعة في شهادات صدرت لغرض آخر.
  • معرّفا مفتاح الموضوع والسلطة — بصمتان قصيرتان تتيحان للبرمجيات ربط شهادة بمُصدِرها سريعًا حين تتشارك عدة جهات اسمًا واحدًا.

ويُدرَج كل امتداد آخر باسمه إن كان معروفًا، وبمعرّفه OID، وبكونه موسومًا بالحرجية أو لا. ولا يُسقَط شيء في صمت: فالامتداد الذي لا تفكه الأداة يظل ظاهرًا لترى أنه موجود.

السلاسل، وما تعنيه «متصلة» هنا

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

subject: example.com     issuer: Example CA R3     كتلة 1، الطرفية
subject: Example CA R3   issuer: Example Root      كتلة 2، الوسيطة

وشهادة الجذر كتلة ثالثة محتملة، وتُحذف غالبًا لأنها عند العميل أصلًا. وكل شهادة تسمي مُصدِرها، والشهادة التالية تحتها ينبغي أن يكون ذلك الاسم بعينه موضوعًا لها. وتقارن الأداة هذين الاسمين بايتًا بايتًا وتقول هل يتطابقان. وهذه هي العلاقة الوحيدة القابلة للفحص دون اتصال، وهي تلتقط العطبين المسؤولين عن معظم مشكلات السلاسل: شهادة وسيطة محذوفة، وكتل ملصوقة بترتيب معكوس.

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

ما لا تخبرك به هذه الأداة

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

فقولنا «السلسلة متصلة» هنا يعني أن الأسماء تستقيم، لا أن السلسلة صالحة. فسلسلة من شهادات مزوّرة كانت ستتصل اتصالًا تامًا. أما ما يصلح له الفحص فهو كشف الأخطاء البنيوية في إعداداتك أنت — وهو بالضبط ما ينظر إليه الناس حين يلصقون سلسلة في مفكك.

البصمات والمفاتيح الخاصة

بصمة SHA-256 تجزئة للشهادة كاملة، وهي ما يُقارَن بقيمة ذكرها لك أحدهم أو بتثبيت. وانتبه إلى ما تعرّفه: الشهادة، لا المفتاح الذي بداخلها. فتجديد شهادة للمفتاح نفسه يعطي بصمة مختلفة، وهذا هو السبب المعتاد لانكسار التثبيت عند التجديد. وتُعرض بصمة SHA-1 أيضًا لأن الأدوات والطرفيات القديمة ما زالت تطبعها — للتعريف فقط؛ فلا شأن لـ SHA-1 بتوقيع أي شيء.

أما المفاتيح الخاصة فيُتعرَّف عليها وتُرفَض. ولا يغادر شيء مما يُلصق هنا متصفحك، فالرفض إذن ليس عن هذه الصفحة: بل عن أن لصق مفتاح خاص في نموذج وِب عادة يُستحسن ألا تُكتسب، والموقع التالي الذي يطلبه قد لا يعمل محليًا. وإن احتجت التأكد من أن مفتاحًا وشهادةً ينتميان معًا، فقارن محليًا المفتاح العام من الشهادة بالمشتق من المفتاح.

الأسئلة الشائعة

هل تقول الأداة إن شهادتي موثوقة؟
لا. فالثقة تعتمد على مخزن ثقة وعلى فحص توقيع، وكلاهما غير ممكن من ملف ملصوق. وإنما تُبلغ بما تقوله الشهادة عن نفسها، وهل تستقيم الأسماء في السلسلة.
موقعي يعمل في كروم على الحاسوب ويفشل على الهاتف. أين أنظر؟
في شهادة وسيطة ناقصة غالبًا. فمتصفحات سطح المكتب كثيرًا ما تجلب الشهادة الناقصة بنفسها فتخفي المشكلة، بينما لا تفعل ذلك عملاء آخرون. الصق سلسلتك الكاملة هنا: فإن ظهر الربط بين شهادتين مكسورًا فتلك هي الفجوة.
لماذا لا يطابق الاسم الشائع موقعي؟
لأنه ليس ما يُفحَص. فمطابقة اسم المضيف تعتمد على امتداد الأسماء البديلة، ومنذ سنوات. انظر سطر الأسماء البديلة: فإن لم يكن اسم المضيف مدرجًا فيه، فالشهادة لا تغطيه مهما قال الاسم الشائع.
لماذا ترفض فك مفتاحي الخاص؟
عن قصد. لا يغادر شيء مما تلصقه متصفحك، لكن لصق المفاتيح الخاصة في صفحات الوِب عادة يُستحسن تجنبها، وهذه الأداة ترفض تعليمها. أما الشهادات وطلبات التوقيع فلا تحوي أسرارًا وتُفَك كالمعتاد.
ما الفرق بين الشهادة و‑CSR؟
الـCSR هو ما ترسله إلى سلطة إصدار: اسم موضوعك ومفتاحك العام والامتدادات التي تطلبها، موقّعة منك. أما الشهادة فهي ما يعود، وفيها اسم السلطة نفسها مُصدِرًا، ونافذة صلاحية، ورقم تسلسلي. وتفك هذه الأداة كليهما.
هل تُرسَل شهادتي إلى أي مكان؟
لا. التحليل والفك وحساب البصمات تجري كلها في متصفحك؛ ولا يغادر جهازك شيء مما تلصقه.