目前,我已经使用 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://ip地址:端口
最佳答案
我遇到了同样的问题,我尝试将指纹保存在变量中,然后使用它来获取证书,如下面的代码所示,它对我有用。
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];
}
关于c# - 无法从 Internet Explorer 连接套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46559179/