Могу ли я предотвратить предупреждение о цифровой подписи при запуске приложения Java из командной строки?
Есть ли способ предотвратить появление предупреждающего сообщения "Невозможно проверить цифровую подпись приложения" при запуске приложения Java из командной строки?
Я ищу решение для командной строки, которое позволило бы запускать подобное приложение на сервере непрерывной интеграции, поэтому мне нужно решение, которое не требовало бы ручного вмешательства.
Кроме того, я бы предпочел не отключать это предупреждение для любого приложения, поскольку это может представлять угрозу безопасности.
Не уверен, что помогает, но я знаю значения полей "name", "publisher" и "from" подписи.
Просто будьте уверены, я не спрашиваю о том, как подписать это приложение.
обновление 1
Я полагаю, что решение заключается в использовании keytool
импортировать сертификат из командной строки, но по какой-то причине он не может импортировать его должным образом, поскольку после этого он не появляется в апплете панели управления, и приложение все еще требует его.
keytool -importcert -file my.cer -alias alf2 -storepass changeme -noprompt
Это что-то связано с по умолчанию keystore
Как я могу убедиться, что я импортирую в нужное хранилище ключей?
обновление 2
После большого количества исследований в сети я добился определенного прогресса, по крайней мере, работал над Windows 7
с Java 6
: keytool -importcert -file my.cer -keystore "%USERPROFILE%\AppData\LocalLow\Sun\Java\Deployment\security\trusted.certs" -storepass "" -noprompt -v
Похоже, что Sun не удалось указать в документации реальное местоположение хранилища ключей по умолчанию и тот факт, что пароль по умолчанию пуст.
Но это не конец, потому что, когда этот запуск на учетной записи пользователя автоматизации не удался, он не удался, потому что у этого пользователя еще не было хранилища ключей и потому что инструмент командной строки keytool
не может создать хранилище ключей с пустым паролем, запрашивая не менее 6 символов. см. протектор форума Sun...
5 ответов
Файл trust.certs основан на пользователе (профиле). Используя keytool, также можно добавить доверенный корневой CA в файл "cacert", где хранится доверенный CA по умолчанию для java. Расположение файла cacert в XP (зависит от версии Java): C:\Program Files\Java\jre6\lib\security
Подробнее здесь:
пароль по умолчанию: changeit
Есть два подхода:
Получить поставщика программного обеспечения, чтобы переиздать его с надлежащей подписью. Ссылка "Дополнительная информация" должна указывать, почему подпись не может быть проверена, но наиболее вероятные причины состоят в том, что подпись была создана с использованием самоподписанного сертификата СА или сертификата, срок действия которого истек. (Если поставщик не поможет, вы можете отказаться от файла JAR с вашим собственным сертификатом.)
Добавьте соответствующий сертификат подписи в хранилище сертификатов JVM в качестве "доверенного сертификата". К сожалению, вам нужно будет сделать это для каждой JVM на каждой машине, на которой необходимо запустить приложение.
Было бы серьезным компромиссом в отношении безопасности / конфиденциальности пользователя, если бы неподписанным приложениям разрешалось запускаться без согласия пользователя.
Ответ "НЕТ", если только вы не подписали свое приложение или пользователь вручную не добавил издателя в "доверенные" списки.
Больше здесь
Не знаю, на самом ли деле Windows XP keytool запрашивает пароль, если хранилище сертификатов на самом деле не существует, поэтому перед импортом сертификатов вам следует создать хранилище вручную или скопировать откуда-либо. Пользовательский магазин был без пароля.
Я думаю, что вы должны создать файл, например mypolicy.policy в java.home/lib/security с предоставлением всех разрешений для кода, подписанного вами, и добавить этот файл в java.security (например, под строкой где путь java.policy) это предупреждение окно никогда не будет предлагать снова