|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectorg.apache.avalon.framework.logger.AbstractLogEnabled
org.apache.avalon.cornerstone.blocks.sockets.SSLFactoryBuilder
public class SSLFactoryBuilder
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.
| Field Summary | |
|---|---|
private java.io.File |
m_baseDirectory
|
private javax.net.ssl.SSLContext |
m_ctx
|
private java.lang.String |
m_keyPassword
|
private java.io.File |
m_keystoreFile
|
private java.lang.String |
m_keystoreFormat
|
private java.lang.String |
m_keystorePassword
|
private java.lang.String |
m_protocol
|
private java.lang.String |
m_provider
|
| 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()
|
private static java.security.KeyStore |
loadKeystore(java.io.InputStream keyStream,
java.lang.String passphrase,
java.lang.String keystoreFormat)
Builds a keystore loaded from the given stream. |
private static javax.net.ssl.SSLContext |
makeContext(java.io.InputStream keyStream,
java.lang.String keystorePassword,
java.lang.String keyPassword,
java.lang.String protocol,
java.lang.String provider,
java.lang.String keystoreFormat)
Creates an SSL context which uses the keys and certificates provided by the given keyStream. |
| 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 |
| Field Detail |
|---|
private java.io.File m_baseDirectory
private java.io.File m_keystoreFile
private java.lang.String m_keystorePassword
private java.lang.String m_keyPassword
private java.lang.String m_protocol
private java.lang.String m_provider
private java.lang.String m_keystoreFormat
private javax.net.ssl.SSLContext m_ctx
| Constructor Detail |
|---|
public SSLFactoryBuilder()
| Method Detail |
|---|
public void contextualize(org.apache.avalon.framework.context.Context context)
throws org.apache.avalon.framework.context.ContextException
contextualize in interface org.apache.avalon.framework.context.Contextualizableorg.apache.avalon.framework.context.ContextException
public void configure(org.apache.avalon.framework.configuration.Configuration configuration)
throws org.apache.avalon.framework.configuration.ConfigurationException
configure in interface org.apache.avalon.framework.configuration.Configurableorg.apache.avalon.framework.configuration.ConfigurationExceptionpublic javax.net.ssl.SSLSocketFactory buildSocketFactory()
public javax.net.ssl.SSLServerSocketFactory buildServerSocketFactory()
public void initialize()
throws java.io.IOException,
java.security.GeneralSecurityException
initialize in interface org.apache.avalon.framework.activity.Initializablejava.io.IOException
java.security.GeneralSecurityExceptionpublic void dispose()
dispose in interface org.apache.avalon.framework.activity.Disposable
private static javax.net.ssl.SSLContext makeContext(java.io.InputStream keyStream,
java.lang.String keystorePassword,
java.lang.String keyPassword,
java.lang.String protocol,
java.lang.String provider,
java.lang.String keystoreFormat)
throws java.io.IOException,
java.security.GeneralSecurityException
keyStream - to read the keys fromkeystorePassword - password for the keystore, can be null
if integrity verification is not desiredkeyPassword - passphrase which unlocks the keys in the key file
(should really be a char[] so that it can be cleaned after use)protocol - the standard name of the requested protocolprovider - the standard name of the requested algorithmkeystoreFormat - the type of keystore
java.io.IOException - if files can't be read
java.security.GeneralSecurityException - is something goes wrong inside
cryptography framework
private static java.security.KeyStore loadKeystore(java.io.InputStream keyStream,
java.lang.String passphrase,
java.lang.String keystoreFormat)
throws java.security.GeneralSecurityException,
java.io.IOException
keyStream - to load frompassphrase - for the store integrity verification (or null if
integrity check is not wanted)keystoreFormat - the type of keystore
java.io.IOException - if file can not be read
java.security.GeneralSecurityException - if key store can't be built
|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||