If the client uses SSL 3.0 as the record version number, it normally means that the client support SSL 3.0. Since TLS 1.0, the spec is clear about the record version value. I don't think SSL 3.0 is acceptable in FIPS certified circumstances.

Personally, I don't think it is a priority to fix in JDK unless there is a requirement in practice.

Regards,
Xuelei

On 10/14/2019 1:41 AM, Christian Schaefer wrote:
Hi all,

We have TLS connection issues when the server (openjdk version "1.8.0_222") runs in FIPS 140.2 mode. The error thrown on the server is:

“javax.net.ssl.SSLException: Unsupported record version SSLv3” (which originates from: sun.security.ssl.InputRecord.checkRecordVersion(…))

This error only happens when the server JRE runs in FIPS 140.2 mode. This is because of the following code in class sun.security.ssl.ProtocolVersion:

“

     // minimum version we implement (SSL 3.0)

     final static ProtocolVersion MIN = FIPS ? TLS10 : SSL30;

“

Our server **only** allows TLS 1.2 as TLS protocol version, however, If I have the correct understanding of the TLS 1.2 specification enforcing a record version of (at least ) TLS10 seems to violate the specification (https://tools.ietf.org/html/rfc5246#appendix-E.1):
   […] Thus, TLS servers compliant with this specification MUST accept any value {03,XX} as

    the record layer version number for ClientHello. […]

(Appendix E.  Backward Compatibility - E.1.  Compatibility with TLS 1.0/1.1 and SSL 3.0)
Is this something which should be fixed in the JRE? Or is the behavior of the client wrong?

Thanks,

Christian.

Reply via email to