Apache Tomcat 7.0.5

org.apache.tomcat.util.net.jsse
Class JSSESocketFactory

java.lang.Object
  extended by org.apache.tomcat.util.net.ServerSocketFactory
      extended by org.apache.tomcat.util.net.jsse.JSSESocketFactory
All Implemented Interfaces:
Cloneable

public class JSSESocketFactory
extends ServerSocketFactory

SSL server socket factory. It requires a valid RSA key and JSSE.
keytool -genkey -alias tomcat -keyalg RSA
Use "changeit" as password (this is the default we use).

Author:
Harish Prabandham, Costin Manolache, Stefan Freyr Stefansson, EKR -- renamed to JSSESocketFactory, Jan Luehe, Bill Barker

Field Summary
protected  boolean allowUnsafeLegacyRenegotiation
           
static String DEFAULT_KEY_PASS
           
protected  String[] enabledCiphers
           
protected  boolean initialized
           
protected  boolean requireClientAuth
          Flag to state that we require client authentication.
protected  SSLServerSocketFactory sslProxy
           
protected  boolean wantClientAuth
          Flag to state that we would like client authentication.
 
Fields inherited from class org.apache.tomcat.util.net.ServerSocketFactory
attributes
 
Constructor Summary
JSSESocketFactory()
           
 
Method Summary
 Socket acceptSocket(ServerSocket socket)
          Wrapper function for accept().
protected  void configureClientAuth(SSLServerSocket socket)
          Configure Client authentication for this version of JSSE.
 ServerSocket createSocket(int port)
          Returns a server socket which uses all network interfaces on the host, and is bound to a the specified port.
 ServerSocket createSocket(int port, int backlog)
          Returns a server socket which uses all network interfaces on the host, is bound to a the specified port, and uses the specified connection backlog.
 ServerSocket createSocket(int port, int backlog, InetAddress ifAddress)
          Returns a server socket which uses only the specified network interface on the local host, is bound to a the specified port, and uses the specified connection backlog.
protected  Collection<? extends CRL> getCRLs(String crlf)
          Load the collection of CRLs.
protected  String[] getEnabledCiphers(String requestedCiphers, String[] supportedCiphers)
           
protected  String[] getEnabledProtocols(SSLServerSocket socket, String requestedProtocols)
          Determines the SSL protocol variants to be enabled.
protected  KeyManager[] getKeyManagers(String keystoreType, String keystoreProvider, String algorithm, String keyAlias)
          Gets the initialized key managers.
protected  KeyStore getKeystore(String type, String provider, String pass)
           
protected  String getKeystorePassword()
           
protected  CertPathParameters getParameters(String algorithm, String crlf, KeyStore trustStore)
          Return the initialization parameters for the TrustManager.
protected  TrustManager[] getTrustManagers(String keystoreType, String keystoreProvider, String algorithm)
          Gets the initialized trust managers.
protected  KeyStore getTrustStore(String keystoreType, String keystoreProvider)
           
 void handshake(Socket sock)
          Extra function to initiate the handshake.
protected  void setEnabledProtocols(SSLServerSocket socket, String[] protocols)
          Set the SSL protocol variants to be enabled.
 
Methods inherited from class org.apache.tomcat.util.net.ServerSocketFactory
getDefault, initSocket, setAttribute
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_KEY_PASS

public static final String DEFAULT_KEY_PASS
See Also:
Constant Field Values

initialized

protected boolean initialized

sslProxy

protected SSLServerSocketFactory sslProxy

enabledCiphers

protected String[] enabledCiphers

allowUnsafeLegacyRenegotiation

protected boolean allowUnsafeLegacyRenegotiation

requireClientAuth

protected boolean requireClientAuth
Flag to state that we require client authentication.


wantClientAuth

protected boolean wantClientAuth
Flag to state that we would like client authentication.

Constructor Detail

JSSESocketFactory

public JSSESocketFactory()
Method Detail

createSocket

public ServerSocket createSocket(int port)
                          throws IOException
Description copied from class: ServerSocketFactory
Returns a server socket which uses all network interfaces on the host, and is bound to a the specified port. The socket is configured with the socket options (such as accept timeout) given to this factory.

Specified by:
createSocket in class ServerSocketFactory
Parameters:
port - the port to listen to
Throws:
IOException - for networking errors

createSocket

public ServerSocket createSocket(int port,
                                 int backlog)
                          throws IOException
Description copied from class: ServerSocketFactory
Returns a server socket which uses all network interfaces on the host, is bound to a the specified port, and uses the specified connection backlog. The socket is configured with the socket options (such as accept timeout) given to this factory.

Specified by:
createSocket in class ServerSocketFactory
Parameters:
port - the port to listen to
backlog - how many connections are queued
Throws:
IOException - for networking errors

createSocket

public ServerSocket createSocket(int port,
                                 int backlog,
                                 InetAddress ifAddress)
                          throws IOException
Description copied from class: ServerSocketFactory
Returns a server socket which uses only the specified network interface on the local host, is bound to a the specified port, and uses the specified connection backlog. The socket is configured with the socket options (such as accept timeout) given to this factory.

Specified by:
createSocket in class ServerSocketFactory
Parameters:
port - the port to listen to
backlog - how many connections are queued
ifAddress - the network interface address to use
Throws:
IOException - for networking errors

acceptSocket

public Socket acceptSocket(ServerSocket socket)
                    throws IOException
Description copied from class: ServerSocketFactory
Wrapper function for accept(). This allows us to trap and translate exceptions if necessary

Specified by:
acceptSocket in class ServerSocketFactory
Throws:
IOException - ;

handshake

public void handshake(Socket sock)
               throws IOException
Description copied from class: ServerSocketFactory
Extra function to initiate the handshake. Sometimes necessary for SSL

Specified by:
handshake in class ServerSocketFactory
Throws:
IOException - ;

getEnabledCiphers

protected String[] getEnabledCiphers(String requestedCiphers,
                                     String[] supportedCiphers)

getKeystorePassword

protected String getKeystorePassword()

getKeystore

protected KeyStore getKeystore(String type,
                               String provider,
                               String pass)
                        throws IOException
Throws:
IOException

getTrustStore

protected KeyStore getTrustStore(String keystoreType,
                                 String keystoreProvider)
                          throws IOException
Throws:
IOException

getKeyManagers

protected KeyManager[] getKeyManagers(String keystoreType,
                                      String keystoreProvider,
                                      String algorithm,
                                      String keyAlias)
                               throws Exception
Gets the initialized key managers.

Throws:
Exception

getTrustManagers

protected TrustManager[] getTrustManagers(String keystoreType,
                                          String keystoreProvider,
                                          String algorithm)
                                   throws Exception
Gets the initialized trust managers.

Throws:
Exception

getParameters

protected CertPathParameters getParameters(String algorithm,
                                           String crlf,
                                           KeyStore trustStore)
                                    throws Exception
Return the initialization parameters for the TrustManager. Currently, only the default PKIX is supported.

Parameters:
algorithm - The algorithm to get parameters for.
crlf - The path to the CRL file.
trustStore - The configured TrustStore.
Returns:
The parameters including the CRLs and TrustStore.
Throws:
Exception

getCRLs

protected Collection<? extends CRL> getCRLs(String crlf)
                                     throws IOException,
                                            CRLException,
                                            CertificateException
Load the collection of CRLs.

Throws:
IOException
CRLException
CertificateException

setEnabledProtocols

protected void setEnabledProtocols(SSLServerSocket socket,
                                   String[] protocols)
Set the SSL protocol variants to be enabled.

Parameters:
socket - the SSLServerSocket.
protocols - the protocols to use.

getEnabledProtocols

protected String[] getEnabledProtocols(SSLServerSocket socket,
                                       String requestedProtocols)
Determines the SSL protocol variants to be enabled.

Parameters:
socket - The socket to get supported list from.
requestedProtocols - Comma-separated list of requested SSL protocol variants
Returns:
Array of SSL protocol variants to be enabled, or null if none of the requested protocol variants are supported

configureClientAuth

protected void configureClientAuth(SSLServerSocket socket)
Configure Client authentication for this version of JSSE. The JSSE included in Java 1.4 supports the 'want' value. Prior versions of JSSE will treat 'want' as 'false'.

Parameters:
socket - the SSLServerSocket

Apache Tomcat 7.0.5

Copyright © 2000-2010 Apache Software Foundation. All Rights Reserved.