2017-10-04 4 views
0

Derzeit habe ich einen sicheren Server mithilfe von TCPListener implementiert und versuchen, eine Verbindung vom Client, die Javascript-Anwendung über Browser ist. Ich versuche, mit SSLStream zu kommunizieren, und das richtige Zertifikat wird mit der folgenden Methode bereitgestellt.Verbinden mit Socket-Server aus Internet Explorer

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]; 
} 

Nun, wenn ich eine Verbindung mit diesem Server mit „WSS: // ip-adresse: port“, Handshake und Datenkommunikation funktioniert gut, wenn Client von Chrome-Browser ausgeführt wird, aber wenn ich eine Verbindung derselben von Internet Explorer, Client wird mit dem Server verbunden, aber es werden keine Daten mit SSLStream empfangen, dh null Bytes von SSLStream und wieder wird automatisch die Verbindung zum Server getrennt.

Bitte lassen Sie mich wissen, gibt es browserspezifische Einstellungen für die Verbindung mit TCPListener für wss Anfragen.

Internet Explorer Version: 11.0.9600.18738 (Arbeiten nicht)

Chrome Version: 61.0.3163.100 (Official Erstellung) (64-Bit) (Working)

Zertifikat verwendet wird, um Trusted Certificate Store hinzugefügt wird . Auch wenn es von Chrome funktioniert, gibt es noch eine Frage, es werden immer zwei Anfragen für einen Klick vom Client erhalten. Beim ersten Treffer wird ein leerer Header und automatisch beim zweiten Treffer der volle Header.

Was ich versucht habe: Nicht sichere Anfragen von derselben Client-Anwendung funktionieren ordnungsgemäß mit TCPListener Server von beiden Browsern (Internet Explorer und Chrome). „Ws: // ip-adresse: port

Antwort

0

ich hatte das gleiche Problem habe ich versucht, Daumendruck in Variablen zu speichern und verwenden es dann um das Zertifikat zu holen wie in Code unten gezeigt und es funktionierte für mich

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]; 
} 
.