Hi Norman,

In general, it is risk to support unknown protocol version in the key/trust manager implementation. The trust manager implemented for TLS 1.2 and prior versions might not work with TLS 1.3 probably. Did you make the evaluation? Would you mind contribute a patch?

Please feel free to file an enhancement request, for further evaluation when there is a chance.

Thanks,
Xuelei

On 9/17/2018 5:28 AM, Norman Maurer wrote:
Hi all,

In netty we support using OpenSSL for native SSL which recently added TLSv1.3 
support as part of OpenSSL 1.1.1. In an ideal world we would be able to use 
this even with Java8 which is almost true except the fact that 
sun.security.ssl.ProtocolVersion.valueOf(…) will throw an 
IllegalArgumentException when the string “TLSv1.3” is provided.  This is 
problematic as this happens during validation in the default TrustManager used 
by the OpenJDK.

The stack looks something like this:
java.lang.IllegalArgumentException: TLSv1.3
        at sun.security.ssl.ProtocolVersion.valueOf(ProtocolVersion.java:187)
        at 
sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:258)
        at 
sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)

I could work around this by just wrap the SSLSession and return TLSv1.2 during 
validation as the same validation should be done as in the TLSv1.2 
implementation but this is really just a hack.So I wonder if you would consider 
to either add support for parsing TLSv1.3 to the internal enum or just handle 
it more gracefully. Another thing that would work of course is to always 
provide a custom X509ExtendedTrustManager but I hoped to be able to re-use the 
default implementation as it already implements a lot of verification logic.

WDYT ?
Norman




Reply via email to