签署包含松散类文件的Java小程序

时间:2014-10-07 17:26:18

标签: java security applet code-signing mixed-code

我们的Java应用程序有一个输出Java applet的功能,可以将其上传到我们的在线存储库。最近我们遇到了Oracle安全更新的问题,这些更新需要对applet进行编码,除非在客户端的计算机上降低Java安全设置。

为了解决这个问题,我们试图在applets服务器端上传时对其进行编码,但是我遇到了一些问题。 codeisiging似乎可以正常使用这样的命令(使用Digicert的证书):

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

但我们仍然会收到错误消息:

This application contains both signed and unsigned code'

我相信这是因为Java应用程序输出的applet包含一个主jar文件,然后是一些.class文件。反正有没有摆脱.class文件避免这个错误?我们目前想要修复此问题,而无需对输出该applet的Java应用程序进行任何更改。

1 个答案:

答案 0 :(得分:4)

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

  • 推荐:将所有类打包成签名的JAR文件。您也可以对组件进行签名,签名意味着分发 - 不是由创作者编写的。
  • 让个人用户将您的小程序位置添加到Exception Site List
  • 让公司的系统管理员将您的applet位置(或证书哈希)添加到他们的Deployment Rule Set