Java1.7.0u71可以';t加载1.7.0u67可以加载的小程序

Java1.7.0u71可以';t加载1.7.0u67可以加载的小程序,java,applet,signing,Java,Applet,Signing,我有一个签名的Java小程序,在v7u67中可以很好地加载,但在v7u71中它不再加载。此外,尽管JAR和标记非常相似,但小程序在本地机器上的测试服务器上的v7u71中仍然可以正常加载。在这两种情况下,网站都是通过HTTPS访问的(尽管测试服务器使用HTTPS的自签名证书) 完整的跟踪/调试日志可在中找到,并提供以下注释 security: Expected Main URL: https://popcornmanager.com/manager/grid.1.2.8e.jar basic: P

我有一个签名的Java小程序,在v7u67中可以很好地加载,但在v7u71中它不再加载。此外,尽管JAR和
标记非常相似,但小程序在本地机器上的测试服务器上的v7u71中仍然可以正常加载。在这两种情况下,网站都是通过HTTPS访问的(尽管测试服务器使用HTTPS的自签名证书)

完整的跟踪/调试日志可在中找到,并提供以下注释

security: Expected Main URL: https://popcornmanager.com/manager/grid.1.2.8e.jar
basic: Plugin2ClassLoader.addURL parent called for https://popcornmanager.com/manager/grid.1.2.8e.jar
security: Accessing keys and certificate in Mozilla user profile: null
security: JSS is not configured
network: Cache entry not found [url: https://popcornmanager.com/manager/grid.1.2.8e.jar, version: null]
network: Connecting https://popcornmanager.com/manager/grid.1.2.8e.jar with proxy=DIRECT
network: Cache entry not found [url: file:/C:/Program%20Files%20(x86)/Java/jre7/lib/ext/sunec.jar, version: null]
basic: Loading Java Applet ...
network: Cache entry not found [url: file:/C:/Program%20Files%20(x86)/Java/jre7/lib/ext/sunjce_provider.jar, version: null]
network: Connecting http://popcornmanager.com:443/ with proxy=DIRECT
security: Loading SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts
security: Loaded SSL Root CA certificates from C:\Program Files (x86)\Java\jre7\lib\security\cacerts
security: Obtain certificate collection in SSL Root CA certificate store {x2}
security: Loading certificates from Deployment session certificate store
security: Loaded certificates from Deployment session certificate store
security: Loaded blacklisted.certs file: D:\AppData\LocalLow\Sun\Java\Deployment\security\blacklisted.certs
security: SHA-256Certificate finger print: E0E41A12187A9196056D01CC1774D98FED57B0B6FD8A035C815C35073EB0A54B
security: SHA-256Certificate finger print: 09ED6E991FC3273D8FEA317D339C02041861973549CFA6E1558F411F11211AA3
security: SHA-256Certificate finger print: 18F8A7A151B4EC280898093DF5BD537CA099CC277405D0281DE0DADFD14420DA
security: SHA-256Certificate finger print: 58D017279CD4DC63ABDDB196A6C9906C30C4E08783EAE8C1609954D69355596B
security: Checking if SSL certificate is in Deployment permanent certificate store
security: Obtain certificate collection in SSL Root CA certificate store {x4}
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
    ...
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
    ...
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
    ...
[try to load https://popcornmanager.com/manager/grid.1.2.8e.jar again]
[try to load https://popcornmanager.com/manager/com/popcornmanager/datagrid/DataGrid.class as above but doesn't throw an exception, twice]

java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid
    ...
basic: load: class com.popcornmanager.datagrid.DataGrid not found.
java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid
    ...
Ignored exception: java.lang.ClassNotFoundException: com.popcornmanager.datagrid.DataGrid
basic: Dialog type is not candidate for embedding
security: Reset deny session certificate store
basic: Removed progress listener: sun.plugin.util.ProgressMonitorAdapter@764254
security: Reset deny session certificate store
根据Java的规则,某些证书似乎是无效的,但v7u67确实认为它是有效的。我不知道它是否是代码签名证书的HTTPS证书(两者都有效)。HTTPS通过了浏览器的验证测试

测试可在以下位置查看

我所研究的:

  • 在Windows上尝试了Chrome、Firefox和IE,都显示出相同的症状
  • 尝试了
    标记,代码路径中有或没有
    .class
  • 查看了更新中修复的所有bug,似乎没有一个能够解释这种行为变化
  • 将Java安全设置设置为最小(“中等”),将站点添加到异常列表,并手动将HTTPS证书添加到Java证书中(看起来代码证书是在安全对话框中单击“记住”时自动添加的)

查看JAVA高级设置面板设置,尝试检查TLS 1.0并取消检查TLS 1.1和TLS 1.2

我一直在解决一个问题,我的雇主的IT人员将JAVA JRE 8 u92推到我的开发机器上,我无法再访问我们开发并存储在测试服务器上的应用程序

几年来,这种情况每隔6到12个月就发生一次,我一直在卸载他们最新的JRE并重新安装版本7u55,解决了这个问题。当他们把我从7u55升级到7u71或72时,这一切就开始了

这一次,我想继续调查和尝试一些事情,看看我是否能找出为什么它总是与一个新的JRE中断。我已经尝试了我能找到的一切,由多人在线程上发布,时间可以追溯到3年前,直到我在Source Forge上看到一个匿名帖子,我才发现一切都不起作用

我的设置检查了TLS 1.0、1.1和1.2。这位人士理论上说,这应该没问题,服务器应该选择它想要的。但只要取消检查1.1和1.2,我就可以重新开始运行

然而,仍然有一个很大的谜团。我仔细检查了一下,我同事的笔记本电脑检查了TLS 1.0、1.1和1.2,她的笔记本电脑可以在新的JRE 8u92更新下运行我们的应用程序!她拥有相同的笔记本电脑型号、相同的操作系统、相同版本的IE11、相同版本的JAVA、JAVA面板中所有与我相同的设置(在修改TLS之前)、相同的IE设置、相同的受信任站点等。我们找不到任何理由让其中一个与另一个行为不同。 任何有类似问题的人都应该在JAVA高级设置面板中取消选中TLS1.1和1.2。
非常感谢上述匿名人士。这一次,我花了整整5个工作日来对付这个问题(每次他们更新我时,我都会与之抗争,试图找到一个解决方案,而不是回滚到一个非常旧的7u55 JRE!

输出似乎表明问题出在代码签名证书而不是SSL证书上。您是否验证了代码签名证书的根CA在Java的已知CA列表中该列表在更新67和更新71之间更改。最终根CA是“AddTrust External CA root”,我可以在7u45和7u71根列表中找到它(没有立即可用的7u67).List正在使用。条目完全相同。是否有任何方法可以更好地确定导致问题的证书以及原因?我是否应该联系代码签名证书的颁发者(该证书仍然有效)?哎呀。我刚刚注意到您最上面的异常是一个SSLHandshakeException,这表明HTTPS证书存在问题,而不是代码签名证书。然而,我刚刚编写了一个小程序,将您的.jar提供给URLClassLoader和
classLoader.loadClass(“com.popcornmanager.datagrid.datagrid”)
使用Java 1.7.0_72对我来说效果非常好。我已经放弃了这一点。1.7.0_71/1.7.0_72仍然存在问题,但当天发布的Java 8(1.8.0_25)仍然有效,所以我建议大家改用Java 8。谢谢你的帮助。