签名包含松散类文件的Java小应用程序
问题描述:
我们的Java应用程序具有输出Java applet的功能,该applet可以上传到我们的联机存储库。最近,我们一直遇到Oracle安全更新的问题,这些安全更新要求小程序进行代码签名,除非客户机器上的Java安全设置被降低。签名包含松散类文件的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应用程序输出包含主jar文件和几个.class文件的applet。无论如何避免这个错误,而不是摆脱.class文件?我们现在想要解决这个问题,而不必对输出该applet的Java应用程序进行任何更改。
答
您只能签署JAR文件,而不是松散的类文件。类文件本身没有地方可以放置签名信息,如果他们这样做了,它将是非常多余的。 在JAR文件中,签名散列进入MANIFEST并且公钥在相关的RSA或DSA文件中出现。 您将要执行下列操作之一:
- 推荐:包中所有类为签署的JAR文件。您也可以签署组件,签名意味着分发 - 而不是创作者。
- 有个人用户将您的小程序位置添加到他们的Exception Site List。
- 让公司的系统管理员将您的小程序位置(或证书散列)添加到他们的Deployment Rule Set。