@Contract(threading=STATELESS) public class SSLConnectionSocketFactory extends Object implements LayeredConnectionSocketFactory
SSLSocketFactory can be used to validate the identity of the HTTPS server against a list of trusted certificates and to authenticate to the HTTPS server using a private key.
Constructor and Description |
---|
SSLConnectionSocketFactory(SSLContext sslContext) |
SSLConnectionSocketFactory(SSLContext sslContext,
javax.net.ssl.HostnameVerifier hostnameVerifier) |
SSLConnectionSocketFactory(SSLContext sslContext,
String[] supportedProtocols,
String[] supportedCipherSuites,
javax.net.ssl.HostnameVerifier hostnameVerifier) |
SSLConnectionSocketFactory(SSLSocketFactory socketFactory,
javax.net.ssl.HostnameVerifier hostnameVerifier) |
SSLConnectionSocketFactory(SSLSocketFactory socketFactory,
String[] supportedProtocols,
String[] supportedCipherSuites,
javax.net.ssl.HostnameVerifier hostnameVerifier) |
Modifier and Type | Method and Description |
---|---|
Socket |
connectSocket(TimeValue connectTimeout,
Socket socket,
HttpHost host,
InetSocketAddress remoteAddress,
InetSocketAddress localAddress,
HttpContext context)
Connects the socket to the target host with the given resolved remote address.
|
Socket |
createLayeredSocket(Socket socket,
String target,
int port,
HttpContext context)
Returns a socket connected to the given host that is layered over an
existing socket.
|
Socket |
createSocket(HttpContext context)
Creates new, unconnected socket.
|
static SSLConnectionSocketFactory |
getSocketFactory()
Obtains default SSL socket factory with an SSL context based on the standard JSSE
trust material (
cacerts file in the security properties directory). |
static SSLConnectionSocketFactory |
getSystemSocketFactory()
Obtains default SSL socket factory with an SSL context based on system properties
as described in
Java™ Secure Socket Extension (JSSE) Reference Guide.
|
protected void |
prepareSocket(SSLSocket socket)
Performs any custom initialization for a newly created SSLSocket
(before the SSL handshake happens).
|
protected void |
verifySession(String hostname,
javax.net.ssl.SSLSession sslSession) |
public SSLConnectionSocketFactory(SSLContext sslContext)
public SSLConnectionSocketFactory(SSLContext sslContext, javax.net.ssl.HostnameVerifier hostnameVerifier)
public SSLConnectionSocketFactory(SSLContext sslContext, String[] supportedProtocols, String[] supportedCipherSuites, javax.net.ssl.HostnameVerifier hostnameVerifier)
public SSLConnectionSocketFactory(SSLSocketFactory socketFactory, javax.net.ssl.HostnameVerifier hostnameVerifier)
public SSLConnectionSocketFactory(SSLSocketFactory socketFactory, String[] supportedProtocols, String[] supportedCipherSuites, javax.net.ssl.HostnameVerifier hostnameVerifier)
public Socket connectSocket(TimeValue connectTimeout, Socket socket, HttpHost host, InetSocketAddress remoteAddress, InetSocketAddress localAddress, HttpContext context) throws IOException
ConnectionSocketFactory
connectSocket
in interface ConnectionSocketFactory
connectTimeout
- connect timeout.socket
- the socket to connect, as obtained from ConnectionSocketFactory.createSocket(HttpContext)
.
null
indicates that a new socket should be created and connected.host
- target host as specified by the caller (end user).remoteAddress
- the resolved remote address to connect to.localAddress
- the local address to bind the socket to, or null
for any.context
- the actual HTTP context.sock
argument if this factory supports
a layered protocol.IOException
- if an I/O error occurspublic Socket createLayeredSocket(Socket socket, String target, int port, HttpContext context) throws IOException
LayeredConnectionSocketFactory
createLayeredSocket
in interface LayeredConnectionSocketFactory
socket
- the existing sockettarget
- the name of the target host.port
- the port to connect to on the target host.context
- the actual HTTP context.IOException
- if an I/O error occurs while creating the socketpublic Socket createSocket(HttpContext context) throws IOException
ConnectionSocketFactory
connectSocket
method.createSocket
in interface ConnectionSocketFactory
IOException
- if an I/O error occurs while creating the socketpublic static SSLConnectionSocketFactory getSocketFactory() throws SSLInitializationException
cacerts
file in the security properties directory).
System properties are not taken into consideration.SSLInitializationException
public static SSLConnectionSocketFactory getSystemSocketFactory() throws SSLInitializationException
SSLInitializationException
protected void prepareSocket(SSLSocket socket) throws IOException
javax.net.ssl.SSLSocket#setEnabledCipherSuites(String[])
.IOException
- may be thrown if overriddenprotected void verifySession(String hostname, javax.net.ssl.SSLSession sslSession) throws SSLException
SSLException