2013-06-09 15 views
5

मेरा प्रश्न this प्रश्न के समान है।ऑफ़लाइन निरस्तीकरण मोड

मैं केवल स्थानीय सीआरएल का उपयोग करके निरस्तीकरण सूची की जांच करने की कोशिश कर रहा हूं।

मैं X509Chain.Build() का उपयोग कर रहा

निम्नलिखित मानकों के साथ:

var chainMachine = new X509Chain(true); 
      chainMachine.ChainPolicy.RevocationFlag = X509RevocationFlag.EntireChain; 
      chainMachine.ChainPolicy.UrlRetrievalTimeout = TimeSpan.FromSeconds(30); 
      chainMachine.ChainPolicy.VerificationFlags = X509VerificationFlags.NoFlag; 
      chainMachine.ChainPolicy.VerificationTime = DateTime.Now; 
      chainMachine.ChainPolicy.RevocationMode = X509RevocationMode.Offline; 

लेकिन मैं निम्नलिखित त्रुटियाँ मिलती है:

  1. RevocationStatusUnknown => निरसन समारोह निरस्तीकरण जाँचने में असमर्थ है प्रमाण पत्र के लिए।
  2. ऑफ़लाइन रिवोकेशन => रिवोकेशन फ़ंक्शन प्रमाणपत्र के लिए निरसन की जांच करने में असमर्थ था क्योंकि निरसन सर्वर ऑफ़लाइन है।

अजीब बात मुद्दा हल हो गई है, कि एक बार मैं ऑनलाइन निरस्तीकरण सूची की जांच करने की कोशिश (एक परिणाम के रूप सीआरएल अद्यतन किया जाएगा) है। तो ऐसा लगता है कि कैश में कुछ भी होने के बाद समस्या को और पुन: उत्पन्न नहीं किया जा सकता है।

मैंने सोचा कि शायद त्रुटि संदेश गलत है और वास्तव में क्या होता है कि जब कैश खाली होता है तो कुछ अपवाद होता है जो इस संदेश को पॉप अप करने का कारण बनता है। दूसरा विकल्प यह है कि शायद कुछ ध्वज यह कह रहा है कि कैश को कभी-कभी अपडेट किया गया है, और यदि इसे कभी अपडेट नहीं किया गया है, तो यह बाहरी सर्वर से जानकारी प्राप्त करने का प्रयास करता है

कोई भी बता सकता है कि इसका क्या कारण है इस मुद्दे?

+0

मैं भी यही व्यवहार दिखाई दे रही है ।यह मुझे नहीं बताता कि सर्वर ऑफलाइन है, यह सिर्फ कहता है कि यह निरस्तीकरण की जांच नहीं कर सका। यह स्व-हस्ताक्षरित प्रमाणपत्रों के लिए प्रतीत नहीं होता है। – Mark

उत्तर

1

X509RevocationMode.None: सीआरएल या ओसीएसपी की जांच न करें।

X509RevocationMode.Offline: यदि कोई सीआरएल कैश किया गया है और अभी भी मान्य है, तो इसे निरसन के लिए उपयोग करें। अन्यथा, यदि प्रमाण पत्र को रद्द करना पड़ा था (EntireChain/ExcludeRoot/EndCertificateOnly के आधार पर), ऑफ़लाइन सत्यापन की रिपोर्ट करें | RevocationStatus अज्ञात। (ओसीएसपी प्रतिक्रियाओं को भी कैश किया जा सकता है यदि उनके अगले अद्यतन मूल्य से पता चलता है, लेकिन मुझे यकीन नहीं है कि यह करता है या नहीं)।

X509RevocationMode.Online: एक OCSP endpoint प्रमाण पत्र में वर्णन किया गया है, तो प्रदर्शन एक OCSP जांच। यदि ओसीएसपी एक निर्णायक उत्तर नहीं देता है और एक सीआरएल वितरण बिंदु परिभाषित किया गया है, तो सीआरएल के लिए कैश की जांच करें। यदि यह मान्य है, तो इसे निरसन के आधार के रूप में उपयोग करें; अन्यथा सीआरएल डाउनलोड करें और इसे कैश करें। यदि निरस्तीकरण स्थिति खोजने का प्रयास विफल रहता है, तो RevocationStatus अज्ञात सेट करें।

ऑफ़लाइन मोड सीआरएल की समाप्ति के कारण मुश्किल है। यहां तक ​​कि अगर आपने एक घंटे पहले ऑनलाइन अनुरोध किया था, तो इसका मतलब यह नहीं है कि ऑफलाइन अब काम करेगा। सबसे अच्छा उपयोग मैं इसके बारे में सोच सकता हूं जिससे खुशहाल मार्ग तेजी से बढ़ रहा है; और यदि आपको RevocationStatus अज्ञात या ऑफ़लाइन रिवोकेशन के अलावा कोई त्रुटि मिलती है तो श्रृंखला को विफल करने पर विचार करें ... लेकिन उनमें से किसी का अर्थ ऑनलाइन मोड से फिर से पूछना है।

(http://referencesource.microsoft.com के माध्यम से निर्धारित किया जा सकता है, ऑफलाइन CERT_CHAIN_REVOCATION_CHECK_CACHE_ONLY है, जो है के बारे में के रूप में कम https://msdn.microsoft.com/en-us/library/windows/desktop/aa376078(v=vs.85).aspx में प्रलेखित से मेल खाती है, लेकिन शायद "चेक कैश केवल" भाग अधिक शिक्षाप्रद है)

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