Package org.jboss.netty.handler.ssl
Class SslContext
- java.lang.Object
-
- org.jboss.netty.handler.ssl.SslContext
-
- Direct Known Subclasses:
JdkSslContext
,OpenSslServerContext
public abstract class SslContext extends java.lang.Object
A secure socket protocol implementation which acts as a factory forSSLEngine
andSslHandler
. Internally, it is implemented via JDK'sSSLContext
or OpenSSL'sSSL_CTX
.Making your server support SSL/TLS
// In your
ChannelPipelineFactory
:ChannelPipeline
p =Channels.pipeline()
;SslContext
sslCtx =SslContext.newServerContext(...)
; p.addLast("ssl",sslCtx.newEngine()
); ...Making your client support SSL/TLS
// In your
ChannelPipelineFactory
:ChannelPipeline
p =Channels.pipeline()
;SslContext
sslCtx =SslContext.newClientContext(...)
; p.addLast("ssl",sslCtx.newEngine(host, port)
); ...
-
-
Field Summary
Fields Modifier and Type Field Description private SslBufferPool
bufferPool
-
Constructor Summary
Constructors Constructor Description SslContext(SslBufferPool bufferPool)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description SslBufferPool
bufferPool()
abstract java.util.List<java.lang.String>
cipherSuites()
Returns the list of enabled cipher suites, in the order of preference.static SslProvider
defaultClientProvider()
Returns the default client-side implementation provider currently in use.static SslProvider
defaultServerProvider()
Returns the default server-side implementation provider currently in use.abstract boolean
isClient()
Returns thetrue
if and only if this context is for client-side.boolean
isServer()
Returnstrue
if and only if this context is for server-side.(package private) SslBufferPool
newBufferPool()
static SslContext
newClientContext()
Creates a new client-sideSslContext
.static SslContext
newClientContext(java.io.File certChainFile)
Creates a new client-sideSslContext
.static SslContext
newClientContext(java.io.File certChainFile, javax.net.ssl.TrustManagerFactory trustManagerFactory)
Creates a new client-sideSslContext
.static SslContext
newClientContext(javax.net.ssl.TrustManagerFactory trustManagerFactory)
Creates a new client-sideSslContext
.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)
Creates a new client-sideSslContext
.static SslContext
newClientContext(SslProvider provider)
Creates a new client-sideSslContext
.static SslContext
newClientContext(SslProvider provider, java.io.File certChainFile)
Creates a new client-sideSslContext
.static SslContext
newClientContext(SslProvider provider, java.io.File certChainFile, javax.net.ssl.TrustManagerFactory trustManagerFactory)
Creates a new client-sideSslContext
.static SslContext
newClientContext(SslProvider provider, javax.net.ssl.TrustManagerFactory trustManagerFactory)
Creates a new client-sideSslContext
.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)
Creates a new client-sideSslContext
.abstract javax.net.ssl.SSLEngine
newEngine()
Creates a newSSLEngine
.abstract javax.net.ssl.SSLEngine
newEngine(java.lang.String peerHost, int peerPort)
Creates a newSSLEngine
using advisory peer information.SslHandler
newHandler()
Creates a newSslHandler
.SslHandler
newHandler(java.lang.String peerHost, int peerPort)
Creates a newSslHandler
with advisory peer information.private SslHandler
newHandler(javax.net.ssl.SSLEngine engine)
static SslContext
newServerContext(java.io.File certChainFile, java.io.File keyFile)
Creates a new server-sideSslContext
.static SslContext
newServerContext(java.io.File certChainFile, java.io.File keyFile, java.lang.String keyPassword)
Creates a new server-sideSslContext
.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)
Creates a new server-sideSslContext
.static SslContext
newServerContext(SslProvider provider, java.io.File certChainFile, java.io.File keyFile)
Creates a new server-sideSslContext
.static SslContext
newServerContext(SslProvider provider, java.io.File certChainFile, java.io.File keyFile, java.lang.String keyPassword)
Creates a new server-sideSslContext
.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)
Creates a new server-sideSslContext
.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.abstract long
sessionCacheSize()
Returns the size of the cache used for storing SSL session objects.abstract long
sessionTimeout()
Returns the timeout for the cached SSL session objects, in seconds.
-
-
-
Field Detail
-
bufferPool
private final SslBufferPool bufferPool
-
-
Constructor Detail
-
SslContext
SslContext(SslBufferPool bufferPool)
-
-
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-sideSslContext
.- Parameters:
certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- 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-sideSslContext
.- Parameters:
certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- a PKCS#8 private key file in PEM formatkeyPassword
- the password of thekeyFile
.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-sideSslContext
.- Parameters:
bufPool
- the buffer pool which will be used by the returnedSslContext
.null
to use the default buffer pool.certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- a PKCS#8 private key file in PEM formatkeyPassword
- the password of thekeyFile
.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-sideSslContext
.- Parameters:
provider
- theSslContext
implementation to use.null
to use the current default one.certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- 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-sideSslContext
.- Parameters:
provider
- theSslContext
implementation to use.null
to use the current default one.certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- a PKCS#8 private key file in PEM formatkeyPassword
- the password of thekeyFile
.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-sideSslContext
.- Parameters:
provider
- theSslContext
implementation to use.null
to use the current default one.bufPool
- the buffer pool which will be used by the returnedSslContext
.null
to use the default buffer pool.certChainFile
- an X.509 certificate chain file in PEM formatkeyFile
- a PKCS#8 private key file in PEM formatkeyPassword
- the password of thekeyFile
.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-sideSslContext
.- 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-sideSslContext
.- 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-sideSslContext
.- Parameters:
trustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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-sideSslContext
.- Parameters:
certChainFile
- an X.509 certificate chain file in PEM format.null
to use the system defaulttrustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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-sideSslContext
.- Parameters:
bufPool
- the buffer pool which will be used by the returnedSslContext
.null
to use the default buffer pool.certChainFile
- an X.509 certificate chain file in PEM format.null
to use the system defaulttrustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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-sideSslContext
.- Parameters:
provider
- theSslContext
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-sideSslContext
.- Parameters:
provider
- theSslContext
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-sideSslContext
.- Parameters:
provider
- theSslContext
implementation to use.null
to use the current default one.trustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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-sideSslContext
.- Parameters:
provider
- theSslContext
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 defaulttrustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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-sideSslContext
.- Parameters:
provider
- theSslContext
implementation to use.null
to use the current default one.bufPool
- the buffer pool which will be used by the returnedSslContext
.null
to use the default buffer pool.certChainFile
- an X.509 certificate chain file in PEM format.null
to use the system defaulttrustManagerFactory
- theTrustManagerFactory
that provides theTrustManager
s 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
-
newBufferPool
SslBufferPool newBufferPool()
-
isServer
public final boolean isServer()
Returnstrue
if and only if this context is for server-side.
-
bufferPool
public final SslBufferPool bufferPool()
-
isClient
public abstract boolean isClient()
Returns thetrue
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 newSSLEngine
.- Returns:
- a new
SSLEngine
-
newEngine
public abstract javax.net.ssl.SSLEngine newEngine(java.lang.String peerHost, int peerPort)
Creates a newSSLEngine
using advisory peer information.- Parameters:
peerHost
- the non-authoritative name of the hostpeerPort
- the non-authoritative port- Returns:
- a new
SSLEngine
-
newHandler
public final SslHandler newHandler()
Creates a newSslHandler
.- Returns:
- a new
SslHandler
-
newHandler
public final SslHandler newHandler(java.lang.String peerHost, int peerPort)
Creates a newSslHandler
with advisory peer information.- Parameters:
peerHost
- the non-authoritative name of the hostpeerPort
- the non-authoritative port- Returns:
- a new
SslHandler
-
newHandler
private SslHandler newHandler(javax.net.ssl.SSLEngine engine)
-
-