Methods of the SSLSocket Class

Besides the methods we’ve already discussed and those it inherits from java.net.Socket, the SSLSocket class has a number of methods for configuring exactly how much and what kind of authentication and encryption is performed. For instance, you can choose weaker or stronger algorithms, require clients to prove their identity, force reauthentication of both sides, and more.

Choosing the Cipher Suites

Different implementations of the JSSE support different combinations of authentication and encryption algorithms. For instance, although so far I’ve been talking about Sun’s reference implementation as though it were one thing, it’s actually two: one for domestic use within the U.S. and Canada that allows for encryption with key lengths up to 128 bits, and one for global use that allows only 40-bit encryption. The getSupportedCipherSuites( ) method tells you which combination of algorithms are available on a given socket:

public abstract String[] getSupportedCipherSuites(  )

However, not all cipher suites that are understood are necessarily allowed on the connection. Some may be too weak and consequently disabled. The get EnabledCipherSuites( ) method tells you which suites this socket is willing to use:

public abstract String[] getEnabledCipherSuites(  )

The actual suite used is negotiated between the client and server at connection time. It’s possible that the client and the server won’t agree on any suite. It’s also possible that although a suite is enabled ...

Get Java Network Programming, Second Edition now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.