2008-09-18 18 views
8

मेरे पास मेरे सर्वर पर एक दिया गया प्रमाणपत्र स्थापित है। उस प्रमाणपत्र में वैध तिथियां हैं, और विंडोज प्रमाणपत्र एमएमसी स्नैप-इन में पूरी तरह से मान्य लगती हैं।यह X.509 प्रमाणपत्र क्यों अमान्य माना जाता है?

हालांकि, जब मैं प्रमाणपत्र को पढ़ने की कोशिश करता हूं, तो इसे 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 विधि इसे अमान्य मानती है! क्यूं कर?

उत्तर

7

X509Chain कक्षा का उपयोग कर प्रमाणपत्र श्रृंखला की पुष्टि करने का प्रयास करें। यह आपको बता सकता है कि प्रमाणपत्र को वैध क्यों नहीं माना जाता है।

जैसा कि एरिक्सन ने सुझाव दिया था, आपके X509Store में श्रृंखला में CA से विश्वसनीय प्रमाण पत्र नहीं हो सकता है। यदि आपने अपना स्वयं का हस्ताक्षरित सीए उत्पन्न करने के लिए ओपनएसएसएल या अन्य टूल का उपयोग किया है, तो आपको उस सीए के लिए X509Store में सार्वजनिक प्रमाणपत्र जोड़ना होगा।

+0

श्रृंखला प्रमाण पत्र मौजूद हैं, लेकिन किसी भी तरह से इस उपयोगकर्ता के लिए उपलब्ध नहीं थे। मैंने श्रृंखला स्थिति की जांच के लिए एमएसडीएन से इस नमूना कोड का उपयोग किया: http://tinyurl.com/4wfnng। यह कोड उपयोगकर्ता के आधार पर अलग-अलग स्थिति को दोबारा हटा देता है। मैं प्रमाणपत्रों को पुनर्स्थापित करने का प्रयास करूंगा। धन्यवाद। – pvieira

2

मेरा मानना ​​है कि x509 certs किसी विशेष उपयोगकर्ता से बंधे हैं। क्या यह अमान्य हो सकता है क्योंकि कोड में आप इसे एक अलग उपयोगकर्ता के रूप में एक्सेस कर रहे हैं जिसके लिए इसे बनाया गया था?

5

क्या जारीकर्ता का प्रमाणपत्र X509Store में मौजूद है? एक प्रमाण पत्र केवल तभी मान्य होता है जब आपके द्वारा भरोसा किया गया किसी व्यक्ति द्वारा हस्ताक्षरित किया गया हो।

क्या यह वास्तविक सीए से प्रमाण पत्र है, या आपने स्वयं हस्ताक्षर किए हैं? प्रमाणपत्र हस्ताक्षर उपकरण अक्सर डेवलपर्स द्वारा उपयोग किए जाते हैं, जैसे ओपनएसएसएल, डिफ़ॉल्ट रूप से कुछ महत्वपूर्ण एक्सटेंशन नहीं जोड़ते हैं।

संबंधित मुद्दे