由于意外的数据包格式,握手失败。当SSeStreacm.AuthenticateAsServer()调用时

时间:2018-11-28 19:28:57

标签: ssl https proxy x509 sslhandshakeexception

嗨,我尝试使用c#在Windows中创建代理应用, 我创建了一个将代理设置更改为环回并从浏览器接收Web请求的应用程序。首先接受传入的套接字,然后在下一步中获取SSl流,尝试访问AuthenticateAsServer。对于身份验证需要X509Certificate,我尝试创建许多证书并使用它们,但是在调用身份验证功能时引发“握手由于意外的数据包格式而失败”异常。 删除SslStream并使用networkstream时,会收到https请求,但尝试向浏览器发送响应时,浏览器发送请求很多次,并显示包含“ TLS安全性...”的消息。请帮助我。

IPEndPoint ServerEndPoint = new IPEndPoint(ServerHostEntry.AddressList[0], 36900);

        ////Server2Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
        ////Server2Socket.Bind(ServerEndPoint);
        ////Server2Socket.Listen(100);
        ////Server2Socket.BeginAccept(AccepetSocketCallBack, ServerSocket);
        ServerSocket = new TcpListener(ServerEndPoint);
        ServerSocket.Start(100);
        Running = true;
        ServerSocket.BeginAcceptTcpClient(AccepetSocketCallBack, ServerSocket);
private void AccepetSocketCallBack(IAsyncResult ar)
    {
        if(Running)
        {
            //Socket E = Server2Socket.EndAccept(ar);
            //byte[] Data = new byte[1024 * 100];
            //E.Receive(Data, SocketFlags.None);
            //string Str = Encoding.ASCII.GetString(Data);
            //Server2Socket.BeginAccept(AccepetSocketCallBack, Server2Socket);
            ClientClass NewClient = new ClientClass(MainWindow.ServerAddress, 32138, Clients.Count);
            NewClient.ClientSocket = ServerSocket.EndAcceptTcpClient(ar);
            NewClient.ClientSream = NewClient.ClientSocket.GetStream();
            NewClient.InitialSocket();
            //Clients.Add(NewClient);
            ServerSocket.BeginAcceptTcpClient(AccepetSocketCallBack, ServerSocket);
        }

    }
 public void InitialSocket()
    {
        try
        {


            X509Store store = new X509Store(StoreName.My , StoreLocation.LocalMachine);
            store.Open(OpenFlags.MaxAllowed);
            S = new SslStream(ClientSream, false);
            S.AuthenticateAsServer(store.Certificates[0] , false , System.Security.Authentication.SslProtocols.Tls12 , true);
            S.BeginRead(RecivedDataContiner, 0, RecivedDataContiner.Length, ReciveCallBack, S);
        }
        catch(Exception E)
        {
            ClientSream.BeginRead(RecivedDataContiner, 0, RecivedDataContiner.Length, ReciveCallBack, ClientSream);
        }
        //ClientSream.BeginRead(RecivedDataContiner,0, RecivedDataContiner.Length , ReciveCallBack, ClientSream);
    }

我尝试使用许多证书,例如localhost由makecert.exe创建,IIS证书,我的网站ssl证书,x509Store和openssl等。但是任何时候都可能出现上述异常。请帮助。 我测试了MSDN Example,但还是一样。

0 个答案:

没有答案