طريقة الاستخدام
- الصق الشهادة في الشهادة: كتلة PEM كاملة، أو ترميز Base64 وحده.
- اقرأ صاحب الشهادة والجهة المُصدِرة لتعرف لمن الشهادة ومن وقّعها.
- تحقق من الصلاحية. تحسب الصفحة الأيام المتبقية من تاريخ اليوم في منطقتك الزمنية.
- قارن بصمة SHA-256 بالقيمة التي ينشرها الموقع أو المورّد أو سلطة الشهادات قبل أن تثق بالشهادة.
ماذا تقول الشهادة
شهادة X.509 (RFC 5280) تربط مفتاحاً عاماً باسم، وتوقّعها جهة مُصدِرة. تُكتب بصيغة ASN.1 DER، وهي شجرة من قيم موسومة. كتلة PEM هي صيغة DER نفسها مكتوبة بترميز Base64 بين سطري BEGIN وEND (RFC 7468). تقرأ الصفحة الشجرة بقارئ DER صغير خاص بها، وتعرض كل حقل.
Certificate ::= SEQUENCE { tbsCertificate, signatureAlgorithm, signatureValue }
TBSCertificate ::= SEQUENCE { version [0], serialNumber, signature, issuer,
validity, subject, subjectPublicKeyInfo, ..., extensions [3] }
ما الذي لا تتحقق منه الصفحة
لا تتحقق الصفحة من التوقيع، ولا تبني السلسلة حتى جذر موثوق، ولا تفحص إن كانت الشهادة قد أُلغيت، ولا تتصل بالمضيف. قد تبدو الشهادة صالحة هنا ثم يرفضها المتصفح أو الخادم. وتحتاج هذه الفحوص إلى المفتاح العام للجهة المُصدِرة وإلى مخزن ثقة، وهذه الصفحة لا تملكهما.
تُحسب الأيام المتبقية من تاريخ اليوم حتى يوم تاريخ ”لا تكون صالحة بعد“، ويُحتسب اليومان معاً. والشهادة الملغاة قبل ذلك التاريخ تُظهر تواريخها هنا، لأن الصفحة لا تقرأ قائمة إلغاء ولا تسأل جهة OCSP.
البصمات
البصمة ملخص لبايتات DER كلها. شهادتان لهما بصمة SHA-256 نفسها هما الشهادة نفسها. وSHA-1 لم يعد مقاوماً للتصادم، لذا قارن بصمة SHA-256 عندما تحتاج إلى يقين؛ وتظهر بصمة SHA-1 لأن كثيراً من القوائم القديمة ما زال يطبعها.
مثال محلول: الشهادة الوسيطة E5 من Let's Encrypt (الافتراضية)
الشهادة الافتراضية هي الوسيطة E5 من Let's Encrypt، وقّعتها ISRG Root X2 بخوارزمية ECDSA على المنحنى P-384. تقرأ الصفحة هذه الحقول منها. أما حالة الصلاحية فتتوقف على التاريخ الذي تقرأ فيه، لذلك لم تُدرج في الجدول؛ والحقول الأخرى هي نفسها كل يوم.
| الحقل | القيمة |
|---|---|
| الإصدار | 3 |
| الرقم التسلسلي | 18:6E:75:D4:EE:B0:A0:5D:FD:2D:A8:20:86:5D:1E:31 |
| خوارزمية التوقيع | ECDSA مع SHA-384 (1.2.840.10045.4.3.3) |
| الجهة المُصدِرة | C=US, O=Internet Security Research Group, CN=ISRG Root X2 |
| صاحب الشهادة | C=US, O=Let's Encrypt, CN=E5 |
| لا تكون صالحة قبل | 13 مارس 2024، 00:00:00 UTC |
| لا تكون صالحة بعد | 12 مارس 2027، 23:59:59 UTC |
| المفتاح العام | منحنى إهليلجي P-384، 384 بت |
| استخدام المفتاح | توقيع رقمي، توقيع الشهادات، توقيع قائمة الإلغاء (CRL) |
| الاستخدام الموسّع للمفتاح | توثيق عميل TLS، توثيق خادم TLS |
| القيود الأساسية | سلطة شهادات: نعم، طول المسار 0 |
| بصمة SHA-256 | E7:88:D1:4B:04:36:B5:12:0B:BE:E3:F1:5C:15:BA:DF:08:C1:40:7F:E7:25:68:A4:F1:6F:91:51:C3:80:E1:E3 |
الأسئلة الشائعة
لماذا تقول الصفحة إن شهادتي صالحة، بينما يقول متصفحي إنها غير صالحة؟
تقرأ الصفحة التواريخ والحقول فقط. أما المتصفح فيتحقق أيضاً من التوقيع، ومن السلسلة حتى جذر موثوق، ومن اسم المضيف، ومن الإلغاء. وهذه الفحوص تحتاج إلى بيانات لا تملكها هذه الصفحة.
ما الفرق بين بصمتي SHA-1 وSHA-256؟
هما ملخصان لبايتات DER نفسها. SHA-1 لم يعد يقاوم التصادم، لذلك تُقارن بصمة SHA-256 عندما تحتاج إلى يقين. وتظهر بصمة SHA-1 لأن كثيراً من القوائم القديمة ما زالت تطبعها.
ماذا تحتوي كتلة PEM التي تبدأ بـ BEGIN CERTIFICATE؟
تغلّف صيغة PEM (RFC 7468) بايتات DER للشهادة بترميز Base64، بين سطر BEGIN وسطر END يحملان الوسم CERTIFICATE. وتقبل الصفحة أيضاً نص Base64 وحده.
لماذا يُعرض حجم المفتاح بالبت في RSA، ومنحنى في ECDSA؟
يوصف مفتاح RSA بطول معامله بالبت. أما مفتاح ECDSA فيوصف بمنحناه، مثل P-256 أو P-384، وهو الذي يحدد حجم المفتاح.
ماذا يعني سلطة شهادات: نعم، طول المسار 0؟
يجوز للشهادة أن توقّع شهادات الكيانات النهائية، ولا توجد بعدها سلطات شهادات وسيطة تحتها (RFC 5280، القسم 4.2.1.9). والقيود الأساسية تُقرأ من الشهادة، ولا تُراجع مقابل سلسلة.
هل ترسل الصفحة شهادتي إلى أي جهة؟
لا. تُقرأ بايتات DER وتُحسب البصمات في متصفحك. لا يُرفع شيء ولا يُحفظ، ولا تتصل الصفحة بالمضيف المذكور في الشهادة.
المصادر
- RFC 5280 (باللغة الإنجليزية): Internet X.509 Public Key Infrastructure Certificate and CRL Profile
- RFC 7468 (باللغة الإنجليزية): Textual Encodings of PKIX, PKCS, and CMS Structures
- ITU-T X.690 (باللغة الإنجليزية): ASN.1 encoding rules (DER)
- مستودع شهادات Let's Encrypt (باللغة الإنجليزية)
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.