Class SSLContextFactoryBean

  • All Implemented Interfaces:
    org.springframework.beans.factory.Aware, org.springframework.beans.factory.BeanClassLoaderAware, org.springframework.beans.factory.BeanFactoryAware, org.springframework.beans.factory.DisposableBean, org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.InitializingBean

    public class SSLContextFactoryBean
    extends org.springframework.beans.factory.config.AbstractFactoryBean
    Spring FactoryBean implementation which makes it possible to configure SSLContext instances using Spring.

    If no properties are set the returned SSLContext will be equivalent to what the following creates:

          SSLContext c = SSLContext.getInstance( "TLS" );
          c.init( null, null, null );
     

    Use the properties prefixed with keyManagerFactory to control the creation of the KeyManager to be used.

    Use the properties prefixed with trustManagerFactory to control the creation of the TrustManagerFactory to be used.

    • Field Summary

      • Fields inherited from class org.springframework.beans.factory.config.AbstractFactoryBean

        logger
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      protected java.lang.Object createInstance()  
      java.lang.Class getObjectType()  
      void setKeyManagerFactory​(javax.net.ssl.KeyManagerFactory factory)
      Sets the KeyManagerFactory to use.
      void setKeyManagerFactoryAlgorithm​(java.lang.String algorithm)
      Sets the algorithm to use when creating the KeyManagerFactory using KeyManagerFactory.getInstance(java.lang.String) or KeyManagerFactory.getInstance(java.lang.String, java.lang.String).
      void setKeyManagerFactoryAlgorithmUseDefault​(boolean useDefault)
      If this is set to true while no KeyManagerFactory has been set using setKeyManagerFactory(KeyManagerFactory) and no algorithm has been set using setKeyManagerFactoryAlgorithm(String) the default algorithm return by KeyManagerFactory.getDefaultAlgorithm() will be used.
      void setKeyManagerFactoryKeyStore​(java.security.KeyStore keyStore)
      Sets the KeyStore which will be used in the call to KeyManagerFactory.init(java.security.KeyStore, char[]) when the SSLContext is created.
      void setKeyManagerFactoryKeyStorePassword​(java.lang.String password)
      Sets the password which will be used in the call to KeyManagerFactory.init(java.security.KeyStore, char[]) when the SSLContext is created.
      void setKeyManagerFactoryProvider​(java.lang.String provider)
      Sets the provider to use when creating the KeyManagerFactory using KeyManagerFactory.getInstance(java.lang.String, java.lang.String).
      void setProtocol​(java.lang.String protocol)
      Sets the protocol to use when creating the SSLContext.
      void setSecureRandom​(java.security.SecureRandom secureRandom)
      Sets the SecureRandom to use when initializing the SSLContext.
      void setTrustManagerFactory​(javax.net.ssl.TrustManagerFactory factory)
      Sets the TrustManagerFactory to use.
      void setTrustManagerFactoryAlgorithm​(java.lang.String algorithm)
      Sets the algorithm to use when creating the TrustManagerFactory using TrustManagerFactory.getInstance(java.lang.String) or TrustManagerFactory.getInstance(java.lang.String, java.lang.String).
      void setTrustManagerFactoryAlgorithmUseDefault​(boolean useDefault)
      If this is set to true while no TrustManagerFactory has been set using setTrustManagerFactory(TrustManagerFactory) and no algorithm has been set using setTrustManagerFactoryAlgorithm(String) the default algorithm return by TrustManagerFactory.getDefaultAlgorithm() will be used.
      void setTrustManagerFactoryKeyStore​(java.security.KeyStore keyStore)
      Sets the KeyStore which will be used in the call to TrustManagerFactory.init(java.security.KeyStore) when the SSLContext is created.
      void setTrustManagerFactoryParameters​(javax.net.ssl.ManagerFactoryParameters parameters)
      Sets the ManagerFactoryParameters which will be used in the call to TrustManagerFactory.init(javax.net.ssl.ManagerFactoryParameters) when the SSLContext is created.
      void setTrustManagerFactoryProvider​(java.lang.String provider)
      Sets the provider to use when creating the TrustManagerFactory using TrustManagerFactory.getInstance(java.lang.String, java.lang.String).
      • Methods inherited from class org.springframework.beans.factory.config.AbstractFactoryBean

        afterPropertiesSet, destroy, destroyInstance, getBeanFactory, getBeanTypeConverter, getEarlySingletonInterfaces, getObject, isSingleton, setBeanClassLoader, setBeanFactory, setSingleton
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • SSLContextFactoryBean

        public SSLContextFactoryBean()
    • Method Detail

      • createInstance

        protected java.lang.Object createInstance()
                                           throws java.lang.Exception
        Specified by:
        createInstance in class org.springframework.beans.factory.config.AbstractFactoryBean
        Throws:
        java.lang.Exception
      • getObjectType

        public java.lang.Class getObjectType()
        Specified by:
        getObjectType in interface org.springframework.beans.factory.FactoryBean
        Specified by:
        getObjectType in class org.springframework.beans.factory.config.AbstractFactoryBean
      • setProtocol

        public void setProtocol​(java.lang.String protocol)
        Sets the protocol to use when creating the SSLContext. The default is TLS.
        Parameters:
        protocol - the name of the protocol.
        Throws:
        java.lang.IllegalArgumentException - if the specified value is null.
      • setKeyManagerFactoryAlgorithmUseDefault

        public void setKeyManagerFactoryAlgorithmUseDefault​(boolean useDefault)
        If this is set to true while no KeyManagerFactory has been set using setKeyManagerFactory(KeyManagerFactory) and no algorithm has been set using setKeyManagerFactoryAlgorithm(String) the default algorithm return by KeyManagerFactory.getDefaultAlgorithm() will be used.
        Parameters:
        useDefault - true or false.
      • setTrustManagerFactoryAlgorithmUseDefault

        public void setTrustManagerFactoryAlgorithmUseDefault​(boolean useDefault)
        If this is set to true while no TrustManagerFactory has been set using setTrustManagerFactory(TrustManagerFactory) and no algorithm has been set using setTrustManagerFactoryAlgorithm(String) the default algorithm return by TrustManagerFactory.getDefaultAlgorithm() will be used.
        Parameters:
        useDefault - true or false.
      • setKeyManagerFactory

        public void setKeyManagerFactory​(javax.net.ssl.KeyManagerFactory factory)
        Sets the KeyManagerFactory to use. If this is set the properties which are used by this factory bean to create a KeyManagerFactory will all be ignored.
        Parameters:
        factory - the factory.
      • setKeyManagerFactoryAlgorithm

        public void setKeyManagerFactoryAlgorithm​(java.lang.String algorithm)
        Sets the algorithm to use when creating the KeyManagerFactory using KeyManagerFactory.getInstance(java.lang.String) or KeyManagerFactory.getInstance(java.lang.String, java.lang.String).

        This property will be ignored if a KeyManagerFactory has been set directly using setKeyManagerFactory(KeyManagerFactory).

        If this property isn't set while no KeyManagerFactory has been set using setKeyManagerFactory(KeyManagerFactory) and setKeyManagerFactoryAlgorithmUseDefault(boolean) has been set to true the value returned by KeyManagerFactory.getDefaultAlgorithm() will be used instead.

        Parameters:
        algorithm - the algorithm to use.
      • setKeyManagerFactoryProvider

        public void setKeyManagerFactoryProvider​(java.lang.String provider)
        Sets the provider to use when creating the KeyManagerFactory using KeyManagerFactory.getInstance(java.lang.String, java.lang.String).

        This property will be ignored if a KeyManagerFactory has been set directly using setKeyManagerFactory(KeyManagerFactory).

        If this property isn't set and no KeyManagerFactory has been set using setKeyManagerFactory(KeyManagerFactory) KeyManagerFactory.getInstance(java.lang.String) will be used to create the KeyManagerFactory.

        Parameters:
        provider - the name of the provider.
      • setKeyManagerFactoryKeyStore

        public void setKeyManagerFactoryKeyStore​(java.security.KeyStore keyStore)
        Sets the KeyStore which will be used in the call to KeyManagerFactory.init(java.security.KeyStore, char[]) when the SSLContext is created.
        Parameters:
        keyStore - the key store.
      • setKeyManagerFactoryKeyStorePassword

        public void setKeyManagerFactoryKeyStorePassword​(java.lang.String password)
        Sets the password which will be used in the call to KeyManagerFactory.init(java.security.KeyStore, char[]) when the SSLContext is created.
        Parameters:
        password - the password. Use null to disable password.
      • setTrustManagerFactory

        public void setTrustManagerFactory​(javax.net.ssl.TrustManagerFactory factory)
        Sets the TrustManagerFactory to use. If this is set the properties which are used by this factory bean to create a TrustManagerFactory will all be ignored.
        Parameters:
        factory - the factory.
      • setTrustManagerFactoryAlgorithm

        public void setTrustManagerFactoryAlgorithm​(java.lang.String algorithm)
        Sets the algorithm to use when creating the TrustManagerFactory using TrustManagerFactory.getInstance(java.lang.String) or TrustManagerFactory.getInstance(java.lang.String, java.lang.String).

        This property will be ignored if a TrustManagerFactory has been set directly using setTrustManagerFactory(TrustManagerFactory).

        If this property isn't set while no TrustManagerFactory has been set using setTrustManagerFactory(TrustManagerFactory) and setTrustManagerFactoryAlgorithmUseDefault(boolean) has been set to true the value returned by TrustManagerFactory.getDefaultAlgorithm() will be used instead.

        Parameters:
        algorithm - the algorithm to use.
      • setTrustManagerFactoryKeyStore

        public void setTrustManagerFactoryKeyStore​(java.security.KeyStore keyStore)
        Sets the KeyStore which will be used in the call to TrustManagerFactory.init(java.security.KeyStore) when the SSLContext is created.

        This property will be ignored if ManagerFactoryParameters has been set directly using setTrustManagerFactoryParameters(ManagerFactoryParameters).

        Parameters:
        keyStore - the key store.
      • setTrustManagerFactoryParameters

        public void setTrustManagerFactoryParameters​(javax.net.ssl.ManagerFactoryParameters parameters)
        Sets the ManagerFactoryParameters which will be used in the call to TrustManagerFactory.init(javax.net.ssl.ManagerFactoryParameters) when the SSLContext is created.
        Parameters:
        parameters - describing provider-specific trust material.
      • setTrustManagerFactoryProvider

        public void setTrustManagerFactoryProvider​(java.lang.String provider)
        Sets the provider to use when creating the TrustManagerFactory using TrustManagerFactory.getInstance(java.lang.String, java.lang.String).

        This property will be ignored if a TrustManagerFactory has been set directly using setTrustManagerFactory(TrustManagerFactory).

        If this property isn't set and no TrustManagerFactory has been set using setTrustManagerFactory(TrustManagerFactory) TrustManagerFactory.getInstance(java.lang.String) will be used to create the TrustManagerFactory.

        Parameters:
        provider - the name of the provider.
      • setSecureRandom

        public void setSecureRandom​(java.security.SecureRandom secureRandom)
        Sets the SecureRandom to use when initializing the SSLContext. The JVM's default will be used if this isn't set.
        Parameters:
        secureRandom - the SecureRandom or null if the JVM's default should be used.
        See Also:
        SSLContext.init(javax.net.ssl.KeyManager[], javax.net.ssl.TrustManager[], java.security.SecureRandom)