【问题标题】:Unable to connect with socket server from internet explorer无法从 Internet Explorer 连接到套接字服务器
【发布时间】:2018-03-15 12:17:01
【问题描述】:

目前我已经使用 TCPListener 实现了一个安全服务器,并尝试从客户端连接到它,即通过浏览器的 Javascript 应用程序。我正在尝试使用 SSLStream 进行通信,并使用以下方法提供了正确的证书。

private static X509Certificate2 GetServerCert()
{
    X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
    store.Open(OpenFlags.ReadOnly);
    X509Certificate2Collection cert = store.Certificates.Find(X509FindType.FindByThumbprint, "XXXXXX-THUMBPRINT_OF_CERTIFICATE_HERE-XXXXXXX", true);
    return cert[0];
}

现在,当我使用 "wss://ipaddress:port" 与此服务器连接时,如果客户端从 Chrome 浏览器运行,但当我从 Internet Explorer 连接时,握手和数据通信效果很好,客户端与服务器连接,但使用 SSLStream 没有接收到数据,即 SSLStream 的零字节,并再次自动与服务器断开连接。

请让我知道是否有任何浏览器特定设置可用于连接 TCPListener 以进行 wss 请求。

Internet Explorer 版本:11.0.9600.18738(不工作)

Chrome 版本:61.0.3163.100(官方构建)(64 位)(工作中)

正在使用的证书已添加到受信任的证书存储中。 即使它可以在 Chrome 上运行,还有一个问题,它总是会从客户端获得两次单击请求。在第一次命中时,它会获得空白标题,然后在第二次命中时自动获得完整的标题。

我尝试过的:来自同一客户端应用程序的非安全请求与来自浏览器(Internet Explorer 和 Chrome)的 TCPListener Server 一起正常工作。 "ws://ipaddress:port

【问题讨论】:

    标签: c# sockets ssl websocket tcplistener


    【解决方案1】:

    我遇到了同样的问题,我尝试将指纹保存在变量中,然后使用它来获取证书,如下面的代码所示,它对我有用。

    private static X509Certificate2 GetServerCert()
    {
        X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); 
        store.Open(OpenFlags.ReadOnly);
        string thumbPrint = "XXXXXX-THUMBPRINT_OF_CERTIFICATE_HERE-XXXXXXX";
        X509Certificate2Collection cert = store.Certificates.Find(X509FindType.FindByThumbprint, thumbPrint, true);
        return cert[0];
    }
    

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 1970-01-01
      • 1970-01-01
      • 2023-02-08
      • 2018-11-29
      • 2016-03-10
      • 1970-01-01
      • 2015-11-14
      • 2021-02-18
      相关资源
      最近更新 更多