使用导入到cacerts密钥库的可信证书运行签名jar时发生Java Web启动错误

使用导入到cacerts密钥库的可信证书运行签名jar时发生Java Web启动错误,java,security,netbeans-7,java-web-start,jar-signing,Java,Security,Netbeans 7,Java Web Start,Jar Signing,我使用Netbeans IDE为我的JAR签名 我使用可信证书签署了我的jar,并在netbeansui对话框中输入了密钥库详细信息和密钥别名 产品版本:NetBeans IDE开发版本 nbms-and-javadoc-482-on-20130914 Java:1.7.0_25;爪哇温泉 客户端VM 23.25-b01运行时:JavaTM SE运行时环境 1.7.0_25-b16 通过单击jnlp文件运行,我得到了一个密钥库异常。 我想知道用户是否应该像这里描述的那样手动将证书导入JavaCa

我使用Netbeans IDE为我的JAR签名

我使用可信证书签署了我的jar,并在netbeansui对话框中输入了密钥库详细信息和密钥别名

产品版本:NetBeans IDE开发版本 nbms-and-javadoc-482-on-20130914 Java:1.7.0_25;爪哇温泉 客户端VM 23.25-b01运行时:JavaTM SE运行时环境 1.7.0_25-b16

通过单击jnlp文件运行,我得到了一个密钥库异常。 我想知道用户是否应该像这里描述的那样手动将证书导入JavaCacerts密钥库

我这样做了,并获得了添加到密钥库的证书。Oracle设置的密码为:changeit。 但是,当我双击JNLP文件时,会出现一个弹出的运行时错误。点击查看详情。我没有得到任何堆栈跟踪。据我所见,Java控制台没有显示任何错误,只有几行“CacheEntry”

为什么Web Start/JNLP不这样做,这样可怜的用户就不必再摆弄keytool了

1 jar文件包含链中的证书

2在JNLP文件中有证书的条目

3当用户单击jnlp文件时,Java提取证书并将其导入Java密钥库,然后运行程序

但更重要的是,为什么我的程序没有运行?在他们拒绝使用自签名JAR之前,它曾在Java7.21之前运行良好

更新:

在Java控制面板中,我转到了Advanced,并为调试和日志记录启用了跟踪。 在Java控制台中,我看到

java.lang.SecurityException: invalid SHA1 signature file digest for org/bouncycastle/cert/jcajce/JcaX509CRLHolder.class
    at sun.security.util.SignatureFileVerifier.verifySection(Unknown Source)    
    at sun.security.util.SignatureFileVerifier.processImpl(Unknown Source)
    at sun.security.util.SignatureFileVerifier.process(Unknown Source)
    at java.util.jar.JarVerifier.processEntry(Unknown Source)
    at java.util.jar.JarVerifier.update(Unknown Source) 
    at java.util.jar.JarFile.initializeVerifier(Unknown Source)
我也看到了

ExitException[ 3]com.sun.deploy.net.FailedDownloadException: Unable to load resource: file:/C:/Users/me/Desktop/dist/lib/bcpkix-jdk15on-149.jar
    at sun.plugin2.applet.JNLP2Manager.downloadResources(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source)
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source)
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

我确实在那个位置看到了bcpkix-jdk15on-149.jar。

我在NetBeans 7.4中编译,它似乎不允许向jarsigner发送额外的标志。 我找到了这个

使用新闻组项目中的提示, 我解开了三个BC罐中的每一个: C:\ProgramFilesx86\Java\jdk1.7.0\U 40\bin\jar xvf*.jar

然后,我删除了META-INF文件夹中的签名文件,并将其重新打包备份: C:\ProgramFilesx86\Java\jdk1.7.0\u 40\bin\jar cmf META-INF\MANIFEST.MF bcpkix-jdk15on-149-mot.jar org

它可以运行,但我很惊讶地在Java控制台中看到了这一点:

缺少:file:/C:/Users/me/Desktop/dist/lib/bcprov-ext-debug-jdk15on-149-mot.jar的代码基清单属性 安全性:使用CertPath API验证证书链 基本:Plugin2ClassLoader.getPermissions CeilingPolicy allPerms 安全性:请求的JAVAWS-AppPolicy权限为:file:/C:/Users/me/Desktop/dist/lib/bcprov-ext-debug-jdk15on-149-mot.jar 基本:JNLP2ClassLoader.getPermissions

基于

我添加了属性 权限:所有权限 到罐子里去


C:\Program Files x86\Java\jdk1.7.0\u 40\bin\jar umf manifest.txt bcprov-ext-debug-jdk15on-149-mot.jar

WebVPN Java插件在升级到Java 7 Update 45后无法加载,出现以下一般异常错误-'com.sun.deploy.net.JARSigningException:在资源中找到未签名的条目:

条件: 使用Java 7的Windows或Mac OSX计算机更新45

解决方法: 1在Java控制面板->常规->设置上禁用“在我的计算机上保留临时文件”选项。这适用于Mac OSX和Windows

2将Java降级到版本7更新40或更低


请对代码、输入/输出和结构化文档(如HTML或XML)使用代码格式。为此,选择示例并单击消息发布/编辑表单上方的{}按钮。不要忘记在Java问题中添加标记。它有48200个追随者,而Netbeans-7只有89个。@AndrewThompson:关于格式和标记的好建议;作为另一种选择,我一直在尝试克服堆叠痕迹的缺点。@trashgood笑着说,我其实也喜欢痕迹上的亮点。当我“快速扫描”它们时,它使它们更清晰。奥托,这一次我会顺其自然。感谢您提供的关于lang none的提示,我肯定会将它用于输入/和正常的非堆栈跟踪输出。为什么我的程序没有运行?尝试使用完全卸载它。然后运行它。@AndrewThompson在Java控制面板中,我删除了应用程序的所有实例。我仍然得到相同的错误弹出窗口。与之前一样,Java控制台中没有任何细节。JNLP不应该提供一些线索吗?如何对此进行故障排除?我能够在IDE中运行应用程序。