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:
Configurable, Contextualizable, Disposable, Initializable, LogEnabled

public class SSLFactoryBuilder
extends AbstractLogEnabled
implements Configurable, Contextualizable, Disposable, 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
 SSLServerSocketFactory buildServerSocketFactory()
          Produces a fresh ssl server socket factory with configured parameters.
 SSLSocketFactory buildSocketFactory()
          Produces a fresh ssl socket factory with configured parameters.
 void configure(Configuration configuration)
           
 void contextualize(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(Context context)
                   throws ContextException
Requires a BlockContext. We'll see how we end up expressing these dependencies.

Specified by:
contextualize in interface Contextualizable
Throws:
ContextException

configure

public void configure(Configuration configuration)
               throws ConfigurationException
Specified by:
configure in interface Configurable
Throws:
ConfigurationException

buildSocketFactory

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


buildServerSocketFactory

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


initialize

public void initialize()
                throws IOException,
                       GeneralSecurityException
Specified by:
initialize in interface Initializable
Throws:
IOException
GeneralSecurityException

dispose

public void dispose()
Specified by:
dispose in interface Disposable


Copyright © Apache Software Foundation. All Rights Reserved.