Ответ 1
Ваш JDK должен включать инструмент под названием jarsigner
. Этот инструмент позволяет вам бесплатно подписывать файлы jar.
1) Ключ, который вы используете для подписи, должен находиться в java keystore (по умолчанию .keystore
). Вы можете импортировать ключи в хранилище ключей из .der
.
2) Вы можете только подписывать .jar
файлы
3) Он просто перезапишет старый файл новым подписанным. Так же, как простая копия. Проверка подписи не будет выполнена, если ваш установщик не сделает этого.
Кроме того, не всякая подпись одинакова. Если вы, например, пытаетесь зарегистрировать поставщика криптозащиты, то подпись, подписанная Oracle, будет необходима для ее запуска в Oracle JVM. видеть: https://docs.oracle.com/javase/8/docs/technotes/guides/security/crypto/HowToImplAProvider.html#Step6
Пример:
Чтобы сгенерировать ключ:
keytool -genkey -keyalg RSA -alias key_alias -keystore mystore.keystore -keysize 2048
Чтобы подписать банку:
jarsigner -keystore mystore.keystore -tsa http://tsa.safecreative.org MyJARFile.jar key_alias_from_keystore
Чтобы проверить подпись:
jarsigner -verify jar-file
Я не уверен, что это решит нашу проблему. В целом, что вам нужно сделать, это знак os executable. В этом случае .exe
и .app
Возможное решение - подписать исполняемый файл вашей оболочки приложения (в случае Windows .exe
). Для этого см.: https://msdn.microsoft.com/en-us/library/aa387764.aspx
В вашей системе на основе Unix я бы попытался запустить инструмент Mono sign. см. mono doc в "signcode" (я не могу предоставить ссылку, недостаточно rep)
Это должно избавиться от сообщения "Неизвестный издатель", но если вы не можете заставить разработчика ОС подписывать сертификат, пользователю будет показано какое-то сообщение.