一个Google揭示了jdk11.0.2中的错误,但我升级到jdk11.0.3,但对我来说仍然存在。复制步骤
测试用例挂起并在日志中显示
由于:javax.net.ssl.SSLHandshakeException:没有可用的身份验证方案 在java.base / sun.security.ssl.Alert.createSSLException(Alert.java:128) 在java.base / sun.security.ssl.Alert.createSSLException(Alert.java:117) 在java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:308) 在java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:264) 在java.base / sun.security.ssl.TransportContext.fatal(TransportContext.java:255) 在java.base / sun.security.ssl.CertificateMessage $ T13CertificateProducer.onProduceCertificate(CertificateMessage.java:945) 在java.base / sun.security.ssl.CertificateMessage $ T13CertificateProducer.produce(CertificateMessage.java:934) 在java.base / sun.security.ssl.SSLHandshake.produce(SSLHandshake.java:436) 在java.base / sun.security.ssl.ClientHello $ T13ClientHelloConsumer.goServerHello(ClientHello.java:1224) 在java.base / sun.security.ssl.ClientHello $ T13ClientHelloConsumer.consume(ClientHello.java:1160) 在java.base / sun.security.ssl.ClientHello $ ClientHelloConsumer.onClientHello(ClientHello.java:849) 在java.base / sun.security.ssl.ClientHello $ ClientHelloConsumer.consume(ClientHello.java:810) 在java.base / sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392) 在java.base / sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444) 在java.base / sun.security.ssl.SSLEngineImpl $ DelegatedTask $ DelegatedAction.run(SSLEngineImpl.java:1065) 在java.base / sun.security.ssl.SSLEngineImpl $ DelegatedTask $ DelegatedAction.run(SSLEngineImpl.java:1052) 在java.base / java.security.AccessController.doPrivileged(本机方法) 在java.base / sun.security.ssl.SSLEngineImpl $ DelegatedTask.run(SSLEngineImpl.java:999) 在org.webpieces.ssl.impl.AsyncSSLEngine2Impl.createRunnable(AsyncSSLEngine2Impl.java:94) ...省略了12个共同的框架
我应该提交另一个jdk错误,该错误仍然不起作用或任何人有任何想法吗?
已解决/相关的jdk错误:https://bugs.openjdk.java.net/browse/JDK-8211426
请注意,由于某种原因此修复程序 System.setProperty(“ jdk.tls.server.protocols”,“ TLSv1.2”);
hmmm,有人知道如何生成适用于TLSv1.2和TLSv1.3的自签名证书吗?
答案 0 :(得分:3)
假设是链接的问题,而不是TLS 1.3的另一个问题。
您的证书正在使用DSA
算法,该算法已在不久前被RSA
取代,而TLS1.3完全不支持。请确保创建RSA证书。
似乎,Java keytool
的不太旧的版本可能默认情况下创建了DSA证书……不幸的是,默认情况下。您可以使用此命令来验证证书类型。
openssl x509 -in certificate.crt -text
Certificate:
...
Signature Algorithm: dsa_with_SHA256
...
Subject Public Key Info:
Public Key Algorithm: dsaEncryption