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