Class SSLContextBuilder


  • public class SSLContextBuilder
    extends java.lang.Object
    Builder for SSLContext instances.

    Please note: the default Oracle JSSE implementation of SSLContext.init(KeyManager[], TrustManager[], SecureRandom) accepts multiple key and trust managers, however only only first matching type is ever used. See for example: SSLContext.html#init

    Since:
    4.4
    • Field Detail

      • protocol

        private java.lang.String protocol
      • keyManagers

        private final java.util.Set<javax.net.ssl.KeyManager> keyManagers
      • keyManagerFactoryAlgorithm

        private java.lang.String keyManagerFactoryAlgorithm
      • keyStoreType

        private java.lang.String keyStoreType
      • trustManagers

        private final java.util.Set<javax.net.ssl.TrustManager> trustManagers
      • trustManagerFactoryAlgorithm

        private java.lang.String trustManagerFactoryAlgorithm
      • secureRandom

        private java.security.SecureRandom secureRandom
      • provider

        private java.security.Provider provider
      • tsProvider

        private java.security.Provider tsProvider
      • ksProvider

        private java.security.Provider ksProvider
      • EMPTY_KEY_MANAGER_ARRAY

        private static final javax.net.ssl.KeyManager[] EMPTY_KEY_MANAGER_ARRAY
        An empty immutable KeyManager array.
      • EMPTY_TRUST_MANAGER_ARRAY

        private static final javax.net.ssl.TrustManager[] EMPTY_TRUST_MANAGER_ARRAY
        An empty immutable TrustManager array.
    • Constructor Detail

      • SSLContextBuilder

        public SSLContextBuilder()
    • Method Detail

      • setProvider

        public SSLContextBuilder setProvider​(java.security.Provider provider)
      • setTrustStoreProvider

        public SSLContextBuilder setTrustStoreProvider​(java.security.Provider provider)
        Sets the JCA provider to use for creating trust stores.
        Parameters:
        provider - provider to use for creating trust stores.
        Returns:
        this builder
        Since:
        5.2
      • setTrustStoreProvider

        public SSLContextBuilder setTrustStoreProvider​(java.lang.String name)
                                                throws java.security.NoSuchProviderException
        Sets the JCA provider name to use for creating trust stores.
        Parameters:
        name - Name of the provider to use for creating trust stores, the provider must be registered with the JCA.
        Returns:
        this builder
        Throws:
        java.security.NoSuchProviderException
        Since:
        5.2
      • setKeyStoreProvider

        public SSLContextBuilder setKeyStoreProvider​(java.security.Provider provider)
        Sets the JCA provider to use for creating key stores.
        Parameters:
        provider - provider to use for creating key stores.
        Returns:
        this builder
        Since:
        5.2
      • setKeyStoreProvider

        public SSLContextBuilder setKeyStoreProvider​(java.lang.String name)
                                              throws java.security.NoSuchProviderException
        Sets the JCA provider name to use for creating key stores.
        Parameters:
        name - Name of the provider to use for creating key stores, the provider must be registered with the JCA.
        Returns:
        this builder
        Throws:
        java.security.NoSuchProviderException
        Since:
        5.2
      • setSecureRandom

        public SSLContextBuilder setSecureRandom​(java.security.SecureRandom secureRandom)
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.security.KeyStore trustStore,
                                                   TrustStrategy trustStrategy)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException
        Parameters:
        trustStrategy - custom trust strategy to use; can be null in which case only the default trust managers will be used
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.nio.file.Path file)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
        Since:
        5.2
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.nio.file.Path file,
                                                   char[] storePassword)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
        Since:
        5.2
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.nio.file.Path file,
                                                   char[] storePassword,
                                                   TrustStrategy trustStrategy,
                                                   java.nio.file.OpenOption... openOptions)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
        Since:
        5.2
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(TrustStrategy trustStrategy)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.io.File file,
                                                   char[] storePassword,
                                                   TrustStrategy trustStrategy)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.io.File file,
                                                   char[] storePassword)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.io.File file)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.net.URL url,
                                                   char[] storePassword,
                                                   TrustStrategy trustStrategy)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
      • loadTrustMaterial

        public SSLContextBuilder loadTrustMaterial​(java.net.URL url,
                                                   char[] storePassword)
                                            throws java.security.NoSuchAlgorithmException,
                                                   java.security.KeyStoreException,
                                                   java.security.cert.CertificateException,
                                                   java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.cert.CertificateException
        java.io.IOException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.security.KeyStore keyStore,
                                                 char[] keyPassword,
                                                 PrivateKeyStrategy aliasStrategy)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.nio.file.Path file,
                                                 char[] storePassword,
                                                 char[] keyPassword,
                                                 java.nio.file.OpenOption... openOptions)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
        Since:
        5.2
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.nio.file.Path file,
                                                 char[] storePassword,
                                                 char[] keyPassword,
                                                 PrivateKeyStrategy aliasStrategy,
                                                 java.nio.file.OpenOption... openOptions)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
        Since:
        5.2
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.security.KeyStore keyStore,
                                                 char[] keyPassword)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.io.File file,
                                                 char[] storePassword,
                                                 char[] keyPassword,
                                                 PrivateKeyStrategy aliasStrategy)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.io.File file,
                                                 char[] storePassword,
                                                 char[] keyPassword)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.net.URL url,
                                                 char[] storePassword,
                                                 char[] keyPassword,
                                                 PrivateKeyStrategy aliasStrategy)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
      • loadKeyMaterial

        public SSLContextBuilder loadKeyMaterial​(java.net.URL url,
                                                 char[] storePassword,
                                                 char[] keyPassword)
                                          throws java.security.NoSuchAlgorithmException,
                                                 java.security.KeyStoreException,
                                                 java.security.UnrecoverableKeyException,
                                                 java.security.cert.CertificateException,
                                                 java.io.IOException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyStoreException
        java.security.UnrecoverableKeyException
        java.security.cert.CertificateException
        java.io.IOException
      • initSSLContext

        protected void initSSLContext​(javax.net.ssl.SSLContext sslContext,
                                      java.util.Collection<javax.net.ssl.KeyManager> keyManagers,
                                      java.util.Collection<javax.net.ssl.TrustManager> trustManagers,
                                      java.security.SecureRandom secureRandom)
                               throws java.security.KeyManagementException
        Throws:
        java.security.KeyManagementException
      • loadKeyStore

        private java.security.KeyStore loadKeyStore​(java.nio.file.Path file,
                                                    char[] password,
                                                    java.nio.file.OpenOption... openOptions)
                                             throws java.security.KeyStoreException,
                                                    java.io.IOException,
                                                    java.security.NoSuchAlgorithmException,
                                                    java.security.cert.CertificateException
        Throws:
        java.security.KeyStoreException
        java.io.IOException
        java.security.NoSuchAlgorithmException
        java.security.cert.CertificateException
      • loadKeyStore

        private java.security.KeyStore loadKeyStore​(java.net.URL url,
                                                    char[] password)
                                             throws java.security.KeyStoreException,
                                                    java.io.IOException,
                                                    java.security.NoSuchAlgorithmException,
                                                    java.security.cert.CertificateException
        Throws:
        java.security.KeyStoreException
        java.io.IOException
        java.security.NoSuchAlgorithmException
        java.security.cert.CertificateException
      • build

        public javax.net.ssl.SSLContext build()
                                       throws java.security.NoSuchAlgorithmException,
                                              java.security.KeyManagementException
        Throws:
        java.security.NoSuchAlgorithmException
        java.security.KeyManagementException
      • requireNonNullProvider

        private java.security.Provider requireNonNullProvider​(java.lang.String name)
                                                       throws java.security.NoSuchProviderException
        Throws:
        java.security.NoSuchProviderException
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object