Ограничить Java для выполнения только подписанных jar-файлов?

Банки Java можно подписать с помощью инструмента JDK jarsigner. Это, в сочетании с policytool, по-видимому, позволяет вам добавлять привилегии к jar-файлу только при его запуске. Я бы хотел, чтобы по умолчанию "Отменить доступ для запуска". Можно ли сделать так, чтобы java делала белый список таким образом, чтобы запускались только файлы jar, подписанные определенным набором сертификатов?


person 0xdabbad00    schedule 13.01.2013    source источник
comment
Установите свой собственный SecurityManager.   -  person Hot Licks    schedule 13.01.2013
comment
В браузере или в приложении, где вы запускаете его с помощью команды java?   -  person bmargulies    schedule 14.01.2013
comment
@bmargulies Отличный вопрос. См. ответ @TomHawtin, чтобы узнать об этом подробнее.   -  person Andrew Thompson    schedule 14.01.2013


Ответы (3)


Насколько я понимаю, это на вашем компьютере вы можете контролировать. Использовать

 java -Djava.security.manager YourApplication

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

  grant signedBy "me" {
      permission java.io.FilePermission "/home/me/*", "read,write";
  };

Между различными возможными разрешениями я в настоящее время не вижу разрешения «запускать вообще», но кажется, что вы можете полностью отключить доступ как к сети, так и к файловой системе.

Если у вас есть возможность запустить собственное внешнее приложение, которое принимает решение (запускать или не запускать), вы можете проверить подпись в своем коде как уже обсуждалось.

Кроме того, вы можете написать оболочку для jarsigner с помощью переключателя -verify, как описано в здесь:

jarsigner -verify -keystore mystore hackerApplication.jar 

и захватить "smk" в выводе, используя некую оболочку, похожую на bash.

person Audrius Meskauskas    schedule 13.01.2013
comment
Это был мой вывод. Я ищу, возможно, внешнее приложение, которое могло бы обеспечить это. В идеале для винды. - person 0xdabbad00; 13.01.2013

Для подключаемого модуля Java и WebStart в Oracle JRE, начиная с версии 7u10, в панели управления Java есть соответствующие настраиваемые параметры безопасности. В разделе «Действия для ненадежных приложений в безопасной версии JRE» выберите «Не запускать». См. Установка уровня безопасности клиента Java .

person Tom Hawtin - tackline    schedule 13.01.2013
comment
Я хочу не только ограничить неподписанный Java-код, но и ограничить весь Java-код, например, который не подписан сертификатом моей компании. - person 0xdabbad00; 15.01.2013

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

https://blogs.oracle.com/java-platform-group/entry/introduction_deployment_rule_sets

http://docs.oracle.com/javase/7/docs/technotes/guides/jweb/security/deployment_rules.html

person Brett Okken    schedule 29.03.2017