当前位置: 首页 > 面试题库 >

为什么要对我的JAR文件签名?

陆海阳
2023-03-14
问题内容

为什么要对我的JAR文件签名?

我知道我需要对客户端JAR文件(包含Applet)进行签名,以便可以执行诸如文件系统访问之类的特殊操作,并且不会显示Windows底部的恼人内容,但是为什么呢?我是否需要对包含Servlet等的服务器端JAR文件进行签名?

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


问题答案:

简短的答案-除非您的公司政策强迫您这样做,否则不要这样做。

回答很长的问题
签名罐子实际上是在告诉您的客户“我做了这个,我保证它不会弄乱您的系统。如果确实如此,请找我报应”。这就是为什么从远程服务器(applets /
webstart)部署的客户端解决方案中的签名jar拥有比非签名解决方案更高的特权的原因。

在服务器端解决方案上,您不必满足JVM安全性要求,这种保证仅是让您的客户放心。
关于签名罐子的坏事是它们的加载速度比未签名的罐子慢。慢多少?它受CPU限制,但我注意到加载时间增加了100%以上。另外,补丁程序更难(您必须对jar进行重新签名),类补丁程序是不可能的(单个包中的所有类都必须具有相同的签名源),并且拆分jar变得很麻烦。更不用说您的构建过程更长,而且适当的证书也要花钱(自签名几乎是无用的)。

因此,除非您的公司政策强迫您这样做,否则请勿在服务器端对jar进行签名,并在签名和非签名版本中保留常见的jar(已签名将转到客户端部署,未签名将转到服务器端代码库)。



 类似资料:
  • 正如我从https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html了解到的,使用jarsigner签署jar文件的过程如下: > 清单文件用每个文件的哈希列表更新: 名称: com/qark/util/files/diff/用户界面/main/DiffMergeFrame.classSHA-256-Digest: GZgPXG

  • 我在intelliJ中创建了一个Java /JavaFX应用程序。我创建了它作为一个Java的应用程序,后来为JavaFX导入了必要的部件。 我尝试了Izpack、Javapackager、Jpackager、Jpackage和创建胖jar中的各种安装程序/打包程序创建者。我什么都不行。 该应用程序在IntelliJ中运行良好。 为什么它不会在别处运行? 这是我的POM、代码和错误消息。 如果你能

  • 每次运行导出的文件(该文件包含一个以图像为图标的

  • TLDR:我是Java世界的新手。在运行测试时,如何知道在JUnit目录中包含哪些.jar文件而不接收错误? 因此,我正在完成一个类项目,使用在https://search.maven.org/search?q=g:org.junit.jupiter%20和%20v:5.7.0上找到的相同的JUnit5 JAR来运行我的测试。在运行一些测试时,我收到了一个奇怪的错误,于是我决定使用IntelliJ

  • 我正在编写一个小的Java库,其中包含我通常在大多数android应用程序中包含的相关代码。我决定将库导出为一个jar文件,然后将该文件放到我未来项目的libs文件夹中。 null 现在,当我在我的一个android应用程序中使用这个jar时,除了Doc部分之外,所有的一切都像预期的那样运行。当我悬停在我的库的类和方法上时,我看不到我编写的文档注释。 Q1:我是不是又少了一步? Q2:jar文件应

  • 我正在尝试使用GitHub将Gradle Java应用程序部署到Heroku。回购协议的名称是“v-m-test”。这是我目前使用的Procfile:web:java-jar-target/v-m-test。罐子这是错误的文件吗?