ما هي أنواع الشهادات المختلفة وتنسيقاتها في التشفير؟

StackOverflow https://stackoverflow.com//questions/11692263

سؤال

نقوم بإضافة التحقق من شهادات الخادم في مصافحة SSL لأحد عملائنا.نظرًا لكوني جديدًا جدًا في عالم التشفير وعالم C، اعتقدت أنني سأقوم أولاً بمسح مفاهيمي حول هذه الأشياء ثم البدء في التنفيذ.

لذا، بحثت كثيرًا في Google بحثًا في الغالب عن مفاهيم الشهادات، لكن لم أتمكن من توضيح مفاهيمي بشكل أفضل بما يرضيني.في الواقع أضاف المزيد من الارتباك.:)

إليك بعض الأشياء التي لا أفهمها تقريبًا على الإطلاق:1.ما هو تنسيق base64؟هل هو نفس DER؟2.يحتوي ملف PEM دائمًا على محتوى base64؟3.ما هو التنسيق الذي يستخدمه مخزن شهادات Windows؟هل هو ثنائي؟

هل هناك احد يساعدني من فضلكم.سأكون ممتنًا جدًا إذا تم توضيح هذه الأمور بالنسبة لي.

هل كانت مفيدة؟

المحلول

يتم تعريف بنية شهادة X.509 باستخدام ASN.1.فيما يلي مقتطف من تعريف الهيكل العام لـ شهادة X.509:

Certificate  ::=  SEQUENCE  {
    tbsCertificate       TBSCertificate,
    signatureAlgorithm   AlgorithmIdentifier,
    signatureValue       BIT STRING  }

TBSCertificate  ::=  SEQUENCE  {
    version         [0]  EXPLICIT Version DEFAULT v1,
    serialNumber         CertificateSerialNumber,
    signature            AlgorithmIdentifier,
    issuer               Name,
    validity             Validity,
    subject              Name,
    subjectPublicKeyInfo SubjectPublicKeyInfo,
    issuerUniqueID  [1]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3
    subjectUniqueID [2]  IMPLICIT UniqueIdentifier OPTIONAL,
                         -- If present, version MUST be v2 or v3
    extensions      [3]  EXPLICIT Extensions OPTIONAL
                         -- If present, version MUST be v3
    }

أ Certificate يتم ترميز القيمة (مع ملء القيم المضمنة) باستخدام ملف دير التنسيق، وهو تنسيق ثنائي.

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

الشهادة بتنسيق PEM هي ترميز Base64 لترميز DER للشهادة، مع إرجاع سطر في نهاية كل قطعة مكونة من 64 حرفًا، يتم وضعها بين المحددات:

-----BEGIN CERTIFICATE-----
MIIB2zCCAUSgAwIBAwIBADANBgkqhkiG9w0BAQQFADAYMRYwFAYDVQQDEw1OZXRn
...
-----END CERTIFICATE-----

يمكن أن يكون لديك أيضًا المفتاح الخاص بتنسيق PEM، وفي هذه الحالة ستكون المحددات -----BEGIN RSA PRIVATE KEY----- (و المطابقة END)، على سبيل المثال.

على السلك، أثناء اتصال TLS، يتم استخدام DER.

لا يهم حقًا ما يستخدمه مخزن شهادات Windows داخليًا، بل يجب أن يكون قادرًا على استيراد/تصدير شهادات DER أو PEM/Base64.


تعد "أنواع" الشهادات موضوعًا أوسع من تنسيق DER/base64.معظم الشهادات المستخدمة لـ SSL/TLS هي شهادات X.509.ثم تحصل على ملفات تعريف الاستخدام.والأكثر شيوعا هو إنترنت X.509 شهادة البنية التحتية للمفتاح العام وملف تعريف قائمة إبطال الشهادات (CRL)., ، والذي يحدد بشكل أساسي كيف يجب على المراجع المصدقة إصدار الشهادات وكيف يجب على الكيانات التحقق من الشهادات عن بعد.

قد تكون مهتمًا أيضًا بهذه الأسئلة:

وبشكل أكثر عمومية، فإن الحصول على كتاب عن البنية التحتية للمفاتيح العمومية (PKI) من شأنه أن يساعد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top