
我的任务是将Tcpsocket连接迁移到Tls加密连接.
首先,我将Tcpsocket转换为NetworkStream:
using (var clIEnt = new NetworkStream(connection.Tcpsocket)){ if (clIEnt.CanRead) { clIEnt.BeginRead(recvstate.DataBuffer,recvstate.DataBuffer.Length,ReceiveCallback,recvstate); }} 这是完美的.那么,我决定构建SslAuthentication – 就像这里:
using (var clIEnt = new NetworkStream(connection.Tcpsocket))using (var sslStream = new SslStream(clIEnt,false,App_CertificateValIDation)){ var clIEntCertificate = new X509Certificate2("clIEnt.pfx"); var clIEntCertificateCollection = new X509Certificate2Collection(new[] { clIEntCertificate }); sslStream.AuthenticateAsClIEnt("MyServer",clIEntCertificateCollection,SslProtocols.Tls,false); if (sslStream.CanRead) { sslStream.BeginRead(recvstate.DataBuffer,recvstate); }} 其中clIEnt.pfx是没有密码的随机证书,作为项目中的文件,也导入到当前用户证书>个人> certmgr.msc中的证书.
问题是AuthenticateAsClIEnt抛出一个
System.IO.IOException: Authentication Failed because the remote party
has closed the transport stream exception.
另外,如果AuthenticateAsCtlIEnt方法中的主机名意味着什么,如果服务器接受每个证书?我应该把重点放在哪里吗?
我仍然可以联系服务器人员,所以我可以向他们询问一切 – 我们是否需要任何其他信息?
解决方法 搞定了.托管套接字服务器的服务器必须在其认证存储上安装带有私钥的证书.如果您在没有它的情况下安装它(只是证书或只是公钥),您将获得身份验证失败的错误.
我希望它有所帮助.
总结以上是内存溢出为你收集整理的c# – 套接字和身份验证失败,因为远程方已关闭WPF中的传输流异常全部内容,希望文章能够帮你解决c# – 套接字和身份验证失败,因为远程方已关闭WPF中的传输流异常所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)