2

我们的 Java 应用程序具有输出 Java 小程序的功能,该小程序可以上传到我们的在线存储库。最近,我们遇到了 Oracle 安全更新的问题,这些更新需要对小程序进行代码签名,除非在客户端机器上降低 Java 安全设置。

为了解决这个问题,我们尝试在上传小程序服务器端时对其进行代码设计,但我遇到了一些麻烦。使用这样的命令(使用来自 Digicert 的证书),codeisiging 似乎可以正常工作:

jarsigner -tsa http://timestamp.digicert.com -keystore ./keystore.jks -storepass pass /path/to/jar alias

但是我们仍然得到一个错误,上面写着:

This application contains both signed and unsigned code'

我相信这是因为 Java 应用程序输出的小程序包含一个主 jar 文件,然后是一些 .class 文件。有没有办法在不删除 .class 文件的情况下避免这个错误?我们目前希望解决此问题,而不必对输出该小程序的 Java 应用程序进行任何更改。

4

1 回答 1

4

您只能签署 JAR 文件,不能签署松散的类文件。类文件本身没有放置签名信息的位置,如果这样做将是高度冗余的。在 JAR 文件中,签名哈希进入 MANIFEST,公钥出现在相关的 RSA 或 DSA 文件中。您将需要执行以下操作之一:

  • 推荐:将所有类打包成签名的 JAR 文件。您也可以对组件进行签名,签名意味着分发者而非创作者。
  • 让个别用户将您的小程序位置添加到他们的例外站点列表中。
  • 让公司的系统管理员将您的小程序位置(或证书哈希)添加到他们的部署规则集
于 2014-10-07T18:24:14.493 回答