Class SslContext

    • Method Detail

      • defaultServerProvider

        public static SslProvider defaultServerProvider()
        Returns the default server-side implementation provider currently in use.
        Returns:
        SslProvider.OPENSSL if OpenSSL is available. SslProvider.JDK otherwise.
      • defaultClientProvider

        public static SslProvider defaultClientProvider()
        Returns the default client-side implementation provider currently in use.
        Returns:
        SslProvider.JDK, because it is the only implementation at the moment
      • newServerContext

        public static SslContext newServerContext​(java.io.File certChainFile,
                                                  java.io.File keyFile)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newServerContext

        public static SslContext newServerContext​(java.io.File certChainFile,
                                                  java.io.File keyFile,
                                                  java.lang.String keyPassword)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        keyPassword - the password of the keyFile. null if it's not password-protected.
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newServerContext

        public static SslContext newServerContext​(SslBufferPool bufPool,
                                                  java.io.File certChainFile,
                                                  java.io.File keyFile,
                                                  java.lang.String keyPassword,
                                                  java.lang.Iterable<java.lang.String> ciphers,
                                                  java.lang.Iterable<java.lang.String> nextProtocols,
                                                  long sessionCacheSize,
                                                  long sessionTimeout)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        bufPool - the buffer pool which will be used by the returned SslContext. null to use the default buffer pool.
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        keyPassword - the password of the keyFile. null if it's not password-protected.
        ciphers - the cipher suites to enable, in the order of preference. null to use the default cipher suites.
        nextProtocols - the application layer protocols to accept, in the order of preference. null to disable TLS NPN/ALPN extension.
        sessionCacheSize - the size of the cache used for storing SSL session objects. 0 to use the default value.
        sessionTimeout - the timeout for the cached SSL session objects, in seconds. 0 to use the default value.
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newServerContext

        public static SslContext newServerContext​(SslProvider provider,
                                                  java.io.File certChainFile,
                                                  java.io.File keyFile)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newServerContext

        public static SslContext newServerContext​(SslProvider provider,
                                                  java.io.File certChainFile,
                                                  java.io.File keyFile,
                                                  java.lang.String keyPassword)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        keyPassword - the password of the keyFile. null if it's not password-protected.
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newServerContext

        public static SslContext newServerContext​(SslProvider provider,
                                                  SslBufferPool bufPool,
                                                  java.io.File certChainFile,
                                                  java.io.File keyFile,
                                                  java.lang.String keyPassword,
                                                  java.lang.Iterable<java.lang.String> ciphers,
                                                  java.lang.Iterable<java.lang.String> nextProtocols,
                                                  long sessionCacheSize,
                                                  long sessionTimeout)
                                           throws javax.net.ssl.SSLException
        Creates a new server-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        bufPool - the buffer pool which will be used by the returned SslContext. null to use the default buffer pool.
        certChainFile - an X.509 certificate chain file in PEM format
        keyFile - a PKCS#8 private key file in PEM format
        keyPassword - the password of the keyFile. null if it's not password-protected.
        ciphers - the cipher suites to enable, in the order of preference. null to use the default cipher suites.
        nextProtocols - the application layer protocols to accept, in the order of preference. null to disable TLS NPN/ALPN extension.
        sessionCacheSize - the size of the cache used for storing SSL session objects. 0 to use the default value.
        sessionTimeout - the timeout for the cached SSL session objects, in seconds. 0 to use the default value.
        Returns:
        a new server-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext()
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(java.io.File certChainFile)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        certChainFile - an X.509 certificate chain file in PEM format
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(javax.net.ssl.TrustManagerFactory trustManagerFactory)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(java.io.File certChainFile,
                                                  javax.net.ssl.TrustManagerFactory trustManagerFactory)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        certChainFile - an X.509 certificate chain file in PEM format. null to use the system default
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslBufferPool bufPool,
                                                  java.io.File certChainFile,
                                                  javax.net.ssl.TrustManagerFactory trustManagerFactory,
                                                  java.lang.Iterable<java.lang.String> ciphers,
                                                  java.lang.Iterable<java.lang.String> nextProtocols,
                                                  long sessionCacheSize,
                                                  long sessionTimeout)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        bufPool - the buffer pool which will be used by the returned SslContext. null to use the default buffer pool.
        certChainFile - an X.509 certificate chain file in PEM format. null to use the system default
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        ciphers - the cipher suites to enable, in the order of preference. null to use the default cipher suites.
        nextProtocols - the application layer protocols to accept, in the order of preference. null to disable TLS NPN/ALPN extension.
        sessionCacheSize - the size of the cache used for storing SSL session objects. 0 to use the default value.
        sessionTimeout - the timeout for the cached SSL session objects, in seconds. 0 to use the default value.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslProvider provider)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslProvider provider,
                                                  java.io.File certChainFile)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        certChainFile - an X.509 certificate chain file in PEM format. null to use the system default
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslProvider provider,
                                                  javax.net.ssl.TrustManagerFactory trustManagerFactory)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslProvider provider,
                                                  java.io.File certChainFile,
                                                  javax.net.ssl.TrustManagerFactory trustManagerFactory)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        certChainFile - an X.509 certificate chain file in PEM format. null to use the system default
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • newClientContext

        public static SslContext newClientContext​(SslProvider provider,
                                                  SslBufferPool bufPool,
                                                  java.io.File certChainFile,
                                                  javax.net.ssl.TrustManagerFactory trustManagerFactory,
                                                  java.lang.Iterable<java.lang.String> ciphers,
                                                  java.lang.Iterable<java.lang.String> nextProtocols,
                                                  long sessionCacheSize,
                                                  long sessionTimeout)
                                           throws javax.net.ssl.SSLException
        Creates a new client-side SslContext.
        Parameters:
        provider - the SslContext implementation to use. null to use the current default one.
        bufPool - the buffer pool which will be used by the returned SslContext. null to use the default buffer pool.
        certChainFile - an X.509 certificate chain file in PEM format. null to use the system default
        trustManagerFactory - the TrustManagerFactory that provides the TrustManagers that verifies the certificates sent from servers. null to use the default.
        ciphers - the cipher suites to enable, in the order of preference. null to use the default cipher suites.
        nextProtocols - the application layer protocols to accept, in the order of preference. null to disable TLS NPN/ALPN extension.
        sessionCacheSize - the size of the cache used for storing SSL session objects. 0 to use the default value.
        sessionTimeout - the timeout for the cached SSL session objects, in seconds. 0 to use the default value.
        Returns:
        a new client-side SslContext
        Throws:
        javax.net.ssl.SSLException
      • isServer

        public final boolean isServer()
        Returns true if and only if this context is for server-side.
      • isClient

        public abstract boolean isClient()
        Returns the true if and only if this context is for client-side.
      • cipherSuites

        public abstract java.util.List<java.lang.String> cipherSuites()
        Returns the list of enabled cipher suites, in the order of preference.
      • sessionCacheSize

        public abstract long sessionCacheSize()
        Returns the size of the cache used for storing SSL session objects.
      • sessionTimeout

        public abstract long sessionTimeout()
        Returns the timeout for the cached SSL session objects, in seconds.
      • nextProtocols

        public abstract java.util.List<java.lang.String> nextProtocols()
        Returns the list of application layer protocols for the TLS NPN/ALPN extension, in the order of preference.
        Returns:
        the list of application layer protocols. null if NPN/ALPN extension has been disabled.
      • newEngine

        public abstract javax.net.ssl.SSLEngine newEngine()
        Creates a new SSLEngine.
        Returns:
        a new SSLEngine
      • newEngine

        public abstract javax.net.ssl.SSLEngine newEngine​(java.lang.String peerHost,
                                                          int peerPort)
        Creates a new SSLEngine using advisory peer information.
        Parameters:
        peerHost - the non-authoritative name of the host
        peerPort - the non-authoritative port
        Returns:
        a new SSLEngine
      • newHandler

        public final SslHandler newHandler​(java.lang.String peerHost,
                                           int peerPort)
        Creates a new SslHandler with advisory peer information.
        Parameters:
        peerHost - the non-authoritative name of the host
        peerPort - the non-authoritative port
        Returns:
        a new SslHandler
      • newHandler

        private SslHandler newHandler​(javax.net.ssl.SSLEngine engine)