On Tue, 12 Nov 2024 11:49:25 GMT, Sean Coffey <[email protected]> wrote:
>> The `javax.net.debug` TLS debug option is buggy since TLSv1.3 implementation
>> was introduced many years ago.
>>
>> Where "ssl" was previously a value to obtain all TLS debug traces (except
>> network type dumps, verbose data), it now prints only a few lines for a
>> standard client TLS connection.
>>
>> The property parsing was also lax and allowed users to declare verbose
>> logging options by themselves where the documentation stated that such
>> verbose options were only meant to be used in conjunction with other TLS
>> options :
>>
>>
>> System.err.println("help print the help messages");
>> System.err.println("expand expand debugging information");
>> System.err.println();
>> System.err.println("all turn on all debugging");
>> System.err.println("ssl turn on ssl debugging");
>> System.err.println();
>> System.err.println("The following can be used with ssl:");
>> System.err.println("\trecord enable per-record tracing");
>> System.err.println("\thandshake print each handshake message");
>> System.err.println("\tkeygen print key generation data");
>> System.err.println("\tsession print session activity");
>> System.err.println("\tdefaultctx print default SSL
>> initialization");
>> System.err.println("\tsslctx print SSLContext tracing");
>> System.err.println("\tsessioncache print session cache tracing");
>> System.err.println("\tkeymanager print key manager tracing");
>> System.err.println("\ttrustmanager print trust manager tracing");
>> System.err.println("\tpluggability print pluggability tracing");
>> System.err.println();
>> System.err.println("\thandshake debugging can be widened with:");
>> System.err.println("\tdata hex dump of each handshake
>> message");
>> System.err.println("\tverbose verbose handshake message
>> printing");
>> System.err.println();
>> System.err.println("\trecord debugging can be widened with:");
>> System.err.println("\tplaintext hex dump of record plaintext");
>> System.err.println("\tpacket print raw SSL/TLS packets");
>>
>>
>> as part of this patch, I've also moved the log call to the more performant
>> friendly
>> `System.Logger#log(java.lang.System.Logger.Level,java.util.function.Supplier)`
>> method.
>>
>> the output has changed slightly with respect to that - less verbose
>>
>> e.g. old...
>
> Sean Coffey has updated the pull request incrementally with one additional
> commit since the last revision:
>
> keep expand option and add test coverage
More comments. I will have to look over the `SSLLogger` changes with fresher
eyes tomorrow. I had some great comments for you, but then I realized I
misread something. :)
When walking through the `SSLLogger.isOn()` calls, I noticed some
inconsistencies that aren't your fault, but should probably be addressed while
we're down here. The important ones are noted below.
That said, thoughout the existing code, I question whether the categorical
assignments are correct. It would be a good idea to have "someone" in dev have
a look and see if all these assignments are correctly defined. For example,
what does `slctx` have to do with `PredefinedDHParameterSpecs.java`. Should
session messages that are generated during handshaking be marked as `handshake`
or `session`? And are we consistently `verbose`ing? Should so many of these
be just `ssl`? I filed JDK-8344158 to track.
`DTLSInputRecord.java`: shouldn't there be a `ssl,record` for 837/861/897?
`SSLContextImpl.java`: 387/396, should these `handshake` instead of `sslctx`,
or should verbose be removed?
`SSLEngineImpl.java`: 336/618, should this be a `record` instead of `verbose`?
`SSLTransport.java`: same as `SSLEngineImpl.java` above? `ssl,verbose` isn't
right.
`SSLExtensions.java`: 146/et.al., should this all be `verbose`? This would
match what was done in some of the other code.
I noticed a lot of new <=80 char lines in many files. I started calling them
out, but stopped. I'd really like to keep the code readable when viewing
side-by-side diffs (e.g. github) without having to horizontal scroll, please!
Thanks.
For the CSR (JDK-8330987):
...per documentation in help output menu.
->
...per documentation in help output menu and the JSSE Reference Guide.
...for a standard client TLS connection.
->
...for a standard TLS connection.
You would be in a better position to advise about backport impacts, but it
would be nice to fix for everyone.
If you decide to update the wording for things like `expand` , be sure to
update here also.
src/java.base/share/classes/sun/security/ssl/DTLSInputRecord.java line 1075:
> 1073: if (!isDesired) {
> 1074: // Too old to use, discard this retransmitted record
> 1075: if (SSLLogger.isOn &&
> SSLLogger.isOn("ssl,handshake,verbose")) {
<=80 chars, please. Noticed this in several files/places.
src/java.base/share/classes/sun/security/ssl/SSLLogger.java line 90:
> 88: && property.length() == 10
> 89: &&
> !Character.isLetterOrDigit(property.charAt(3))
> 90: && property.endsWith("expand"));
I believe this is not needed, and the code can be simplified using the same
style as I remember from the earlier stack. I'll look at this tomorrow.
src/java.base/share/classes/sun/security/ssl/SSLLogger.java line 103:
> 101: System.err.println("\tdefaultctx print default SSL
> initialization");
> 102: System.err.println("\tsslctx print SSLContext tracing");
> 103: System.err.println("\tsessioncache print session cache tracing");
Did the `sessioncache` category also get pulled? It used to be used whenever
we added/retrieved/deleted(expired) a `SSLSession` to/from the cache. (i.e.
when a handshake completed, or we are handshaking and we retrieved a session
from the cache to potentially resume.)
I don't see any usages of it now. If so, this is a defect and needs a bug to
track.
-------------
Changes requested by wetmore (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/18764#pullrequestreview-2434697986
PR Review Comment: https://git.openjdk.org/jdk/pull/18764#discussion_r1841442130
PR Review Comment: https://git.openjdk.org/jdk/pull/18764#discussion_r1841353663
PR Review Comment: https://git.openjdk.org/jdk/pull/18764#discussion_r1841367363