C# - 使用fleck的TLS / SSL Websockets

时间:2014-02-28 18:40:49

标签: c# ssl websocket

我正在尝试使用Fleck lib建立TLS / SSL websocket连接。

  

https://github.com/statianzo/Fleck(0.9.8.25)

现在我得到了服务器的启动 但是当客户端连接时,我收到以下消息。

28-02-2014 19:16:15 [Info] Server started at wss://localhost:8081
28-02-2014 19:18:51 [Debug] Client connected from 127.0.0.1:62543
28-02-2014 19:18:51 [Debug] Authenticating Secure Connection
28-02-2014 19:18:52 [Debug] 0 bytes read. Closing.

任何人都知道我做错了什么?

  

浏览器:Chrome,版本:33.0.1750.117

//示例代码。

        FleckLog.Level = LogLevel.Debug;

        var allSockets = new List<IWebSocketConnection>();

        var server = new WebSocketServer("wss://localhost:8081");

        server.Certificate = new X509Certificate2(@"CRT.pfx", "Pwd");

        server.Start(socket =>
        {

            socket.OnOpen = () =>
            {
                Console.WriteLine("Open!");
                allSockets.Add(socket);
            };
            socket.OnClose = () =>
            {
                Console.WriteLine("Close!");
                allSockets.Remove(socket);
            };
            socket.OnMessage = message =>
            {

                foreach (var user in allSockets.ToList())
                {
                     if(user.ConnectionInfo.Id != socket.ConnectionInfo.Id){
                         user.Send(message);
                     }
                }

            };
        });


        var input = Console.ReadLine();

        while (input != "exit")
        {

            foreach (var socket in allSockets.ToList())
            {
                socket.Send(input);
            }

            input = Console.ReadLine();
        }

1 个答案:

答案 0 :(得分:0)

证书是否由浏览器信任的CA签名?如果没有,您使用Chrome打开的网页必须使用HTTPS,以便系统可以提示您接受证书,否则连接将失败。

即使这样做不起作用,请尝试使用WebSocketListener并告诉我你得到的错误。

我发现调试WSS的一些问题:

  • 请记住将端口号更改为与用于非安全连接的端口号不同的端口号。如果突然端口变得安全或反之亦然,一些浏览器会感到困惑。
  • 请记住使用证书中指示的主机名来连接而不是IP。
  • 如果您使用的是自签名证书,请将其用于HTTPS,以便您可以看到接受该证书的对话框。通过WSS访问://没有证书接受对话框时,它将无法连接。

尝试使用自签名证书,看看它是否有效。