目前我已经使用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地址:端口
答案 0 :(得分:0)
我有同样的问题,我试图在变量中保存拇指打印,然后用它来获取证书,如下面的代码所示,它对我有用。
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];
}