2017-12-25 20 views
0

Ich versuche, Websocket-Kommunikation zwischen meinem Java-Client basierend auf https://github.com/TakahikoKawasaki/nv-websocket-client und Server wss: //echo.websocket.org mit Fiddler zu erfassen. Ich kann nicht sichere Verbindung (ws: //) hören, indem ich den Klienten zu localhost: 8888 mit Proxifier oder ProxyCap umadressiere. Mit TLS bekomme ich jedoch einen Fehler: The certificate of the peer does not match the expected hostname (echo.websocket.org). Wie kann ich dieses Problem lösen, ohne den Quellcode des Clients zu ändern? Mit browser (chrome/firefox) kann ich alles problemlos sehen (ich vertraue Fiddlers Wurzelzertifikat). Ich verwende Windows 7.Umgehung TLS-Zertifikat nicht übereinstimmen

bearbeiten mit mehr Info:
ich EricLaw Lösung versucht, aber das Ergebnis ist das gleiche. Ich druckte Prüfschritte innerhalb des Client:

//direct connection: 
(SocketConnector)mSocket.InetAddress: echo.websocket.org/174.129.224.73 
(SocketConnector)mSocket.getLocalSocketAddress: /192.168.0.100:2044 
(SSLSession)verify: host=echo.websocket.org 
(SSLSession)verify: cipher suite=TLS_RSA_WITH_AES_128_CBC_SHA256 
(SSLSession)verify: peer host=echo.websocket.org 
(SSLSession)verify: session.toString=[Session-1, 
TLS_RSA_WITH_AES_128_CBC_SHA256] 
verifyHostName: hostName=echo.websocket.org, pattern=*.websocket.org 
VERIFIED! 

//proxy+fiddler: 
(SocketConnector)mSocket.InetAddress: echo.websocket.org/174.129.224.73 
(SocketConnector)mSocket.getLocalSocketAddress: /127.0.0.1:2039 
(SSLSession)verify: host=echo.websocket.org 
(SSLSession)verify: cipher suite=SSL_NULL_WITH_NULL_NULL 
(SSLSession)verify: peer host=null 
(SSLSession)verify: session.toString=[Session-1, SSL_NULL_WITH_NULL_NULL] 

Innen Fiedler:
200 HTTP Tunnel to 174.129.224.73:443 proxifier:5840
Es gibt keine Antwort auf die CONNECT Header (SessionID: empty). Ich probierte auch Kombinationen von Protocols: <client>;ssl3;tls1.0;tls1.1;tls1.2
und ich fügte FiddlerRoot.cer zu Java cacerts hinzu.
Ich würde mehr Ideen zu schätzen wissen.

Edit 2
Ich hatte das CERT auf einen falschen Schlüsselspeicher mehrere Java-Versionen installiert und ich hinzu. Die endgültige Lösung war in der Tat oSession["x-OverrideCertCN"] = "*.websocket.org"; innerhalb OnBeforeRequest Funktion + Cacert-Update.

Antwort

1

Der einfachste Mechanismus wäre, Fiddler so zu konfigurieren, dass der Hostname des Zertifikats auf echo.websocket.org (oder was auch immer) gesetzt wird.

// Put the correct IP address or hostname in the next line. 
if (oSession.uriContains("1.2.3.4")) { 
    oSession["x-OverrideCertCN"] = "*.websocket.org"; 
} 
Verwandte Themen