2010-12-14 19 views
7

Bir web isteği aracılığıyla bir veri dosyası göndermem gereken bir projem var. Karşılıklı kimlik doğrulama olarak da bilinen iki yönlü kimlik doğrulaması kurmamız gerekiyor. Özel bir sertifikaya ihtiyacımız olup olmadığından emin değiliz ancak 3. seviye olması gerektiğini biliyoruz.dotnet içinde ssl kullanılarak iki yönlü kimlik doğrulaması

Bu örnek için örnek kod bulmakta zorlanıyorum. Sertifika bilgilerimizi nereye ekleyeceğimi bilmiyorum. Bu kodla, yanıt akışını okumaya çalıştığımızda Underlying connection is closed hatası atılır ve ServicePointManager.ServerCertificateValidationCallback asla çağrılmaz. İşte sahip olduğum şey:

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 

Örnek kod içeren blog'lara herhangi bir ipucu veya linki harika olurdu. Teşekkürler.

+2

Eğer SOAP WS-Security kullanılmasını engelleyen belirli bir gereksinimi var mı:

sizin ClientCertificate nasıl ayarlanacağı hakkında aşağıdaki MSDN makale görüşmeler

? .NET ve IIS, yani WCF arasında, bu, paylaşılan bir sertifika kullanılarak SSL aktarımı ve reddi işlemlerini ele alır. TLS'ye ve/veya mesaj şifrelemeye geçmek, bayrakların ayarlanması meselesidir. Öyleyse, 3. Sınıf'a gerek yok, sadece 1 numaralı PKCS12, özel anahtarlı, güvenilir bir zincir köküne gerek yok, işe yarayacaktı. – ssamuel

cevap