我们可以在java中签署已签名的罐子吗?

时间:2010-01-29 15:15:54

标签: java

我有一个带有旧签名的.jar文件,并希望使用新签名重新签名。可能吗?

如果可能:怎么做?

3 个答案:

答案 0 :(得分:15)

如果签名不是您拥有的签名,则需要先解开jar。

像这样(假设unix,否则转换为dos):

jar xvf JarName.jar

rm -rf META-INF

jar cvf JarName.jar *

现在你需要运行jarsigner来签署jar

jarsigner -keystore /yourkeystoredirectory/mystore -storepass yourpass
      -keypass yourkeypasswd JarName.jar keyname

如果您没有密钥库,可以使用keytool创建密钥库。

答案 1 :(得分:1)

您可以提取类文件并使用签名重新包装它们

答案 2 :(得分:1)

我在https://www.chemaxon.com/forum/viewpost35555.html#35555

上找到了更好的解决方案
  1. 从jar中的META-INF文件夹中删除带有“.SF”或“.RSA”扩展名的文件。
  2. 从META-INF / MANIFEST.MF删除签名校验和:应从META-INF / MANIFEST.MF中删除每个“名称”和“SHA1-Digest”字段。
  3. 可以在oracle文档中找到更全面的文档: https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File(例如,META-INF文件夹中可能有“.DSA”文件,以“SIG-”开头的文件)