Можем ли мы отменить уже подписанные банки в java?
Я имею в виду, что у меня есть банка со старой подписью. и я хочу, чтобы он ушел в отставку с новой подписью. Так это возможно?
Если да, мало информации о том, как?
Ответы
Ответ 1
Если подпись не принадлежит вам, вам нужно сначала развязать банку.
Так же (предположим 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.
Ответ 2
Вы можете извлечь файлы классов и повторно закрепить их своей подписью
Ответ 3
Я нашел лучшее решение на https://www.chemaxon.com/forum/viewpost35555.html#35555
- Удалите файлы с расширением ".SF" или ".RSA" из папки META-INF внутри банки.
- Удалить контрольные суммы подписи из META-INF/MANIFEST.MF: поля "Name" и "SHA1-Digest" должны быть удалены из META-INF/MANIFEST.MF.
Более подробную документацию можно найти в документации о оракуле:
https://docs.oracle.com/javase/8/docs/technotes/guides/jar/jar.html#Signed_JAR_File (например, файлы ".DSA" могут быть в папке META-INF и файлы, начинающиеся с "SIG-" )