Hi, Sudip,

Thanks for your interesting question!  I added a "proxy" option to the
"commons-ssl.jar" tool.

I realize you've already progressed on your problem, but would you mind
testing this option for me?

Here's the lastest version:

http://juliusdavies.ca/commons-ssl/

In particular:

http://juliusdavies.ca/commons-ssl/commons-ssl.jar


Please try running:

java -jar commons-ssl.jar -t [mydomain.com]:443 -r [myproxy.com]:80

Does it work?



yours,

Julius

==============================================================================
Usage:  java -jar commons-ssl.jar [options]
Options:   (*=required)
*  -t  --target           [hostname[:port]]             default port=443
   -b  --bind             [hostname[:port]]             default port=0 "ANY"
   -r  --proxy            [hostname[:port]]             default port=80
   -c  --client-cert      [path to client certificate]  *.jks or *.pfx
   -p  --password         [client cert password]

Example:

java -jar commons-ssl.jar -t cucbc.com:443 -c ./client.pfx -p `cat ./pass.txt`
==============================================================================


On Fri, 2006-05-05 at 15:38 -0500, sudip shrestha wrote:
> I am not sure on how to deploy the my.keystore file with the applet?  Thanks
> for any suggestions.
> 
> ---------- Forwarded message ----------
> From: sudip shrestha <[EMAIL PROTECTED]>
> Date: May 5, 2006 2:08 PM
> Subject: Re: SSLHandshakeException with apache+tomcat httpd server
> To: Julius Davies <[EMAIL PROTECTED]>
> 
> Hi,
> OK... This is what I did and fixed my problem:
> 1. I first got my keystore from CA-cert:
> keytool -import -trustcacerts -keystore my.keystore -file
> mydomain.com.crt-alias mydomainkey
> 2. Then added a line before creating new Protocol object with
> StrictSSLProtocolSocketFactory:
> ------------------
>     System.setProperty("javax.net.ssl.trustStore", "my.keystore");
> 
>     Protocol stricthttps = new Protocol( "https", new
> StrictSSLProtocolSocketFactory(true), 443);
>     httpclient.getHostConfiguration().setHost("mydomain.com", 443,
> stricthttps);
> 
>     httpclient.executeMethod( httpget );
>     System.out.println( new String( httpget.getResponseBody () ) );
> 
>     System.out.println( httpget.getStatusLine() );
> ------------------
> Then, I was able to get secure urls normally from mydomain.com.  But now I
> am wondering how do I put my.keystore file in the client machine, as these
> urls will be accessed by an Applet.
> 
> 
> 
> On 5/5/06, sudip shrestha < [EMAIL PROTECTED]> wrote:
> >
> > Julius, Thanks for your replay.  We have a proxy server to go thru... How
> > do I define a proxy server/port in command line with java -jar
> > commons-ssl.jar -t [ mydomain.com]:443?
> >
> > Because, right now, this is all I get:
> > java.net.SocketTimeoutException: connect timed out
> >         at java.net.PlainSocketImpl.socketConnect(Native Method)
> >         at java.net.PlainSocketImpl.doConnect (Unknown Source)
> >         at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
> >         at java.net.PlainSocketImpl.connect(Unknown Source)
> >         at java.net.SocksSocketImpl.connect(Unknown Source)
> >         at java.net.Socket.connect(Unknown Source)
> >         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.connect(Unknown
> > Source)
> >         at org.apache.commons.ssl.SSLClient.createSocket(SSLClient.java
> > :189)
> >         at org.apache.commons.ssl.SSLClient.createSocket (SSLClient.java
> > :157)
> >         at org.apache.commons.ssl.SSLClient.createSocket(SSLClient.java
> > :149)
> >         at org.apache.commons.ssl.Ping.main(Ping.java:136)
> >
> >
> > On 5/5/06, Julius Davies <[EMAIL PROTECTED]> wrote:
> > >
> > > Hi, Sudip,
> > >
> > > I'm working on a tool to help diagnose these kinds of problems.  Can you
> > > try this tool and report back on the output?
> > >
> > > http://juliusdavies.ca/commons-ssl/
> > >
> > > In particular, download:
> > >
> > > http://juliusdavies.ca/commons-ssl/commons-ssl.jar
> > >
> > > And then run:
> > >
> > > java -jar commons-ssl.jar -t [ mydomain.com]:443
> > >
> > > (You'll have to replace mydomain.com with the server in particular that
> > > you are using.)
> > >
> > > yours,
> > >
> > > Julius
> > >
> > >
> > >
> > > -----Original Message-----
> > > From:   sudip shrestha [mailto:[EMAIL PROTECTED]
> > > Sent:   Fri 5/5/2006 9:20 AM
> > > To:     [email protected]
> > > Cc:
> > > Subject:        SSLHandshakeException with apache+tomcat httpd server
> > >
> > > Hi,
> > > I have apache httpd 2.0 server working with Tomcat 5.5.7 that server
> > > dynamic
> > > contents.  Only HTTPS requests are allowed by this server.  We have a
> > > trusted certificate from a CA, comodo. I have written an applet that
> > > needs
> > > to talk to this server via ssl.
> > > I have added the cert from the CA to the jdk keystore with:  keytool
> > > -import
> > > -file mydomain.com.crt.
> > >
> > > So, when I use this piece of code below to make a connection I get an
> > > Exception:
> > >
> > > javax.net.ssl.SSLHandshakeException:
> > > sun.security.validator.ValidatorException: PKIX path buil
> > > ding failed: sun.security.provider.certpath.SunCertPathBuilderException:
> > > unable to find valid
> > > certification path to requested target
> > >         at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown
> > > Source)
> > >         at
> > > com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate (Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage
> > > (Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown
> > > Source)
> > >         at
> > > com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake
> > > (Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.SSLSocketImpl.writeRecord
> > > (Unknown
> > > Source)
> > >         at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown
> > > Source)
> > >         at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
> > >         at java.io.BufferedOutputStream.flush(Unknown Source)
> > >         at
> > > org.apache.commons.httpclient.HttpConnection.flushRequestOutputStream
> > > (HttpConnectio
> > > n.java:827)
> > >         at org.apache.commons.httpclient.HttpMethodBase.writeRequest (
> > > HttpMethodBase.java:1975)
> > >
> > >         at org.apache.commons.httpclient.HttpMethodBase.execute(
> > > HttpMethodBase.java:993)
> > >         at
> > > org.apache.commons.httpclient.HttpMethodDirector.executeWithRetry
> > > (HttpMethodDirecto
> > > r.java:397)
> > >         at
> > > org.apache.commons.httpclient.HttpMethodDirector.executeMethod(
> > > HttpMethodDirector.j
> > > ava:170)
> > >         at org.apache.commons.httpclient.HttpClient.executeMethod(
> > > HttpClient.java:396)
> > >         at org.apache.commons.httpclient.HttpClient.executeMethod(
> > > HttpClient.java:324)
> > >         at main.main(main.java:54)
> > > Caused by: sun.security.validator.ValidatorException: PKIX path building
> > > failed: sun.security .
> > > provider.certpath.SunCertPathBuilderException: unable to find valid
> > > certification path to requ
> > > ested target
> > >         at sun.security.validator.PKIXValidator.doBuild(Unknown Source)
> > >         at sun.security.validator.PKIXValidator.engineValidate (Unknown
> > > Source)
> > >         at sun.security.validator.Validator.validate(Unknown Source)
> > >         at
> > > com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted
> > > (Unknown
> > > Source
> > > )
> > >         at
> > > com.sun.net.ssl.internal.ssl.JsseX509TrustManager.checkServerTrusted(Unknown
> > > Source
> > > )
> > >         ... 18 more
> > > Caused by: sun.security.provider.certpath.SunCertPathBuilderException:
> > > unable to find valid ce
> > > rtification path to requested target
> > >         at 
> > > sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown
> > > Source)
> > >         at java.security.cert.CertPathBuilder.build(Unknown Source)
> > >         ... 23 more
> > > ----------------------------------------------------------------
> > > Test Code:
> > > ---------------
> > >   HttpClient httpclient = new HttpClient();
> > >   GetMethod httpget = new GetMethod("https://mydomain.com/";);
> > >   try {
> > >
> > > *     //Protocol easyhttps = new Protocol("https", new
> > > EasySSLProtocolSocketFactory(), 443);
> > >      //Protocol.registerProtocol("https", easyhttps);*
> > >
> > >     httpclient.executeMethod(httpget);
> > >
> > >     System.out.println( httpget.getStatusLine() );
> > >
> > >   } catch(Exception e) {
> > >     e.printStackTrace ();
> > >   } finally {
> > >     httpget.releaseConnection();
> > >   }
> > > ----------------------------------------------------------------
> > >
> > > I have tried this with/without the *EasySSLProtocolSocketFactory and I
> > > get
> > > the same result.   Searched through the archive but could not move
> > > forward.
> > >
> > > In my case, all the SSL requests are handled by apache first, so is
> > > there
> > > something else that I have to do to make it work?... thanks....
> > > *
> > >
> > >
> > >
> > >
> > >
> >
-- 
Julius Davies
Senior Application Developer, Technology Services
Credit Union Central of British Columbia
http://www.cucbc.com/
Tel: 604-730-6385
Cel: 604-868-7571
Fax: 604-737-5910

1441 Creekside Drive
Vancouver, BC
Canada
V6J 4S7

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to