Hi, [email protected],

I'd like to add some refinements to this but I can't seem to subscribe
to the mailing list.

[EMAIL PROTECTED] is telling me the mailing list
has moved.


If I succeed at subscribing, I'd like to mention two things:

#1.  Just some minor editing to Sudip's great instructions.

#2.  Things would be easier if TLSClientParameters could include
setSSLSocketFactory/getSSLSocketFactory.  That way people could do
this:

// Just a sub-class of javax.net.ssl.SSLSocketFactory
SSLClient client = new SSLClient();
client.addTrustMaterial( TrustMaterial.DEFAULT );
client.addTrustMaterial( new TrustMaterial( "/path/to/self-signed.pem" ) );
// To be different, let's allow for expired certificates (not recommended).
client.setCheckHostname( true );  // default setting is "true" for SSLClient
client.setCheckExpiry( false );   // default setting is "true" for SSLClient
client.setCheckCRL( true );       // default setting is "true" for SSLClient

// This method doesn't exist yet, but if people are interested, I'll
send a patch.
tlsClientParameters.setSSLSocketFactory(client);


CXF wouldn't need to know anything about not-yet-commons-ssl, because
org.apache.commons.ssl.SSLClient is a subclass of
javax.net.ssl.SSLSocketFactory!


Would CXF be interested in a patch like that?  Other fancy libraries
that offer handy sub-classes of javax.net.ssl.SSLSocketFactory would
also benefit.

(This should probably be sent to dev, not users - now people searching
through google are going to start complaining that the
tlsClientParameters.setSSLSocketFactory() method is missing!)

yours,

Julius




On Thu, Apr 24, 2008 at 9:16 AM, sudip shrestha <[EMAIL PROTECTED]> wrote:
> I have worked with the developer, Julius Davies
> (http://juliusdavies.ca/commons-ssl/), of the commons-ssl solution which he
> currently refers to "not-yet-commons-ssl" to work out a very simple and
> resuable solution to develop a java client for ssl based connetions.  This
> library encapsulates all the internal ssl connections details.  I am posting
> this for the benefit of those who are trying to develop a client without
> spring.
>
> 1. First download the commons-ssl library from
> http://juliusdavies.ca/commons-ssl/download.html and extract the .jar file,
> then run the following command:
> java -jar not-yet-commons-ssl-0.3.10.jar -t localhost:443 -tm
> /yourPathTo/host.crt
>
> 2. Then copy the section between -----BEGIN CERTIFICATE----- and -----END
> CERTIFICATE----- and put it in a Certificate.java file or whichever way you
> prefer.
>
> Then I have provided the code below:
> 3. Client Code:
>                 JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
>                 factory.setServiceClass( HelloWorld.class );
>                 factory.setAddress( "https://localhost/services/HelloWorld";
> );
>                  HelloWorld port = (HelloWorld) factory.create();
>
>                 Client client = ClientProxy.getClient( port );
>                 HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
>                 TLSClientParameters tlsParams = new TLSClientParameters();
>                 tlsParams.setSecureSocketProtocol("SSL");
>                 FiltersType filters = new FiltersType();
>                 filters.getInclude().add("SSL_RSA_WITH_RC4_128_MD5");
>                 filters.getInclude().add("SSL_RSA_WITH_RC4_128_SHA");
>                  tlsParams.setCipherSuitesFilter(filters);
>
>
>                 tlsParams.setTrustManagers( getTrustManagers() );
> //<<=====================from step 4.
>                 httpConduit.setTlsClientParameters(tlsParams);
>
>
> 4. getTrustManagers function:
>
> private TrustManager[] getTrustManagers()
>                 throws java.security.NoSuchAlgorithmException,
> java.security.KeyStoreException, java.io.IOException,
> java.security.GeneralSecurityException
>         {
>                 byte[] pemCert = Certificates.pemCert_localhost;
> //<<===========comes from your Certificate.java file where you would store
> the cert content from step 2.
>
>                 TrustChain tc = new TrustChain();
>                 tc.addTrustMaterial( new TrustMaterial( pemCert ) );
>                 tc.addTrustMaterial( TrustMaterial.CACERTS );
>                 return ( TrustManager[] )tc.getTrustManagers();
>          }
>



-- 
yours,

Julius Davies
250-592-2284 (Home)
250-893-4579 (Mobile)
http://juliusdavies.ca/

Reply via email to