gpt4 book ai didi

java - 使用 Java 8 更新 162 及更早版本的小程序不适用于更新 171 和 172

转载 作者:行者123 更新时间:2023-11-30 06:44:55 24 4
gpt4 key购买 nike

在 Internet Explorer 中使用 Java 8 update 162 及更早版本时,小程序会按预期加载和工作。删除 Java 8 更新 162 并安装 Java 8 更新 171 或 172 时,小程序错误,ClassNotFoundException 引用了 code attribute of the applet tag 中列出的类.我在 171 中看不到任何理由或 172发行说明或 171172 bug修复。我使用的是 Windows 10 专业版 1709 版本 16299.371。该小程序使用受信任且仍然有效的证书签名。异常站点列表中没有任何异常,并且为此站点添加异常(在 Java 8u162 上没有一个它工作正常)仍然显示异常。使用 Java 8 update 162 及更早版本仍在另一台 PC 上工作。

在Java配置中清除Application缓存时,applet的JAR文件不会再次出现在缓存中。

您是否知道 Java 8u171 或 172 中影响小程序的任何更改?您对解决这个问题有什么建议吗?

更新 1:我知道小程序在 Java 9 中已被弃用,并且小程序在 Firefox 和 Chrome 中不起作用,但这是在 Internet Explorer 中。

更新 2:我还知道 3DES 密码套件在更新到 171 和 172 时已被禁用,但当前的摘要算法是 SHA-256,签名算法是 SHA256withRSA 2048 位 key ,与签名证书的签名算法和 key 匹配。我什至尝试使用 Java 8 Update 172 签署小程序而不更改 java.security 以删除 3DES_EDE_CBC 并使用该版本 ClassNotFoundException 仍然按预期存在。

更新 3:使用 Fiddler 4 时或 Charles作为 Internet Explorer 的代理并捕获服务器和浏览器之间的流量,小程序按预期加载和工作。 Java SE Runtime Environment 8 Update 172Java Plug-in 11.172.2 加载项都设置为在所有站点上允许。当我使用 Java 控制面板中的 Java 缓存查看器从资源缓存中清除小程序时,如果没有代理,小程序不会再次下载到缓存中,但如果我再次使用代理,它就会下载到缓存中。我的猜测是代理流量被视为本地流量,因此具有不同的权限。任何其他想法或它可能是什么权限?

更新 4:启用 Java 控制面板中的调试选项会导致显示完整堆栈跟踪,其中 CODE_ATTRIBUTE_VALUE 是我在 applet 标记的代码属性上设置的值。小程序的 JAR 文件似乎没有下载,即使我在存档属性中列出了它。

java.lang.ClassNotFoundException: CODE_ATTRIBUTE_VALUE
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Java 控制台现在还显示有关连接的更多详细信息,我看到以下是原因:

javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
at sun.net.www.protocol.https.HttpsClient.afterConnect(Unknown Source)
at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack.connect(Unknown Source)
at sun.plugin.PluginURLJarFileCallBack.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.retrieve(Unknown Source)
at sun.net.www.protocol.jar.URLJarFile.getJarFile(Unknown Source)
at sun.net.www.protocol.jar.JarFileFactory.get(Unknown Source)
at sun.net.www.protocol.jar.JarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.connect(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFileInternal(Unknown Source)
at sun.plugin.net.protocol.jar.CachedJarURLConnection.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.getJarFile(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.access$900(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.ensureOpen(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$JarLoader.<init>(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getLoader(Unknown Source)
at com.sun.deploy.security.DeployURLClassPath.getResource(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader$2.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.plugin2.applet.Plugin2ClassLoader.findClassHelper(Unknown Source)
at sun.plugin2.applet.Applet2ClassLoader.findClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.plugin2.applet.Plugin2ClassLoader.loadCode(Unknown Source)
at sun.plugin2.applet.Plugin2Manager.initAppletAdapter(Unknown Source)
at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(Unknown Source)
... 40 more

目前,该小程序托管在使用 IIS 的 Windows Server 2003 上。将其移动到 Windows Server 2008 也使用 IIS 会导致该问题消失。 Laitinen 先生是正确的,TLS 连接使用的是 3DES_EDE_CBC。

最佳答案

JAVA_HOME\lib\security\java.security

更新 171 将 3DES_EDE_CBC 添加到禁用算法列表 (jdk.tls.disabledAlgorithms)。删除它,您的小程序将再次运行。

关于java - 使用 Java 8 更新 162 及更早版本的小程序不适用于更新 171 和 172,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49918012/

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