【发布时间】:2014-02-21 19:36:21
【问题描述】:
我正在开发一个曾经是自签名的 Java Applet。现在正在使用 java 7u51,我正在努力为 Applet 签名 jar。
我使用用于 apache2 ssl 的证书/密钥对 jar 进行签名。为此,我必须使用密钥/证书和 Not Yet Commons SSL 库创建一个新的密钥库。
如果我在 applet jar 上运行 jarsigner -verify,我会得到:
This jar contains entries whose signer certificate's ExtendedKeyUsage extension
doesn't allow code signing.
小程序仍然收到无效证书错误。我可以查看证书,它与用于 SSL 的证书相同。报错信息说是因为自签名而被阻止,但这不是自签名证书!
当我将安全设置向下移动到“中”时,我可以运行小程序,但这对于这个项目来说是不可接受的。
我用来签署此证书的证书是链的一部分(大约 4 长)。有没有办法我需要使用整个链条对罐子进行签名?我需要使用代码签名证书吗?
【问题讨论】:
-
您可能对设置新的构建工具来解决您的问题感兴趣,也可能不感兴趣,所以我只是将其作为评论,但您应该查看 Gradle - 它非常强大但非常易于使用的构建工具,其中包括许多其他功能,可以作为构建的一部分调用的 jar 签名插件。您只需要一个私钥/公钥对,它们会为您提供设置说明。 gradle.org
-
我目前正在为这个(旧)项目使用 Ant,它只调用 jarsign。我一直在将 Maven 用于新项目,但会检查 Gradle。
-
我认为你会更喜欢 Gradle 而不是 Maven。 Gradle 与 Maven 对按约定构建的支持相同,但它是完全可定制的,因此它不会强制您将所有项目都转换为 Maven 约定。它具有同样出色的依赖管理(它甚至可以使用 Maven 的存储库)。我已经将两家不同的公司从 Ant 转换为 Gradle,我对它的易用性和强大的灵活性都感到非常满意
-
这听起来确实很棒。我将一个应用程序转换为 Maven,正确构建是一种痛苦,因为我必须移动很多东西来匹配 Maven 约定。感谢您的提示。
-
非常欢迎,希望对您有所帮助
标签: java applet certificate code-signing