有效证书上的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.<init>(SSLExtensions.java:71)

at java.base/sun.security.ssl.ServerHello$ServerHelloMessage.<init>(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测试所识别。

我尝试禁用主机名验证,禁用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.0.3(Oracle JDK)
  • 11.0.2(OpenJDK)

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

TLS

1.3为服务器添加了一种方案,用于在EncryptedExtensions消息中向客户端指示其受支持组的列表,但是任何相关规范均不允许在ServerHello中发送supported_groups。

但是(可能是由于与ServerHello中允许的“

ec_point_formats”扩展名非常接近),无论如何,仍有几台服务器在ServerHello中发送此扩展名。

直到1.1.0版(包括1.1.0版),我们都没有检查是否存在不允许的扩展,因此为了避免回归,我们还必须在TLS 1.2

ServerHello中允许此扩展。

以上是 有效证书上的JDK 11 SSL错误(在以前的版本中有效) 的全部内容, 来源链接: utcz.com/qa/432272.html

回到顶部