猿问

TLS - TCP 客户端在 SslStream.AuthenticateAsClient

我对网络编程相当陌生,我需要通过 TLS 连接 TCP 客户端的帮助。我得到了一个已经编码的项目,它附带了证书和提供的公钥。我已经在我的本地机器上安装了 pfx 证书,并编写了一个指向本地主机的新 TCP 侦听器/服务器和 TCP 客户端,如下所示:


客户端


static void Main(string[] args)

    {

        string server = "localhost";

        TcpClient client = new TcpClient(server, 5997);

        ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls;


        //client.Connect(server, 5997);//connection without TLS - authenticating properly


        using (SslStream sslStream = new SslStream(client.GetStream(), false,

            new RemoteCertificateValidationCallback(ValidateServerCertificate), null))

        {

            try

            {

                var servername = "myAuthenticatingServerName";//the server name must be the same as the one on the server certificate

                sslStream.AuthenticateAsClient(servername);


                try

                {

                    Console.WriteLine("Client Connected...");


                    // Encode a test message into a byte array.

                    // Signal the end of the message using the "<EOF>".

                    byte[] messsage = Encoding.UTF8.GetBytes("Hello from the client.<EOF>");

                    // Send hello message to the server. 

                    sslStream.Write(messsage);

                    sslStream.Flush();

                    // Read message from the server.

                    string serverMessage = ReadMessage(sslStream);

                    Console.WriteLine("Server says: {0}", serverMessage);

                    // Close the client connection.

                    client.Close();

                    Console.WriteLine("Client closed.");


                }


                catch (Exception e)

                {

                    Console.WriteLine("Error..... " + e.StackTrace);

                }

            }

     

慕尼黑的夜晚无繁华
浏览 158回答 1
1回答

拉莫斯之舞

在服务器端,您正在侦听端口 8080,在客户端,您正在连接到端口 5997。更具体地说,您的服务器正在托管 [YourIP]:8080并且您的客户端正在尝试连接到 [YourIP]:5997此外,Tls 和 SSL 通常用于端口 443。客户端和服务器端口需要相同,以便它们可以相互连接。我也不确定c#是否将'localhost'识别为'YourIP'最好打开你的cmd(如果你使用的是Windows)输入'ipconfig'点击回车并查找并使用你的IPv4地址。
随时随地看视频慕课网APP
我要回答