سؤال

لدي شهادة معينة مثبتة على الخادم الخاص بي.تحتوي هذه الشهادة على تواريخ صالحة، ويبدو أنها صالحة تمامًا في الأداة الإضافية MMC الخاصة بشهادات Windows.

ومع ذلك، عندما أحاول قراءة الشهادة لاستخدامها في HttpRequest، لا يمكنني العثور عليها.هنا هو الكود المستخدم:

    X509Store store = new X509Store(StoreName.Root, StoreLocation.LocalMachine);
    store.Open(OpenFlags.ReadOnly); X509Certificate2Collection col =
    store.Certificates.Find(X509FindType.FindBySerialNumber, "xxx", true);

xxx هو الرقم التسلسلي؛الحجة true تعني "الشهادات الصالحة فقط".المجموعة التي تم إرجاعها فارغة.

والغريب هو أنني إذا نجحت false, ، مما يشير إلى قبول الشهادات غير الصالحة، وتحتوي المجموعة على عنصر واحد - الشهادة ذات الرقم التسلسلي المحدد.

ختاماً:تبدو الشهادة صالحة، ولكن Find الطريقة تعاملها على أنها غير صالحة!لماذا؟

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

المحلول

حاول التحقق من سلسلة الشهادات باستخدام X509سلسلة فصل.يمكن أن يخبرك هذا بالضبط لماذا لا تعتبر الشهادة صالحة.

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

نصائح أخرى

هل شهادة المصدر موجودة في متجر X509؟الشهادة صالحة فقط إذا تم توقيعها من قبل شخص تثق به.

هل هذه شهادة من CA حقيقي، أم شهادة قمت بالتوقيع عليها بنفسك؟أدوات توقيع الشهادات التي يستخدمها المطورون غالبًا، مثل OpenSSL، لا تضيف بعض الملحقات المهمة بشكل افتراضي.

أعتقد أن شهادات x509 مرتبطة بمستخدم معين.هل يمكن أن يكون غير صالح لأنه في الكود يمكنك الوصول إليه كمستخدم مختلف عن المستخدم الذي تم إنشاؤه من أجله؟

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