我为什么要签署我的JAR文件?

Chr*_*ers 44 java jar signed-applet

我为什么要签署我的JAR文件?

我知道我需要签署我的客户端JAR文件(包含Applet),以便可以完成文件系统访问等特殊操作,以便窗口底部的烦人位不会显示,但为什么还要显示?我是否需要签署包含Servlet等的服务器端JAR文件?

关于何时何何不签署JAR的一些基本规则将不胜感激 - 谢谢!

Ran*_*ron 40

简短的回答 - 不要,除非你的公司政策强迫你.

很长的回答
签名罐子有效地告诉你的客户"我做了这个,我保证它不会弄乱你的系统.如果确实如此,请来找我报复".这就是为什么从远程服务器(applets/webstart)部署的客户端解决方案中的签名jar比非签名解决方案享有更高的权限.

在服务器端解决方案中,您无需安抚JVM安全需求,这种保证只会让您的客户高枕无忧.
签名罐子的坏处是它们的加载速度比无符号罐子慢.慢多少?它受CPU限制,但我注意到加载时间增加了100%以上.此外,补丁更难(你必须重新签署jar),类补丁是不可能的(单个包中的所有类必须具有相同的签名源)并且拆分罐变成一件苦差事.更不用说你的构建过程更长,并且适当的证书需要花钱(自签名是无用的).

因此,除非您的公司政策强制要求,否则不要在服务器端签名jar,并将常见的jar保留在签名和非签名版本中(签名转到客户端部署,非签名转到服务器端代码库).