有效证书上的JDK 11 SSL错误(在以前的版本中工作)

以下代码在JDK 11中引发错误:

HttpURLConnection con = (HttpURLConnection) new URL("https://sis.redsys.es/sis/realizarPago").openConnection(); con.setRequestMethod("GET"); con.getResponseCode(); 

错误是:

 javax.net.ssl.SSLHandshakeException: extension (10) should not be presented in server_hello at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:128) at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:312) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:268) at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:259) at java.base/sun.security.ssl.SSLExtensions.(SSLExtensions.java:71) at java.base/sun.security.ssl.ServerHello$ServerHelloMessage.(ServerHello.java:169) at java.base/sun.security.ssl.ServerHello$ServerHelloConsumer.consume(ServerHello.java:860) at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:390) at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:445) at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:422) at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:178) at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:164) at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:877) at java.base/sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:810) at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:383) at java.base/sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:567) 

它在任何以前的JDK中工作(我在7,8,9和10中测试过)。

证书似乎是有效的,因为它被浏览器识别或我在互联网上发现的大多数SSL测试。

我已经尝试禁用主机名validation,禁用cacerts,将DigiCert添加到cacerts文件中,没有任何运气。

这似乎是openJDK中的一个错误。 在构建版本26,27和28(发布候选版本)中进行了测试。

该问题目前已在JDK 12 https://bugs.openjdk.java.net/browse/JDK-8209965中得到解决,并包含在ea-9中。

目前,JDK 11的后端仍处于打开状态https://bugs.openjdk.java.net/browse/JDK-8210005,但预计将于11。10日(eta 2019年1月)登陆

一些背景知识可以在这里的评论中找到https://github.com/openssl/openssl/pull/4463/files

TLS 1.3为服务器添加了一个方案,以便在EncryptedExtensions消息中向客户端指示其支持的组列表,但没有相关规范允许在ServerHello中发送supported_groups。

尽管如此(可能由于接近“ec_point_formats”扩展,在ServerHello中允许),有几台服务器无论如何都会在ServerHello中发送此扩展。

在1.1.0版本中,我们没有检查是否存在非允许的扩展,因此为避免回归,我们必须在TLS 1.2 ServerHello中允许此扩展。