Vb.net dotnet中使用ssl的双向身份验证

Vb.net dotnet中使用ssl的双向身份验证,vb.net,authentication,ssl-certificate,two-way,ssl-security,Vb.net,Authentication,Ssl Certificate,Two Way,Ssl Security,我有一个项目,需要通过web请求发送数据文件。我们需要设置双向身份验证,也称为相互身份验证。我们不确定是否需要特殊证书,但我们知道它需要达到3级 我很难找到这个案例的示例代码。我不知道在哪里添加我们的证书信息。使用此代码,当我们尝试读取响应流时,会抛出一个基础连接关闭错误,并且永远不会调用ServicePointManager.ServerCertificateValidationCallback。以下是我所拥有的: ServicePointManager.ServerCertificateVa

我有一个项目,需要通过web请求发送数据文件。我们需要设置双向身份验证,也称为相互身份验证。我们不确定是否需要特殊证书,但我们知道它需要达到3级

我很难找到这个案例的示例代码。我不知道在哪里添加我们的证书信息。使用此代码,当我们尝试读取响应流时,会抛出一个
基础连接关闭
错误,并且永远不会调用
ServicePointManager.ServerCertificateValidationCallback
。以下是我所拥有的:

ServicePointManager.ServerCertificateValidationCallback=新安全性。RemoteCertificateValidationCallback(MyCertValidationCb的地址)
httpReq=CType(System.Net.HttpWebRequest.Create(url),HttpWebRequest)
将每个证书作为证书中的字符串
X509cert=X509Certificate2.CreateFromCertFile(证书)
X509cert2=新的X509Certe2(X509cert)
httpReq.ClientCertificates.Add(X509cert2)
下一个
httpReq.Method=“POST”POST方法
httpReq.ContentType=“text/xml”内容类型
'使用基于文本的编写器包装请求流
writer=newstreamwriter(httpReq.GetRequestStream())
'将XML文本写入流中
reader=新的StreamReader(filename.Name)
ret=reader.ReadToEnd()
reader.Close()
'将数据发送到Web服务器
编剧,编剧(ret)
writer.Close()
等待回应
Dim httpRsp As System.Net.HttpWebResponse=CType(httpReq.GetResponse(),HttpWebResponse)
sr=新的StreamReader(httpRsp.GetResponseStream)
responseText=sr.ReadToEnd
如果httpReq不是空的,那么
httpReq.GetRequestStream().Close()
如果结束
如果httpRsp不是空的,那么
httpRsp.GetResponseStream().Close()
如果结束
任何带有示例代码的博客提示或链接都非常好。
谢谢。

您不需要“特殊”证书。您的客户端需要自己的证书,并在连接中使用它来告诉服务器它的身份。这称为客户端证书。服务器应该正确处理这个问题

以下MSDN文章介绍了如何设置ClientCertificate:

您是否有防止在SOAP上使用WS-Security的特殊要求?在.NET和IIS(即WCF)之间,这将使用共享证书处理SSL传输和拒绝。切换到TLS和/或消息加密是设置标志的问题。那么,不需要类3,只需要类1 PKCS12,带有私钥,不需要可信的链根,就可以了。