Могу ли я предотвратить предупреждение цифровой подписи при запуске приложения Java из командной строки? - PullRequest
3 голосов
/ 20 сентября 2010

Есть ли способ предотвратить появление предупреждающего сообщения «Невозможно проверить цифровую подпись приложения» при запуске приложения Java из командной строки?

Я ищу решение для командной строки , которое позволило бы запускать подобное приложение на сервере непрерывной интеграции, поэтому мне нужно решение, которое не требует ручного вмешательства.

Кроме того, я бы предпочел не отключать это предупреждение для любого приложения, поскольку это может представлять угрозу безопасности.

Не уверен, что помогает, но я знаю значения полей "name", "publisher" и "from" подписи.

screenshot of java digital signature warning

Только будьте уверены, я не спрашиваю о том, как подписать это приложение.

обновление 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 ]

2 голосов
/ 22 марта 2011

Доверенный файл .certs основан на пользователе (профиле).Используя keytool, также можно добавить доверенный корневой CA в файл "cacert", где хранится доверенный CA по умолчанию для java.Расположение файла cacert в XP (зависит от версии Java): C: \ Program Files \ Java \ jre6 \ lib \ security

Подробнее здесь:

пароль по умолчанию: changeit

1 голос
/ 20 сентября 2010

Было бы серьезным компромиссом в отношении безопасности и конфиденциальности пользователя, если неподписанные приложения могут запускаться без согласия пользователя.

Ответ - «НЕТ», если только вы не подписали свое приложение или пользователь не добавил вручнуюиздатель в «доверенные» списки.

Подробнее здесь

1 голос
/ 20 сентября 2010

Существует два подхода:

  • Попросите поставщика программного обеспечения переиздать его с правильной подписью.Ссылка «Дополнительная информация» должна сообщить вам , почему подпись не может быть проверена, но наиболее вероятные причины состоят в том, что подпись была создана с использованием самозаверяющего сертификата CA или сертификата, срок действия которого истек.(Если поставщик не поможет, вы, возможно, сможете отказаться от файла JAR с вашим собственным сертификатом.)

  • Добавьте соответствующий сертификат подписи в хранилище сертификатов JVM как «доверенный»сертификат».К сожалению, вам нужно будет сделать это для каждой JVM на каждой машине, на которой необходимо запустить приложение.

0 голосов
/ 15 февраля 2012

Не знаю, действительно ли это все-таки Windows XP keytool запрашивает пароль, если хранилище сертификатов фактически не существует, поэтому перед импортом сертификатов вы должны создать его вручную или скопировать из какого-либо места.Пользовательский магазин был без пароля.

0 голосов
/ 21 ноября 2011

Я думаю, вам следует создать файл, например, mypolicy.policy в java.home / lib / security с предоставлением всех разрешений для кода, подписанного вами, и добавить этот файл в java.security (например, под строкой где путь java.policy).) это окно предупреждения больше никогда не будет запрашиваться

...