Unable to run TCPProxy with user defined Java keystore

alfinhaji <[email protected]>
Newsgroups gmane.comp.java.grinder.user
Message-ID <[email protected]>
We have hit an issue while attempting to take a recording with TCPProxy for a
new application we are testing.  Using the default certs (built-in) with
TCPProxy, we are presenting with the warning dialog from the browser. 
However, after adding the security exception we get a blank page returned
with the browser URL line in red with Certificate error highlighted.  When
we turn off the proxy, we can hit this page fine and it renders with no
issue. 

So we went down the path of exporting the certificate for the page from both
IE and Firefox, using the keytool.exe utility to generate a keystore, and
then specifying this keystore before launching the TCPProxy.  Below are the
steps we follow: 

1.  Exported the certificate as type X.509 Certificate (PEM) (*.crt) in
Firefox 
2.  Run the keytool.exe (JRE 1.7.0.45): 
"C:\Program Files\Java\jre7\bin\keytool.exe" -import -keystore mapsKeystore
-file appCert.crt -alias mapClient 

NOTE:  We also tried these steps with JRE 1.6.0.45, same results. 

3.  When launching TCPProxy, we specify the above keystore: 
java -classpath %CLASSPATH% net.grinder.TCPProxy -keyStore mapsKeystore
-keyStorePassword ****** -console 

NOTE:  We also looked at this article but didn't feel it was applicable
since we are a client, not a server, with a valid certificate from the
website exported from Firefox: 
http://docs.oracle.com/javase/7/docs/technotes/guides/security/jsse/JSSERefGuide.html


Following error is output to the console when launching TCPProxy and
attempting to launch the page in a browser pointing to the Proxy port: 

14:52:41.987 [main] INFO : Initialising as an HTTP/HTTPS proxy with the
parameters: 
   Request filters:    EchoFilter 
   Response filters:   EchoFilter 
   Local address:      localhost:8001 
   Key store:          C:\Development\Scripts\certs\mapsKeystore 
   Key store password: ****** 
14:52:42.540 [main] INFO : Engine initialised, listening on port 8001 
14:53:02.721 [Filter thread for
127.0.0.1:60610->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:02.750 [Filter thread for
127.0.0.1:60613->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:02.801 [Filter thread for
127.0.0.1:60616->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:02.842 [Filter thread for
127.0.0.1:60619->maps.qa.companyName.com:443] ERROR: Remote host closed
connection during handshake 
javax.net.ssl.SSLHandshakeException: Remote host closed connection during
handshake 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
Caused by: java.io.EOFException: SSL peer shut down incorrectly 
        at sun.security.ssl.InputRecord.read(Unknown Source) ~[na:1.7.0_45] 
        ... 7 common frames omitted 
14:53:02.947 [Filter thread for
127.0.0.1:60622->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:02.977 [Filter thread for
127.0.0.1:60625->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:03.003 [Filter thread for
127.0.0.1:60628->maps.qa.companyName.com:443] ERROR: no cipher suites in
common 
javax.net.ssl.SSLHandshakeException: no cipher suites in common 
        at sun.security.ssl.Alerts.getSSLException(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.fatal(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.fatalSE(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.chooseCipherSuite(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.clientHello(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.ServerHandshaker.processMessage(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.processLoop(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.Handshaker.process_record(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
14:53:03.021 [Filter thread for
127.0.0.1:60631->maps.qa.companyName.com:443] ERROR: Remote host closed
connection during handshake 
javax.net.ssl.SSLHandshakeException: Remote host closed connection during
handshake 
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown
Source) ~[na:1.7.0_45] 
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
~[na:1.7.0_45] 
        at sun.security.ssl.AppInputStream.read(Unknown Source)
~[na:1.7.0_45] 
        at
net.grinder.tools.tcpproxy.AbstractTCPProxyEngine$FilteredStreamThread.interruptibleRun(AbstractTCPProxyEngine.java:431)
~[grinder-http-3.11.jar:na] 
        at
net.grinder.util.thread.InterruptibleRunnableAdapter.run(InterruptibleRunnableAdapter.java:58)
[grinder-core-3.11.jar:na] 
        at java.lang.Thread.run(Unknown Source) [na:1.7.0_45] 
Caused by: java.io.EOFException: SSL peer shut down incorrectly 
        at sun.security.ssl.InputRecord.read(Unknown Source) ~[na:1.7.0_45] 
        ... 7 common frames omitted 







--
View this message in context: http://grinder.996249.n3.nabble.com/Unable-to-run-TCPProxy-with-user-defined-Java-keystore-tp8816.html
Sent from the Grinder - User mailing list archive at Nabble.com.

------------------------------------------------------------------------------
Is your legacy SCM system holding you back? Join Perforce May 7 to find out:
&#149; 3 signs your SCM is hindering your productivity
&#149; Requirements for releasing software faster
&#149; Expert tips and advice for migrating your SCM now
http://p.sf.net/sfu/perforce
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.