SSLSocketFactory
and SSLServerSocketFactory
Classes
A javax.net.ssl.SSLSocketFactory
acts as a factory
for creating secure sockets. This class is an abstract subclass of javax.net.SocketFactory
.
Secure socket factories encapsulate the details of creating and initially configuring secure sockets. This encapsulation includes authentication keys, peer certificate validation, enabled cipher suites and so on.
The javax.net.ssl.SSLServerSocketFactory
class
is analogous to the SSLSocketFactory
class, but is
used specifically for creating server sockets.
Obtaining an SSLSocketFactory
There
are three primary ways of obtaining an SSLSocketFactory
: - Get the default factory by calling the
SSLSocketFactory.getDefault
static method. - Receive a factory as an API parameter. That is, code that needs
to create sockets but that doesn't care about the details of how the
sockets are configured can include a method with an
SSLSocketFactory
parameter that can be called by clients to specify whichSSLSocketFactory
to use when creating sockets. (For example, javax.net.ssl.HttpsURLConnection.) - Construct a new factory with specifically configured behavior.
The default factory is typically configured to support server authentication only so that sockets created by the default factory do not leak any more information about the client than a normal TCP socket would.
Many classes that create and use sockets do not need to know the details of socket creation behavior. Creating sockets through a socket factory that is passed in as a parameter is a good way of isolating the details of socket configuration, and increases the reusability of classes which create and use sockets.
You
can create new socket factory instances either by implementing your
own socket factory subclass or by using another class which acts as
a factory for socket factories. One example of such a class is SSLContext
,
which is provided with the JSSE implementation as a provider-based
configuration class.