2017-10-04 6 views
0

Actuellement, j'ai implémenté un serveur sécurisé en utilisant TCPListener et en essayant de me connecter à partir du client qui est, application Javascript via le navigateur. J'essaye de communiquer using SSLStream et le certificat approprié est fourni using la méthode suivante.Impossible de se connecter avec le serveur socket à partir d'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]; 
} 

Maintenant, quand je me connecte avec ce serveur en utilisant « WSS: // ipaddress: port », poignée de main et de la communication de données fonctionne bien si le client est en cours d'exécution à partir du navigateur Chrome, mais lorsque je me connecte même de l'explorateur Internet, client se connecte au serveur, mais aucune donnée n'est reçue en utilisant SSLStream, c'est-à-dire zéro octet de SSLStream et de nouveau automatiquement déconnecté du serveur.

Veuillez me faire savoir s'il existe des paramètres spécifiques au navigateur pour la connexion avec TCPListener pour les requêtes wss.

Internet Explorer Version: 11.0.9600.18738 (ne fonctionne pas)

Chrome Version: 61.0.3163.100 (Const officiel) (64 bits) (travail)

certificat utilisé est ajouté au certificat de confiance magasin . Même s'il fonctionne à partir de Chrome, il y a une autre question, il reçoit toujours deux demandes d'un clic du client. Dans le premier hit, il obtient un en-tête vide et automatiquement dans le second hit il obtient l'en-tête complet. Ce que j'ai essayé: Les requêtes non sécurisées provenant de la même application cliente fonctionnent correctement avec TCPListener Server à partir des navigateurs (Internet Explorer et Chrome). « Ws: // ipaddress: port

Répondre

0

J'ai eu le même problème, j'ai essayé de sauver l'empreinte du pouce dans la variable puis utilisé pour récupérer le certificat comme indiqué en dessous de code et cela a fonctionné pour moi

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