https://issues.apache.org/bugzilla/show_bug.cgi?id=54690

--- Comment #8 from Tim Whittington <t...@apache.org> ---
For posterity, the actual situation with JSSE is a bit more complicated than
client vs server.
(The fix and workaround for this issue are correct - this is just to clarify
the landscape in case it's ever come across again).

Testing on Java 7 on OS X/Linux/HP-UX:

There are 3 distinct sets of cipher suites obtainable from the 23! unique
locations in the JSSE API that produce a list of cipher suites.
There are 4 distinct sets of protocol variants obtainable from the 15! unique
locations in the JSSE API that produce a list of protocols.

I've attached a full report, but in summary:

The cipher suites obtained are grouped into 3 distinct sets of ciphers:
1. Default ciphers for client objects (SSLContext and
SSLSocketFactory/SSLSocket) for default and <= TLSv1.1 engines
2. Supported ciphers for all engines (i.e. they're all the same)
3. Enabled ciphers from server objects (SSLEngine, SSLServerSocketFactory and
SSLServerSocket) for all engines, and client object defaults for TLSv1.2 engine

The protocol variants are grouped into the following 4 sets:
1. Default for SSLContext and supported/default for SSLSocket in TLSv1.2 engine
2. Default for SSLContext and supported/default for SSLSocket in TLSv1.1 engine
3. Default for SSLContext and supported/default for all engines default and <=
TLSv1 engines
4. Supported for SSLContext, supported/defaults for SSLEngine/SSLServerSocket
in all engines


For Java 6 on OS X/Linux/HP-UX, the results are a bit simpler: 
- Cipher suites are split into 2 groups: supported cipher suites, and
default/enabled cipher suites (on all client + server objects).
- For protocol variants, supported == enabled == default in all locations.


For Java 7 on AIX:
- Cipher suites are in 2 groups (supported and default/enabled), with client +
server defaults the same.
- Protocol variants are in 6 groups:
1. Defaults for client objects in Default engine (SSLv3, TLSv1)
2. Supported/default for client objects for TLSv1.2 engine (TLSv1.2 only)
3. Supported/default for client objects for TLSv1.1 engine (TLSv1.1 only)
4. Supported/default for client objects for TLS and TLSv1 engines (TLSv1 only)
5. Supported/default for client objects for SSL and SSLv3 engines (SSLV3 only)
6. Supported protocols for SSLContext, SSLEngine and SSLServerSocket on all
engines, and defaults for SSLServerSocket on default engine (SSLv3+)

(As an aside, all of this points out that in Java 7 switching the engine using
the HTTPS connector protocol attribute will not only change defaults, but
change the supported protocol variants that can be enabled).

Cutting across all this:
- Supported for SSLContext appears to be stable across the versions/platforms
- the only way to reliably detect the 'server' defaults in a JVM appear to be
via an SSLEngine or a SSLServerSocket constructed from an SSLContext.
Thankfully the defaults appear to be independant of the engine (the protocol
argument to SSLContext.getInstance()).

-- 
You are receiving this mail because:
You are the assignee for the bug.

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to