Viewing TLS Configuration With JDK 13
Check out the latest keytool command-line from JDK 13 Early Access Build 16.
Join the DZone community and get the full member experience.Join For Free
JDK 13 Early Access Build 16 is now available, and one of the interesting additions it brings is the ability to have the keytool command-line tool display the current system's TLS configuration information. This is easier than trying to find supported TLS information in separate documentation and match that information to one's JDK vendor and version.
To see the TLS configuration details with JDK 13 Early Access Build 16, one simply needs to enter
keytool -showinfo -tls on the command line, but I'll describe a few more things about this command in this post.
The next screen snapshot shows that the JDK I'm using for my examples is the JDK 13 Early Access Build 16 and demonstrates that the
keytool usage now shows the tool including the
keytool without any commands or options results in the usage statement shown in the screen snapshot. The description for the
-showinfo command is: "Displays security-related information."
The next screen snapshot demonstrates the hint that is provided when one tries to use
keytool -showinfowithout an option ('Try "keytool -showinfo -tls".'). The image also shows the options associated with the
-showinfo that are displayed when
keytool -showinfo --help is entered.
--help option used with the
-showinfo command displays a
-v option, but I found on my Windows installation that this
-v option does not provide any additional value over simply using the
-tls option. The next screen snapshot shows the results of attempting to use the
-v option alone (without the
When trying to use
-v along with the
-showinfo, we get an error message and a recommendation to try
keytool -showinfo -tls instead. That does indeed work better as shown in the next screen snapshot that only shows partial results of what's returned.
I found it interesting to look at the code changes required to implement this new command and option for
keytool. The implementation uses the JDK's javax.net.ssl.SSLContext class's getDefault() method to acquire the "default SSL context." The returned
SSLContext instance's getSocketFactory() method is invoked and the createSocket() method is called on the returned instance of javax.net.ssl.SSLSocketFactory. The returned instance of javax.net.ssl.SSLSocket has two methods, getEnabledProtocols() and getEnabledCipherSuites(), that return the values shown above in the output from running
keytool -showinfo -tls.
The addition to JDK 13's
keytool command-line tool of the
-showinfo command with its
-tls option is available as of Early Access Build 16 and was delivered via JDK-8219861. It's also worth noting that JDK-8204636 may eventually lead to improvements for JDK's TLS 1.3 support.
Published at DZone with permission of Dustin Marx, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.