2010-12-14 15 views
7

私はWebリクエストを通じてデータファイルを送信する必要があるプロジェクトを持っています。相互認証とも呼ばれる双方向認証をセットアップする必要があります。特別な証明書が必要かどうかはわかりませんが、レベル3にする必要があることはわかっています。dotnetでsslを使用した双方向認証

このケースのサンプルコードを見つけるのに問題があります。私は証明書情報をどこに追加するか分かりません。このコードでは、応答ストリームを読み込もうとするとUnderlying connection is closedエラーがスローされ、ServicePointManager.ServerCertificateValidationCallbackは呼び出されません。ここで私が持っているものです。

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

あなたは、SOAPにWS-Securityを使用しないように、特定の要件を持っていますか? .NETとIISの間(WCF)では、共有証明書を使用したSSLの転送と拒否が処理されます。 TLSやメッセージの暗号化に切り替えることは、フラグを設定することです。クラス3の必要はなく、クラス1のPKCS12は秘密鍵で、信頼できるチェーンルートは必要ありません。 – ssamuel

答えて

1

「特別な」証明書は必要ありません。クライアントは独自の証明書を必要とし、接続時にその証明書を使用してサーバーにIDを通知します。これはクライアント証明書と呼ばれます。サーバーはこれを適切に処理する必要があります。あなたのClientCertificateを設定する方法について

次のMSDNの記事会談: http://msdn.microsoft.com/en-us/library/ms732391.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-2

関連する問題