كيف يعمل
شهادة X.509 هي وثيقة موقّعة تربط مفتاحًا عامًا باسم: نطاق أو شخص أو مؤسسة. ما ينتقل بين الخوادم وفي الملفات هو صيغتها الثنائية (DER)، وما يُنسخ ويُلصق هو البنية نفسها بترميز Base64 بين السطرين BEGIN CERTIFICATE وEND CERTIFICATE، أي صيغة PEM. وفي داخلها موضوع وجهة إصدار وفترة صلاحية والمفتاح العام وامتدادات تحدد الغرض منها وأين يمكن التحقق مما إذا كانت قد أُبطلت.
تتعرّف الأداة على الشهادات، وطلبات التوقيع PKCS#10 (CSR)، والمفاتيح الخاصة PKCS#8 وPKCS#1 وSEC1، والمفاتيح العامة، وحزم PKCS#7 (.p7b)، وملفات PKCS#12 (.pfx، .p12). إذا لصقت عدة كتل معًا، فإنها ترتّب السلسلة من الشهادة النهائية حتى الجذر، وتتحقق من كل توقيع بمفتاح جهة الإصدار، وتقارن المفتاح الخاص بكل شهادة وكل CSR لتخبرك أيها يطابق أيها.
كما تحوّل بين الصيغ، وتُنشئ من الشهادة والمفتاح ملف .pfx الذي تطلبه IIS وAzure، وتولّد طلب CSR جديدًا مع مفتاحه الخاص أو شهادة موقّعة ذاتيًا للاختبار. يجري كل ذلك عبر واجهة التشفير البرمجية في متصفحك: لا تُرسل الشهادات ولا المفاتيح إلى أي خادم.
أمثلة
ISRG Root X1 · SHA-25696:BC:EC:06:26:49:76:F3:74:60:77:9A:CF:28:C5:A7:CF:E8:A3:C0:AA:E1:1A:8F:FC:EE:05:C0:BD:DF:08:C6بصمة SHA-256 لشهادة الجذر الخاصة بـ Let's Encrypt. وهي البصمة التي تنشرها جهة الإصدار ومخازن الثقة: إذا طابقتها بصمة الملف الذي لديك، فهو تلك الشهادة بعينها.ISRG Root X1 · pin SPKIC5+lpZ7tcVwmwQIMcRtPbsQtWLABXhQzejna0wHFr8M=قيمة SHA-256 للمفتاح العام بترميز Base64. هذه هي القيمة التي توضع في pin-sha256 ضمن إعدادات أمان الشبكة في Android أو في certificate pinning داخل تطبيق، ولا تتغير عند تجديد الشهادة إذا أُعيد استخدام المفتاح.root.crt + intermediate.crt + server.crtserver.crt + intermediate.crt + root.crtيعتبر nginx وHAProxy الشهادة الأولى في الملف شهادةَ الخادم. إذا كانت السلسلة معكوسة، يفشل nginx بالخطأ key values mismatch لأنه يقارن المفتاح الخاص بشهادة الجذر.openssl pkcs12 -in viejo.pfx -legacy -nodes | openssl pkcs12 -export -out nuevo.pfxPBES2 · AES-256-CBC · MAC SHA-256ملفات .pfx التي تصدّرها إصدارات Windows القديمة أو OpenSSL 1.x تُشفَّر بـ RC2 و3DES، ولا تدعمهما المتصفحات. يعيد هذا الأمر تشفيرها بـ AES، وهي الصيغة التي يستخدمها OpenSSL 3 افتراضيًا.حالات الاستخدام
- التحقق قبل التثبيت من أن الشهادة التي أرسلتها جهة الإصدار تغطي جميع النطاقات (SAN) وأن تاريخ انتهاء صلاحيتها هو المتوقع.
- معرفة أيٍّ من المفاتيح الخاصة المتبقية على الخادم يطابق كل شهادة، دون الحاجة إلى مقارنة المعاملات (modulus) باستخدام OpenSSL.
- اكتشاف سبب عدم ثقة أحد العملاء بموقعك: شهادة وسيطة مفقودة، أو سلسلة غير مرتبة، أو شهادة موقّعة بـ SHA-1.
- إنشاء طلب CSR لشراء شهادة أو تجديدها، مع مفتاح يُنشأ على جهازك وأمر OpenSSL المكافئ إذا كنت تفضّل تنفيذ ذلك على الخادم.
- تحويل ملف .crt ومفتاحه .key إلى .pfx لـ IIS أو Azure App Service أو مخزن مفاتيح Java، أو استخراج الشهادة والمفتاح من ملف .pfx لاستخدامهما في nginx.
- الحصول على بصمة الشهادة أو قيمة تثبيت SPKI لإعداد certificate pinning في تطبيق جوال أو للتحقق من شهادة عميل.
الأسئلة الشائعة
هل من الآمن لصق مفتاحي الخاص هنا؟
يُعالَج المفتاح باستخدام Web Crypto API داخل متصفحك ولا يُرسل إلى أي خادم؛ ويمكنك التأكد من ذلك في علامة التبويب «الشبكة» ضمن أدوات المطوّر. ومع ذلك، فالممارسة الجيدة هي التعامل مع أي مفتاح إنتاج على أنه سرّ: لا تلصقه إلا في أدوات تثق بها، وأغلق علامة التبويب عند الانتهاء.
ما الفرق بين PEM وDER وCRT وCER وP7B وPFX؟
DER هي الشهادة بالصيغة الثنائية، وPEM هي البيانات الثنائية نفسها بترميز Base64 بين سطري BEGIN وEND. الامتدادان .crt و.cer لا يحددان الصيغة: يمكن أن يحتويا على أيٍّ منهما. ملف .p7b هو حزمة PKCS#7 تضم عدة شهادات دون أي مفتاح. أما ملف .pfx أو .p12 فهو PKCS#12: يحفظ الشهادة والشهادات الوسيطة والمفتاح الخاص معًا، مشفّرة بكلمة مرور.
كيف أعرف إن كانت الشهادة الوسيطة مفقودة على خادمي؟
الصق ما هو مُعدّ على الخادم. إذا انتهت السلسلة بشهادة غير موقّعة ذاتيًا، فهناك حلقة مفقودة: عادةً ما يتضمن امتداد Authority Information Access الخاص بتلك الشهادة، في حقل CA Issuers، عنوانًا لتنزيل جهة الإصدار. تبحث متصفحات سطح المكتب عنها أحيانًا بنفسها، لكن Android وcurl ومعظم المكتبات لا تفعل ذلك، لذا يظهر الخطأ لدى بعض العملاء فقط.
ما أقصى مدة صلاحية لشهادة TLS عامة؟
منذ سبتمبر 2020 ترفض المتصفحات الشهادات التي تزيد مدتها على 398 يومًا. وفي عام 2025 وافق CA/Browser Forum على خفض الحد الأقصى على مراحل: 200 يوم للشهادات الصادرة اعتبارًا من 15 مارس 2026، و100 يوم اعتبارًا من مارس 2027، و47 يومًا اعتبارًا من مارس 2029. لذلك يُستحسن أتمتة التجديد باستخدام ACME. ولا تخضع جهات الإصدار (CA) الداخلية في الشركات لهذا الحد.
RSA أم ECDSA لطلب CSR؟
يوفر ECDSA P-256 أمانًا مماثلًا لـ RSA بطول 3072 بت مع مفاتيح وتواقيع أصغر بكثير، ويُجري الخادم المصافحة بسرعة أكبر. تدعمه جميع المتصفحات والأنظمة الحالية. ويبقى RSA 2048 الخيار الآمن إذا كان لديك عملاء قدامى جدًا أو أجهزة مدمجة أو نظام لا يقبل إلا RSA.
هل يكفي وضع النطاق في الاسم الشائع (CN)؟
لا. منذ Chrome 58 في عام 2017، لا تنظر المتصفحات إلا إلى الأسماء البديلة (SAN) ويُتجاهل CN. يجب أن يكون كل نطاق ستُستخدم له الشهادة، بما في ذلك النطاق الموجود في CN، ضمن قائمة SAN. ويغطي حرف البدل مثل *.example.com مستوى واحدًا فقط: يصلح لـ www.example.com، لكنه لا يصلح لـ example.com ولا لـ a.b.example.com.