admin 管理员组文章数量: 1184232
笔者的一台电脑安装了Java 8 update 361。
需要使用UBNT网桥上的AirView应用(JAVA),但运行时提示:
应用程序出于安全原因被阻止
无法验证证书。
将不执行该应用程序。
名称:AirView
发行者:Ubiquiti Inc.
位置:
笔者先前已经在控制面板——Java——安全——“例外站点”列表中加入了上述地址,在以前的旧版Java上是可以正常运行的。
但自从Java更新到某个版本后(具体无从考证了),就出现了这个“无法验证证书”的问题。
笔者又尝试在控制面板——Java——高级中,将几个证书撤销检查设置为“不检查”。但仍然没有效果,依旧报告相同的错误信息。
既然是证书有问题,那就在弹出提示时,查看一下JAVA应用的证书。
发现应用的证书是SHA256算法。但在证书路径中,有父(根)证书在使用SHA1算法。
那么会不会是SHA1算法被JAVA所禁止了?
答案就在C:\Program Files\Java\jre1.8.0_361\lib\security\java.security文件中。
发现这么几行:
jdk.certpath.disabledAlgorithms=MD2, MD5, SHA1 jdkCA & usage TLSServer, \
RSA keySize < 1024, DSA keySize < 1024, EC keySize < 224, \
include jdk.disabled.namedCurves, \
SHA1 usage SignedJAR & denyAfter 2019-01-01
又上网查询了一下,官方讲得很清楚:
JARs signed with SHA-1 algorithms are now restricted by default and treated as if they were unsigned.
Any JAR signed with SHA-1 algorithms and timestamped prior to January 01, 2019 will NOT be restricted.
Users can, at their own risk , remove these restrictions by modifying the
java.securityconfiguration file (or override it by using thejava.security.propertiessystem property) and removing "SHA1 usage SignedJAR & denyAfter 2019-01-01" from thejdk.certpath.disabledAlgorithmssecurity property and "SHA1 denyAfter 2019-01-01" from thejdk.jar.disabledAlgorithmssecurity property.
也就是说,JRE从某个版本开始(大约是2021年的第三季度),默认阻止签名证书使用SHA1算法的应用。但也有例外,就是签名时间戳早于2019年1月1日的,不受此限制。
因此,只需要在java.security文件中找到两行带有“denyAfter 2019-01-01”的代码,用#将其注释掉即可。
保存文件,之后就可以运行先前的java应用了。
版权声明:本文标题:解决JAVA“无法验证证书。将不执行该应用程序。”提示_无法验证证书将不执行该应用程序 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1773881642a3566791.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论