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
HeaderSessionID: 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.