为了账号安全,请及时绑定邮箱和手机立即绑定

即使我的网站是在 SSL 下提供服务,我是否可以强制我的 Web 套接字不使用 SSL?

即使我的网站是在 SSL 下提供服务,我是否可以强制我的 Web 套接字不使用 SSL?

C#
幕布斯6054654 2023-08-20 11:10:07
我有一个 JavaScript 客户端。我有一个网络套接字,它正在尝试与我的服务器通信。我的网络应用程序在 https 下运行,我使用 Open SSL 来获取我的证书。在我的 C# 中,我使用 Socket 对象来接收客户端请求。我的客户端可以连接,但当我尝试读取/解析标头时,它已加密。(我不知道如何解密)。如果我的网络套接字不使用 SSL,问题就会消失。但是,即使我将客户端中的 uri 设置为:var url = "ws://192.168.0.9:8090/Relayer";改为:var url = "wss://192.168.0.9:8090/Relayer";这是我的服务器代码://server starting to listenserverSocket = new Socket( AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP );serverSocket.Bind( new IPEndPoint( IPAddress.Any, 8090 ) );serverSocket.Listen( 128 );serverSocket.BeginAccept( null, 0, OnAccept, null );//server responding to Client Request:private static Socket serverSocket;private static void OnAccept(IAsyncResult result){    byte[] buffer = new byte[1024];    try    {        Socket client = null;        string headerResponse = "";        if (serverSocket != null && serverSocket.IsBound)        {            client = serverSocket.EndAccept(result);            var i = client.Receive(buffer);            //my many attempts to read the data....                   string unicode = (Encoding.UTF8.GetString(buffer)).Substring(0, i);            string str = Uri.UnescapeDataString(unicode);            var outputs = System.Net.WebUtility.HtmlDecode(unicode);        }        if (client != null)        {            /* Handshaking and managing ClientSocket */        }    }    catch (SocketException ex)    {        Logger.LogVerbose(LoggerNames.Error, ex.ToString());    }    finally    {        if (serverSocket != null && serverSocket.IsBound)        {            serverSocket.BeginAccept(null, 0, OnAccept, null);        }    }}那么,我可以强制我的 Web 套接字不使用 SSL 吗?谢谢好吧,阅读完内容后,我明白混合 http 和 https、ws 和 wss 不是一个好主意。任何使用 SSL/wss 使其工作的想法都会很好:)
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

即使我的网站是在 SSL 下提供服务,我是否可以强制我的 Web 套接字不使用 SSL?

如果您的 JavaScrip 客户端遵循安全约定,那么答案是否定的。答案也是“不应该”。

造成这种情况的原因有很多,但以下原因就足够了:

当用户观察到该网站已加密时,他们会认为他们共享的任何私人信息都不会被第三方看到。这是加密所做出的承诺的一部分。然而,如果在声明站点已加密后允许明文(未加密)通信,则可能会打破这一承诺

这就是为什么安全客户端不允许在安全网站内进行非加密通信(即 WebSockets、XHR 等)。

我的客户端可以连接,但当我尝试读取/解析标头时,它已加密。(我不知道如何解密)。

加密的数据应通过 SSL 层才能解密。

通常,许多语言都会提供“SSL 套接字”抽象,其行为类似于套接字,但会自动加密/解密数据。

查看完整回答
反对 回复 2023-08-20
  • 1 回答
  • 0 关注
  • 53 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信