【发布时间】: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