org.apache.avalon.cornerstone.blocks.sockets
Class SSLFactoryBuilder

java.lang.Object
  extended byorg.apache.avalon.framework.logger.AbstractLogEnabled
      extended byorg.apache.avalon.cornerstone.blocks.sockets.SSLFactoryBuilder
All Implemented Interfaces:
org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.context.Contextualizable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable, org.apache.avalon.framework.logger.LogEnabled

public class SSLFactoryBuilder
extends org.apache.avalon.framework.logger.AbstractLogEnabled
implements org.apache.avalon.framework.configuration.Configurable, org.apache.avalon.framework.context.Contextualizable, org.apache.avalon.framework.activity.Disposable, org.apache.avalon.framework.activity.Initializable

Builds SSLContexts with desired properties. Hides all the gory details of SSLContext productions behind nice Avalon interfaces. Married to Sun JCA implementation.

Configuration looks like:

 <ssl-factory>
    <keystore>
      <file>conf/keystore</file> <!-- keystore file location -->
      <password></password> <!-- Key Store file password, only used to check keystore integrity -->
      <key-password></key-password> <!-- Only required when you need to decrypt a private key -->
     <type>JKS</type> <!-- Key Store file format, defaults to JKS -->
     <algorithm>SunX509</algorithm> <!-- Cryptography provider ID, defaults to SunX509 -->
   </keystore>
   <!-- SSL protocol to use, defaults to TLS, another possible value is SSL -->
   <protocol>TLS</protocol>
 </ssl-factory>
 

Notes on keystore files. Absolute paths are supported. Relative paths are interpreted relative to .sar base directory. Defaults to conf/keystore. Since keystore usually contains sensitive keys it maybe beneficial to not include the keystores into the .sar files.

Author:
Greg Steuck

Constructor Summary
SSLFactoryBuilder()
           
 
Method Summary
 javax.net.ssl.SSLServerSocketFactory buildServerSocketFactory()
          Produces a fresh ssl server socket factory with configured parameters.
 javax.net.ssl.SSLSocketFactory buildSocketFactory()
          Produces a fresh ssl socket factory with configured parameters.
 void configure(org.apache.avalon.framework.configuration.Configuration configuration)
           
 void contextualize(org.apache.avalon.framework.context.Context context)
          Requires a BlockContext.
 void dispose()
           
 void initialize()
           
 
Methods inherited from class org.apache.avalon.framework.logger.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

SSLFactoryBuilder

public SSLFactoryBuilder()
Method Detail

contextualize

public void contextualize(org.apache.avalon.framework.context.Context context)
                   throws org.apache.avalon.framework.context.ContextException
Requires a BlockContext. We'll see how we end up expressing these dependencies.

Specified by:
contextualize in interface org.apache.avalon.framework.context.Contextualizable
Throws:
org.apache.avalon.framework.context.ContextException

configure

public void configure(org.apache.avalon.framework.configuration.Configuration configuration)
               throws org.apache.avalon.framework.configuration.ConfigurationException
Specified by:
configure in interface org.apache.avalon.framework.configuration.Configurable
Throws:
org.apache.avalon.framework.configuration.ConfigurationException

buildSocketFactory

public javax.net.ssl.SSLSocketFactory buildSocketFactory()
Produces a fresh ssl socket factory with configured parameters.


buildServerSocketFactory

public javax.net.ssl.SSLServerSocketFactory buildServerSocketFactory()
Produces a fresh ssl server socket factory with configured parameters.


initialize

public void initialize()
                throws java.io.IOException,
                       java.security.GeneralSecurityException
Specified by:
initialize in interface org.apache.avalon.framework.activity.Initializable
Throws:
java.io.IOException
java.security.GeneralSecurityException

dispose

public void dispose()
Specified by:
dispose in interface org.apache.avalon.framework.activity.Disposable


Copyright © 2001-2005 The Apache Software Foundation. All Rights Reserved.