2010-09-20 4 views
3

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

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

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

Не уверен, что помогает, но я знаю значения полей «имя», «издатель» и «из» подписи.

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

Я выглядит, что ВС не удалось указать в документации реальное местоположение хранилище ключей по умолчанию и тот факт, что пароль по умолчанию пуст.

Но это еще не конец, потому что, когда этот прогон в учетной записи пользователя автоматизации не удался, он потерпел неудачу, потому что у этого пользователя еще не было хранилища ключей, и поскольку инструмент командной строки keytool не может создать хранилище ключей с пустой пароль, запрашивающий не менее 6 символов. see Sun's forum tread...

+0

После некоторого поиска я обнаружил, что сертификаты, отображаемые на панели управления Java, хранятся в 'C: \ Users \ username \ AppData \ LocalLow \ Sun \ Java \ Deployment \ security \ trusted.certs'. Теперь вопрос в том, как я могу использовать 'keytool' для записи в это' keystore' (расположение может отличаться на других машинах, это было в Windows 7). – sorin

+0

С какой командой вы запускаете это «приложение»? Термин java-приложение обычно используется для приложений Java, где у вас есть класс с основным методом, и им не требуется, чтобы javas-песочница была активной (поскольку запуск материала из командной строки означает, что вы доверяете коду). –

+0

Приложение выполнено под управлением 'javaw', потому что оно может работать в двух режимах консоли или режиме gui. – sorin

ответ

1

Есть два подхода:

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

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

+0

Итак, в этом случае, как я могу ** автоматизировать импорт сертификата? – sorin

+1

Вы можете написать сценарий оболочки/пакетный файл, который использует 'keytool' для импорта сертификатов. См. Http://download.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html –

1

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

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

Подробнее here

+0

@Sorin - просто интересно, что вам не понравилось в этом ответе. –

+0

@ Sorin- вы ищете ответы или «репутационные» ответы? –

+0

Как вы, вероятно, заметили это о том, чтобы что-то сделать без вмешательства пользователя/автоматизации. Это важно для машин, которые должны запускаться без присмотра. – sorin

2

trusted.certs файл пользователя (профиль) на основе. Используя keytool, можно также добавить доверенный корневой ЦС в файл «cacert», где по умолчанию поддерживается CA для хранения Java. cacert расположение файла на XP (зависит от Java-версии): C: \ Program Files \ Java \ jre6 \ Lib \ безопасности

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

default password is: changeit

-1

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

+1

-1: OP явно использует Windows; ответы на * nix-системы не помогут. –

0

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