我为什么要签署我的 JAR 文件?
我知道我需要对我的客户端 JAR 文件(包含 Applet)进行签名,以便可以完成文件系统访问等特殊操作,并且不会显示窗口底部令人讨厌的部分,但为什么会这样?我是否需要对包含 Servlet 等的服务器端 JAR 文件进行签名?
一些关于何时和何时不签署 JAR 的基本规则将不胜感激 - 谢谢!
最佳答案
简短的回答 - 不要,除非您的公司政策强制您这样做。
长答案
签署 jars 有效地告诉您的客户“我做了这个,我保证它不会弄乱你的系统。如果是这样,来找我报仇”。这就是为什么从远程服务器(applet/webstart)部署的客户端解决方案中签名的 jar 比未签名的解决方案享有更高的特权。
在服务器端解决方案上,您不必安抚 JVM 安全需求,此保证只是为了让您的客户安心。
签名 jar 的坏处是它们的加载速度比未签名的 jar 慢。慢多少?它受 CPU 限制,但我注意到加载时间增加了 100% 以上。此外,补丁更难(你必须重新签名 jar),类补丁是不可能的(单个包中的所有类必须具有相同的签名源),并且拆分 jar 成为一件苦差事。更不用说您的构建过程更长,而且正确的证书需要花钱(自签名几乎没用)。
因此,除非您的公司政策强制您这样做,否则不要在服务器端对 jar 进行签名,并将常用 jar 保存在已签名和未签名版本中(已签名转到客户端部署,未签名转到服务器-side 代码库)。
关于java - 为什么要签署我的 JAR 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/968565/