gpt4 book ai didi

java - 精简的 JRE11 需要什么才能通过 SSL 连接?

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:59 25 4
gpt4 key购买 nike

我创建了一个 Java 应用程序,它通过 SSL 连接到(各种公共(public))远程服务器。在我的开发机器上一切正常。然而,用户报告无法在他的机器上建立 SSL 连接,他得到这个错误:

C:\Program Files (x86)\Test>JRE\bin\java.exe --version
java 11.0.2 2019-01-15 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.2+9-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.2+9-LTS, mixed mode)

C:\Program Files (x86)\Test>JRE\bin\java.exe -jar Test.jar
javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

我使用模块化/简化的 JRE11 发布我的应用程序。因此,由于我的机器上没有出现此错误,但该用户却出现了,我假设我没有在随附的 JRE 中包含必要的 Java 模块。

我如何才能确定这是否真的是问题所在以及缺少哪个模块?

更新:
我设法在我的机器上重现了错误。事实证明,使用模块化的 JRE,我在尝试通过 SSL 连接时遇到以下异常:

javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
java.base/sun.security.ssl.Alert.createSSLException(Unknown Source)
java.base/sun.security.ssl.TransportContext.fatal(Unknown Source)
java.base/sun.security.ssl.Alert$AlertConsumer.consume(Unknown Source)
java.base/sun.security.ssl.TransportContext.dispatch(Unknown Source)
java.base/sun.security.ssl.SSLTransport.decode(Unknown Source)
java.base/sun.security.ssl.SSLEngineImpl.decode(Unknown Source)
java.base/sun.security.ssl.SSLEngineImpl.readRecord(Unknown Source)
java.base/sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
java.base/sun.security.ssl.SSLEngineImpl.unwrap(Unknown Source)
java.base/javax.net.ssl.SSLEngine.unwrap(Unknown Source)
org.jboss.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1225)
org.jboss.netty.handler.ssl.SslHandler.decode(SslHandler.java:913)
org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425)
org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
org.jboss.netty.handler.traffic.AbstractTrafficShapingHandler.messageReceived(AbstractTrafficShapingHandler.java:408)
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268)
org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255)
org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109)
org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:328)
org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90)
org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
java.base/java.lang.Thread.run(Unknown Source)

但是此错误消息中没有缺少任何类。我需要将哪个模块添加到精简的 JRE11 中?

最佳答案

好的,找到丢失的模块,它是jdk.crypto.ec .

Provides the implementation of the SunEC security provider.

关于java - 精简的 JRE11 需要什么才能通过 SSL 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56212508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com