2015-12-30 10 views
5

मैं यूनिट टेस्ट से कुख्यात "एसएसएल अपवाद" को ट्रैक कर रहा हूं - एक ही अपवाद रेसर्पर के तहत चल रहे परीक्षण, मेरे खाते के तहत कंसोल से नूनिट और बिल्ड सर्वर एकीकरण परीक्षणों पर उत्पन्न होता है। स्थानीय रूप से, कोड विंडोज 7 मशीन से चल रहा है जिसमें .NET 4.5.1 स्थापित है।"एसएसएल/टीएलएस सुरक्षित चैनल नहीं बना सका" भले ही SCHANNEL रिपोर्ट करता है "एक एसएसएल सर्वर हैंडशेक सफलतापूर्वक पूरा हो गया।"

System.Net.WebException: अनुरोध निरस्त किया गया था: एसएसएल/टीएलएस सुरक्षित चैनल नहीं बना सका।

मैं काफी यह हालांकि वे हाल ही में अद्यतन किया गया है, सख्ती से प्रमाण पत्र से संबंधित नहीं है कुछ कर रहा हूँ।

आईआईएस क्लाइंट प्रमाण पत्र और करने के लिए HTTPS कनेक्शन की आवश्यकता होती है के लिए सेटअप है - (दूसरी तरफ इस है विभिन्न वातावरण भर में likeliest संबंधित परिवर्तन विफलता का सही समय करीब-ish, लेकिन निश्चित नहीं है।) क्रोम में एक ही एंडपॉइंट "ग्रीन" है। यदि मैं क्रोम में एक अवैध क्लाइंट प्रमाणपत्र चुनता हूं तो मुझे सफलतापूर्वक बनाए गए HTTPS कनेक्शन पर आईआईएस की सेवा के 403 संदेश मिलते हैं।

सवाल:

  • क्यों (कैसे कर सकते हैं) सुरक्षित SSL/TLS चैनल निर्माण के बाद "हाथ मिलाना सफलतापूर्वक पूरा कर लिया" असफल रहा है?

  • क्या HTTP 403 निषिद्ध स्थिति प्रतिक्रिया है, और संभावित वेब क्लाइंट प्रोसेसिंग, एक कारक बिल्कुल है? यदि नहीं, तो इस पूछताछ पथ को त्याग दिया जा सकता है।

  • इस मुद्दे को डीबग करने में एक अच्छा अगला कदम क्या है? शुरुआती वार्ता के बाद सफलता (या विफलता) को इंगित करने के लिए कोई निश्चित निगरानी योग्य घटना है?


यहाँ मुद्दों अन्य पदों में पहचान को समाप्त करते हुए इकट्ठा किया गया है:

  • यह अपवाद पेड़ समाप्त होता है; नहीं आंतरिक "रिमोट प्रमाणपत्र प्रमाणीकरण प्रक्रिया के अनुसार अमान्य है" अपवाद, जो मैं प्रमाण पत्र त्रुटि पर अपेक्षा करता हूं।

  • Schannel के लिए 'सभी प्रवेश' के साथ सक्षम सर्वर

    एक SSL सर्वर हाथ मिलाना सफलतापूर्वक पूरा पता चलता है। वार्तालाप क्रिप्टोग्राफिक पैरामीटर निम्नानुसार हैं।

    प्रोटोकॉल: TLS 1.0/CipherSuite: 0x5/एक्सचेंज ताकत: 2048

  • एसएसएल हाथ मिलाना/नाकाम रहने इकाई परीक्षण से बातचीत Wireshark पर 'सफल लग रहा है'। (यह क्रोम अनुरोध के समान नहीं है और इसमें एक अलग वार्तालाप सिफर सूइट है।)

  • HTTP क्लाइंट टाइमआउट 100 सेकंड है, जो डिफ़ॉल्ट होना चाहिए।


थोड़ा मनोरंजक, पहले ऐसा न करने पर परीक्षण ShouldCompleteSslHandshakeFor[InvalidClientCert] है।


अद्यतन: स्थानीय मशीन के समारोह में दर्शक को देखने के बाद (मत पूछो क्यों यह सिर्फ मेरे लिए हुआ) में नाकाम रहने के कनेक्शन के लिए इसी प्रविष्टियों देखते हैं:

(Schannel) एसएसएल क्लाइंट क्रेडेंशियल प्राइवेट कुंजी तक पहुंचने का प्रयास करते समय एक घातक त्रुटि आई। क्रिप्टोग्राफिक मॉड्यूल से लौटा त्रुटि कोड 0x8009030d है। आंतरिक त्रुटि राज्य 10003.

यह निश्चित रूप से क्यों एन्क्रिप्टेड चैनल हाथ मिलाना के बाद विफल रहता है के लिए एक वैध कारण होगा।

+0

क्या वेब क्लाइंट प्रक्रिया में क्लाइंट प्रमाणपत्र की निजी कुंजी तक पहुंच है? (एमएमसी कंसोल में अपने प्रमाण पर राइट-क्लिक करें -> सभी कार्य -> ​​निजी कुंजी प्रबंधित करें)। – Alex

+0

@Alex मुझे स्थानीय ईवेंट व्यूअर में त्रुटि मिली, इसलिए मुझे लगता है कि यह निश्चित रूप से ऐसा कुछ है - मैं अब कोशिश कर रहा हूं। – user2864740

+0

@Alex हमारे पास एक विजेता है (धन्यवाद)! केवल प्रशासक के पास पहुंच थी; सभी स्थानीय उपयोगकर्ताओं को पढ़ें (=^_^=) अपवाद को ठीक किया गया। अब मेरे पास ओपी के साथ जाने के लिए कुछ है। मुझे यह भी आश्चर्य है कि शायद क्लाइंट प्रमाण पत्र पढ़ने के लिए कोड नहीं है .. सबसे अच्छा। मैं उम्मीद करता था कि यह मेरे व्यक्तिगत स्टोर में पहले से ही कॉर्ट का उपयोग करे, और उन्हें दोनों स्थानों पर रखने पर मुझे कुछ अंधेरे लगाए जाएं। – user2864740

उत्तर

4

सुनिश्चित करें कि क्लाइंट प्रमाण पत्र तक पहुंचने वाली प्रक्रिया प्रमाणपत्र की निजी कुंजी तक पहुंच है। प्रमाणपत्र प्लगइन के साथ

एमएमसी कंसोल -> राइट क्लिक करें निर्दिष्ट प्रमाण पत्र -> सभी कार्य -> ​​निजी कुंजी का प्रबंधन करें।

+0

यह वास्तव में समस्या थी। दिन का सबक: * स्थानीय * स्कैनल (और अन्य घटना) लॉग भी देखें। – user2864740

2

मेरे प्रश्नों के उत्तर:

क्यों (कैसे कर सकते हैं) सुरक्षित SSL/TLS चैनल निर्माण के बाद "हाथ मिलाना सफलतापूर्वक पूरा कर लिया" असफल रहा है?

सुरक्षित चैनल एन्क्रिप्शन अभी भी हाथ मिलाना/बातचीत चरण है, जो केवल क्या प्रमाणपत्र/क्रिप्टो का उपयोग करने के लिए पर फैसला बाद असफल हो सकता है। इस मामले में ऐसा इसलिए था क्योंकि सुरक्षा कुंजी के कारण निजी कुंजी (क्लाइंट प्रमाणपत्र पर) उपलब्ध नहीं थी।

क्या HTTP 403 निषिद्ध स्थिति प्रतिक्रिया है, और संभावित वेब क्लाइंट प्रोसेसिंग, एक कारक बिल्कुल है? यदि नहीं, तो इस पूछताछ पथ को त्याग दिया जा सकता है।

नहीं। सर्वर हैंडलर को भी बुलाए जाने से पहले त्रुटि एसएसएल/टीएलएस एन्क्रिप्शन में विफल होने के कारण होती है। यह एक गुमराह सवाल था जो स्ट्रॉ पर पकड़ रहा था।

इस मुद्दे को डीबग करने में एक अच्छा अगला कदम क्या है? शुरुआती वार्ता के बाद सफलता (या विफलता) को इंगित करने के लिए कोई निश्चित निगरानी योग्य घटना है? प्रासंगिक इवेंट लॉग में

देखो - इस मामले था कि स्थानीय मशीन है, जहां एक महत्वपूर्ण त्रुटि संदेश सूचना दी जा रही थी के लिए Schannel लॉग में। यह संभावना है कि अगर enabling tracing as discussed here त्रुटि भी मिलती है।

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

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