加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 套接字和身份验证失败,因为远程方已关闭WPF中的传输流异常

发布时间:2020-12-15 08:46:13 所属栏目:百科 来源:网络整理
导读:我正在尝试连接基于 Java netty的服务器,它自动为自己生成证书(服务器人告诉我,现在接受来自客户端的任何证书). 我的任务是将TcpSocket连接迁移到Tls加密连接. 首先,我将TcpSocket转换为NetworkStream: using (var client = new NetworkStream(connection.T
我正在尝试连接基于 Java netty的服务器,它自动为自己生成证书(服务器人告诉我,现在接受来自客户端的任何证书).

我的任务是将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方法中的主机名意味着什么,如果服务器接受每个证书?我应该把重点放在哪里吗?

我仍然可以联系服务器人员,所以我可以向他们询问一切 – 我们是否需要任何其他信息?

解决方法

搞定了.

托管套接字服务器的服务器必须在其认证存储上安装带有私钥的证书.如果您在没有它的情况下安装它(只是证书或只是公钥),您将获得身份验证失败的错误.

我希望它有所帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读