2010-12-14 25 views
7

में एसएसएल का उपयोग करके दो-तरफा प्रमाणीकरण मेरे पास एक प्रोजेक्ट है जहां मुझे वेब अनुरोध के माध्यम से डेटाफाइल भेजने की आवश्यकता है। हमें दो-तरफा प्रमाणीकरण को भी पारस्परिक प्रमाणीकरण के रूप में जाना जाता है। हमें यकीन नहीं है कि हमें एक विशेष प्रमाणपत्र की आवश्यकता है या नहीं, लेकिन हम जानते हैं कि इसे स्तर 3 होना चाहिए।डॉटनेट

मुझे इस मामले के लिए नमूना कोड खोजने में परेशानी हो रही है। मुझे नहीं पता कि हमारी प्रमाण जानकारी कहां जोड़नी है। इस कोड के साथ जब हम प्रतिक्रिया स्ट्रीम को पढ़ने का प्रयास करते हैं और ServicePointManager.ServerCertificateValidationCallback कभी नहीं कहा जाता है तो Underlying connection is closed त्रुटि फेंक दी जाती है। यहां मेरे पास है:

ServicePointManager.ServerCertificateValidationCallback = New Security.RemoteCertificateValidationCallback(AddressOf MyCertValidationCb) 
      httpReq = CType(System.Net.HttpWebRequest.Create(url), HttpWebRequest) 
      For Each cert As String In certs 
       X509cert = X509Certificate2.CreateFromCertFile(cert) 
       X509cert2 = New X509Certificate2(X509cert) 
       httpReq.ClientCertificates.Add(X509cert2) 
      Next 
      httpReq.Method = "POST"  ' Post method 
      httpReq.ContentType = "text/xml"    ' content type 

      ' Wrap the request stream with a text-based writer 
      writer = New StreamWriter(httpReq.GetRequestStream()) 
      ' Write the XML text into the stream 
      reader = New StreamReader(filename.Name) 
      ret = reader.ReadToEnd() 
      reader.Close() 
      ' Send the data to the webserver 
      writer.WriteLine(ret) 
      writer.Close() 
      ' Wait for response 
      Dim httpRsp As System.Net.HttpWebResponse = CType(httpReq.GetResponse(), HttpWebResponse) 
      sr = New StreamReader(httpRsp.GetResponseStream) 
      responseText = sr.ReadToEnd 

      If httpReq IsNot Nothing Then 
       httpReq.GetRequestStream().Close() 
      End If 
      If httpRsp IsNot Nothing Then 
       httpRsp.GetResponseStream().Close() 
      End If 

नमूना कोड वाले ब्लॉग के लिए कोई सुझाव या लिंक बहुत अच्छा होगा। धन्यवाद।

+2

आप एक विशेष आवश्यकता है कि सोप पर WS-सुरक्षा उपयोग करने से रोकती है? .NET और IIS के बीच, यानी, डब्ल्यूसीएफ, यह एक साझा प्रमाण का उपयोग कर एसएसएल परिवहन और अस्वीकरण को संभालेगा। टीएलएस और/या संदेश एन्क्रिप्शन तक स्विचिंग झंडे को सेट करने का मामला है। कक्षा 3 के लिए कोई ज़रूरत नहीं है, केवल एक कक्षा 1 पीकेसीएस 12, निजी कुंजी के साथ, एक विश्वसनीय श्रृंखला रूट की आवश्यकता नहीं है, काम करेगा। – ssamuel

उत्तर

1

आपको 'विशेष' प्रमाणपत्र की आवश्यकता नहीं है। आपके क्लाइंट को अपने प्रमाण पत्र की आवश्यकता है और सर्वर को इसकी पहचान बताने के लिए कनेक्शन में इसका इस्तेमाल करें। इसे क्लाइंट सर्टिफिकेट कहा जाता है। सर्वर को इसे ठीक से संभालना चाहिए।

कैसे अपने ClientCertificate स्थापित करने के लिए के बारे में निम्न MSDN लेख वार्ता: http://msdn.microsoft.com/en-us/library/ms732391.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

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