मैं https पर सार्वजनिक रूप से होस्ट की गई SOAP वेब सेवा (WCF नहीं) तक पहुंचने का प्रयास कर रहा हूं, और मुझे एक त्रुटि मिल रही है जिसे मैंने कभी नहीं देखा है। सबसे पहले, यहां तथ्य हैं:डब्ल्यूसीएफ क्लाइंट को क्लाइंट प्रमाणपत्र भेजने के लिए कैसे मजबूर करें?
- इस सेवा के लिए ग्राहक प्रमाणपत्र की आवश्यकता है। मेरे पास एक प्रमाणपत्र है जो उसी सीए द्वारा सर्वर के प्रमाण पत्र के रूप में हस्ताक्षरित है।
- मुझे पता है कि यूआरएल उपलब्ध है, क्योंकि मैं इसे इंटरनेट एक्सप्लोरर में मार सकता हूं। आईई "प्रमाणपत्र चुनें" विंडो लाता है, और यदि मैं इसे चुनता हूं (और सर्वर-होस्ट-नाम-करता-नहीं-मैच-प्रमाणपत्र त्रुटि को अनदेखा करता है), यह चलता है और मुझे एक HTTP 500 त्रुटि देता है।
- यदि मैं क्रोम में साइट खोलता हूं, तो प्रमाणपत्र चुनने और त्रुटि को अनदेखा करने के बाद, मुझे WSA Action = null के बारे में एक सामान्य त्रुटि संदेश मिलता है।
- अगर मैं फ़ायरफ़ॉक्स में साइट खोलता हूं, तो त्रुटि को अनदेखा करने के बाद, मुझे एक पृष्ठ मिलता है कि सर्वर मेरे प्रमाणपत्र को कैसे सत्यापित नहीं कर सका। उसने मुझे कभी भी लेने के लिए नहीं कहा, जिससे यह सही समझ में आता है।
अब, अपवाद:
Error occurred while executing test 12302: System.ServiceModel.Security.SecurityNegotiationException: Could not establish secure channel for SSL/TLS with authority 'ihexds.nist.gov:9085'. ---> System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
at System.Net.HttpWebRequest.GetResponse()
at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
मैं WireShark के साथ बातचीत का पता लगाया गया है, लेकिन क्योंकि मैं टीएलएस प्रोटोकॉल में एक विशेषज्ञ नहीं हूँ, मैं क्या हो रहा है के रूप में सुराग याद किया जा सकता । , बीजलेख सूट का समर्थन किया, आदि
- एक यादृच्छिक संख्या, दिनांक/समय तरह बातें शामिल हैं -
- सी -: यहाँ, तथापि, मैं क्या देखते हो है > सी सर्वर हैलो, प्रमाणपत्र, प्रमाणपत्र अनुरोध, सर्वर हैलो हो गया
- सर्वर का सुरक्षा प्रमाणपत्र शामिल हैं, और एक क्लाइंट प्रमाणपत्र
के लिए एक अनुरोध
- सी -> एस प्रमाणपत्र, क्लाइ एक्सचेंज, बदलें सिफर युक्ति, एन्क्रिप्टेड हैंडशेक संदेश
- यहाँ दिलचस्प भाग - इस पैकेट के पहले भाग प्रमाणपत्र हाथ मिलाना, जहां मैं क्लाइंट प्रमाणपत्र ग्रहण करेंगे है हो, लेकिन कोई प्रमाणपत्र मौजूद नहीं है (प्रमाणपत्र लंबाई: 0)।
- एस -> सी चेतावनी (स्तर: घातक, विवरण: बुरा प्रमाणपत्र)
- खैर, हाँ, वहाँ भेजा कोई प्रमाण पत्र था।
मेरे बंधन की स्थापना की है इस प्रकार है:
<binding name="https_binding"> <textMessageEncoding /> <httpsTransport useDefaultWebProxy="false" /> </binding>
मेरे व्यवहार की स्थापना की है इस प्रकार है:
<behavior name="clientcred"> <clientCredentials> <clientCertificate findValue="69b6fbbc615a20dc272a79caa201fe3f505664c3" storeLocation="CurrentUser" storeName="My" x509FindType="FindByThumbprint" /> <serviceCertificate> <authentication certificateValidationMode="None" revocationMode="NoCheck" /> </serviceCertificate> </clientCredentials> <messageInspector /> </behavior>
मेरे endpoint उपयोग करने के लिए सेट किया गया है दोनों बंधन और व्यवहार। जब डब्ल्यूसीएफ ने https कनेक्शन बनाया है तो प्रमाण पत्र भेजने से इनकार क्यों करता है?
- सी -: यहाँ, तथापि, मैं क्या देखते हो है > सी सर्वर हैलो, प्रमाणपत्र, प्रमाणपत्र अनुरोध, सर्वर हैलो हो गया
मुझे डब्ल्यूसीएफ से इतना नफरत है। यह समाधान मेरे लिए काम करता है, धन्यवाद ढेर - लेकिन यह सब ठीक है। अब मुझे मार दो। – robnick