البرمجة

طريقة إنشاء هاش SHA256 مُشفر بترميز Base64 لمفتاح العام الخاص بـ X.509 Certificate في Android N Certificate Pinning

في سياق تثبيت الشهادة (Certificate Pinning) على Android N، يقدم مستندات معاينة المطور N إرشادات حول كيفية إنشاء قيمة هاش مشفرة بنظام Base64 للمفتاح العام (SubjectPublicKeyInfo) من شهادة X.509. عند استخدام تثبيت الشهادة، يتم تحديد مجموعة من الشهادات عبر هاش للمفتاح العام، حيث تعتبر سلسلة الشهادات صالحة إذا كانت تحتوي على واحد على الأقل من المفاتيح العامة المثبتة.

في المستندات، يتم تحديد أن الهاش يجب أن يكون SHA256 ومشفر بنظام Base64. الشكل العام لتكوين الشبكة يظهر في الشيفرة البرمجية XML المقدمة، والتي تحدد النطاقات والمدة الزمنية للتثبيت. الأهم هو جزء التثبيت (pin-set) الذي يحتوي على قيم الهاش المطلوبة.

في المشكلة المحددة، يطرح السائل استفسارًا حول كيفية إنشاء هذا الهاش. قد جرب الطريقة المقترحة في مرفق Github، ولكنه واجه مشكلة مع أمر openssl. يتعذر عليه تحديد ما إذا كانت المشكلة في ملف الشهادة (CRT)، أو الإرشادات، أو إصدار openssl، أو شيء آخر.

لحل هذه المشكلة، يفضل تجربة الخطوات التالية:

أولاً، التأكد من صحة ملف الشهادة (CRT) الذي يتم استخدامه. يمكن استخدام الأوامر المختلفة مثل openssl x509 -text -noout -in certificate.crt لعرض تفاصيل الشهادة والتحقق من صحتها.

ثانياً، التحقق من صحة إصدار openssl المستخدم. يمكن ذلك باستخدام openssl version للتحقق من الإصدار والتأكد من أنه يدعم الأوامر المستخدمة.

ثالثاً، البحث عن أوامر أخرى لإنشاء هاش SHA256 لمفتاح العام. يمكن استخدام أوامر مختلفة مثل openssl x509 -pubkey -noout -in certificate.crt | openssl sha256 -binary | base64 لتوليد الهاش المطلوب.

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

المزيد من المعلومات

فيما يتعلق بتوليد التشفير Base64-Encoded SHA256 Hash لـ SubjectPublicKeyInfo من شهادة X.509 لأغراض Certificate Pinning في Android N، يظهر أن الوثائق الرسمية للإصدار التجريبي للمطورين (N Developer Preview) تقدم توجيهات واضحة لهذا الغرض.

تفصيلًا، يتم إجراء عملية تحديد الشهادة (Certificate Pinning) عن طريق تقديم مجموعة من الشهادات باستخدام تجزئة (hash) للمفتاح العام (SubjectPublicKeyInfo) في شهادة X.509. وبموجب هذا النهج، تعتبر سلسلة الشهادات صالحة فقط إذا كانت تحتوي على واحد على الأقل من المفاتيح العامة المحددة.

الشيفرة البرمجية الXML التي يتم عرضها تظهر أن تجزئة (hash) تستخدم هي SHA256 وتتم ترميزها بنظام Base64. هناك أمثلة في الشيفرة تظهر كيف يمكن تحقيق ذلك. يمكن استخدام الكود البرمجي الذي يظهر في المثال كدليل عملي لتوليد هذا النوع من التجزئة.

من المهم التنويه إلى أن هناك تحديات قد تواجهك أثناء تنفيذ هذه الخطوات. يُذكر أن XML الذي تم تقديمه في الوثائق به تنسيق غير صحيح، ولكن من الواضح أن الغرض هو استخدام تجزئة SHA256 المشفرة بنظام Base64.

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

وفي الختام، يُفضل دائمًا البحث في المصادر الرسمية والمنتديات التقنية للحصول على نصائح وتوجيهات حديثة بشأن استخدام أدوات OpenSSL وتوليد تجزئة SHA256 بنظام Base64 لأغراض Certificate Pinning في Android N.

زر الذهاب إلى الأعلى